Post

Nginx Ingress Controller 구축하기

Nginx Ingress Controller는 Kubernetes Cluster에서 Ingress 리소스를 처리하여 외부 트래픽을 서비스로 라우팅하는 역할을 합니다. 해당 포스트에서는 Helm을 사용해 Nginx Ingress Controller를 구축하는 과정에 대해 다뤄보도록 하겠습니다.


Nginx Ingress Controller 설치

Helm Repository 추가

1
2
❯ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
❯ helm repo update

Helm을 사용해 Nginx Ingress Controller 설치

1
2
helm install nginx-ingress ingress-nginx/ingress-nginx \
    --namespace ingress-nginx --create-namespace

설치 확인

1
2
3
4
5
6
7
8
❯ kubectl get svc -n ingress-nginx
NAME                                               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
nginx-ingress-ingress-nginx-controller             LoadBalancer   10.111.215.81   10.0.0.240    80:32251/TCP,443:31300/TCP   3m
nginx-ingress-ingress-nginx-controller-admission   ClusterIP      10.97.125.60    <none>        443/TCP                      3m

❯ k get ingressclass
NAME    CONTROLLER             PARAMETERS   AGE
nginx   k8s.io/ingress-nginx   <none>       52m

테스트

테스트용 어플리케이션 배포

1
2
3
4
5
6
❯ kubectl create deployment nginx-test --image=nginx --port=80

deployment.apps/nginx-test created
❯ kubectl expose deployment nginx-test --port=80 --target-port=80 --name=nginx-test-service

service/nginx-test-service exposed

테스트용 Ingress 리소스 설정

기존에 사용하고 있는 kkamji.net 도메인을 사용하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-test-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: test.kkamji.net
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-test-service
            port:
              number: 80

❯ k apply -f nginx-test-ingress.yaml
ingress.networking.k8s.io/nginx-test-ingress created

ingress 확인

1
2
3
❯ k get ingress
NAME                 CLASS   HOSTS             ADDRESS   PORTS   AGE
nginx-test-ingress   nginx   test.kkamji.net             80      4m53s

test.kkamji.net으로 접속 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
❯ curl test.kkamji.net
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Reference


궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKam._.Ji

This post is licensed under CC BY 4.0 by the author.