본문 바로가기
네트워크 (LAN,WAN)

Nginx Ingress Controller Backend HTTP and HTTPS 서비스 혼합(both)

by 날으는물고기 2023. 12. 4.

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 원본 컨트롤러에서만 작동합니다.

참고: https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/

 

이 예에서 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 등에 영향을 미치지 않고 변경된 설정이 반영됩니다.

728x90

댓글