Nginx Ingress Controller Backend HTTP and HTTPS 서비스 혼합(both)
NGINX Ingress 컨트롤러를 사용 중이라면, nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
은 작동하지 않습니다. 그러나 nginx.org/ssl-services
는 백엔드에서 TLS를 필요로 하는 서비스를 선택할 수 있게 해줍니다. 이름이 혼동스러울 수 있어서 실제 목적을 깨닫기까지 시간이 걸릴 수 있습니다.
이것은 NGINX 하부에서 사용되는 표준 Kubernetes Ingress 컨트롤러에서는 작동하지 않으며, NGINX 원본 컨트롤러에서만 작동합니다.
이 예에서 NGINX는 ssl-svc
를 TLS를 사용하여 연결합니다. 이는 자체 서명된 인증서를 무시합니다.
예시 (https://github.com/nginxinc/kubernetes-ingress/tree/v1.12.0/examples/ssl-services) : SSL 서비스 지원
서비스의 엔드포인트에 연결할 때 HTTPS 또는 SSL을 통한 gRPC를 활성화하려면 Ingress 리소스 정의에 nginx.org/ssl-services
주석을 추가해야 합니다. 이 주석은 SSL이 필요한 서비스를 지정합니다.
nginx.org/ssl-services: "service1[,service2,...]"
다음 예에서는 세 가지 응용 프로그램을 로드 밸런싱하며 그 중 하나는 HTTPS를 필요로 합니다.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
nginx.org/ssl-services: "ssl-svc"
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80
- path: /ssl
backend:
serviceName: ssl-svc
servicePort: 443
ssl-svc
는 HTTPS 응용 프로그램을 위한 서비스입니다. 이 서비스는 /ssl
경로에서 사용 가능합니다.
nginx.org/ssl-services
주석을 사용하는 방법에 주목하세요.
ingress-nginx-controller
의 Deployment를 재시작하는 kubectl 명령어는 다음과 같습니다.
kubectl rollout restart deployment ingress-nginx-controller
이 명령어는 해당 Deployment의 Pod들을 새로운 ReplicaSet으로 교체하여 재시작합니다. 주의해야 할 점은 이 명령어가 서비스 중단 없이 배포를 갱신하는 것이기 때문에, 여러분이 설정한 로드 밸런서나 Ingress 등에 영향을 미치지 않고 변경된 설정이 반영됩니다.