네트워크 (LAN,WAN)

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

날으는물고기 2023. 12. 4. 00:30

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