Nginx Ingress Controller는 Kubernetes Cluster에서 Ingress 리소스를 처리하여 외부 트래픽을 서비스로 라우팅하는 역할을 합니다. 해당 포스트에서는 Helm을 사용해 Nginx Ingress Controller를 구축하는 과정에 대해 다뤄보도록 하겠습니다.
TL;DR
- 핵심 개념과 실습 흐름을 운영 관점에서 다시 확인할 수 있도록 정리합니다.
- 주요 키워드는 nginx-ingress-controller, #, TAG이며, 글의 예제와 명령을 따라가며 전체 흐름을 확인할 수 있습니다.
- 운영 관점에서는 버전, 권한, 네트워크, 보안, 장애 시 확인 지점을 함께 점검하는 것이 중요합니다.
1. Nginx Ingress Controller 설치
1.1. Helm Repository 추가
1
2
| ❯ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
❯ helm repo update
|
1.2. Helm을 사용해 Nginx Ingress Controller 설치
1
2
| helm install nginx-ingress ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace
|
2. 설치 확인
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
|
3. 테스트
3.1. 테스트용 어플리케이션 배포
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
|
3.2. 테스트용 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
|
3.3. ingress 확인
1
2
3
| ❯ k get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
nginx-test-ingress nginx test.kkamji.net 80 4m53s
|
3.4. 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>
|
4. Reference
궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKamJi