DevOps/Kubernetes

[EKS] ingress-nginx helm chart 에 AWS ACM 등록

Jen'_' 2022. 6. 1. 23:35
반응형

개요

https://kubernetes.github.io/ingress-nginx/deploy/#aws

공식문서에서 deploy.yaml 을 다운받아서 acm 설정한 다음 kubectl apply -f deploy.yaml을 했을 때는 https 접속이 정상적으로 됐음

https://github.com/kubernetes/ingress-nginx

그런데 helm chart 로 설치를 했더니 "The plain HTTP request was sent to HTTPS port" 에러가 뜨면서 https 접속이 안됨

에러 화면

 

 

 

 

 

해결 방법

helm chart info

repo: ingress-nginx

repo url: https://kubernetes.github.io/ingress-nginx

chart: ingress-nginx

version: 4.1.2

 

values.yaml

controller:
  service:
    annotations: 
      service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "3600"
      service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {ACM_ARN}
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'http'
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: '443'
      service.beta.kubernetes.io/aws-load-balancer-type: nlb  

    targetPorts:
      https: http # TLS (https) terminated at ELB, so internal endpoint is 'http'
  • controller.service.annotations 에서 service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'http' 값을 넣어야 합니다.
  • controller.service.targetPorts 에서 https: http로 변경해야 합니다.

 

설치 명령어

$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm upgrade -i ingress-nginx ingress-nginx/ingress-nginx --version 4.1.2 -n ingress-nginx --create-namespace -f values.yaml

 

README에 잘 적혀있다는 걸 기껏 삽질한 후에 알게 됐습니다..

https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx#aws-l7-elb-with-ssl-termination

 

설치 결과 

ingress-nginx-controller 가 설치됐습니다.

 

443 포트에 acm 이 붙은 걸 확인할 수 있습니다.

 

테스트

테스트를 위해서 argocd에 ingress 설정을 해서 설치를 한 후 https 접속이 원할이 되는지 확인해 보겠습니다. 

  ingress:
    enabled: true
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /
    ingressClassName: "nginx"  
    hosts:
      - argocd.jenana.net

 

k get ing -n argocd를 하면 address에 ingress-nginx-controller의 LB 주소가 붙습니다. 

 

잠금열쇠 표시로 https 접속이 정상적으로 된 것을 확인할 수 있습니다. 

 

오늘의 교훈

설치 전 리드미를 잘 읽어보자...

반응형