쿠버네티스 일반/Network

Kubernetes Ingress-NGINX on EKS

Jerry_이정훈 2022. 2. 25. 17:00
728x90

이직하고 EKS에 ingress-nginx 설정한 내용들 정리합니다. 

1. Ingress-nginx on EKS 설정 내용

  • 헬름 파일 이용 설치
  • LB 타입으로 CLB가 아닌 NLB 사용
  • AWS 인증서 적용 - 헬름 배포 시 변수 파일로 지정하여 설치 시 자동으로 적용되도록
  • AWS LB에서 TLS Termination 처리 설정
    : NLB가 TLS 처리하고 이 후 백엔드는 Https to Http로 전달
  • 443 port 남기고 default 80 port는 삭제 

Default 헬름 차트 변수 파일(values.yaml) 수정 내역

서비스 annotations 수정
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
      service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
      service.beta.kubernetes.io/aws-load-balancer-type: nlb
# aws 인증서 정보 등록
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:XXX
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https

# http 포트 disable (HTTPS 443 포트만 오픈하도록 설정_ 
    enableHttp: false

# SSL Termination 되고 이 후 웹서버 등에는 Http로 전달하도록 설정
    targetPorts:
      https: http

2. Traefik 인그레스 컨트롤러 사용 - Ingress-nginx와 동시 사용

: 도메인이 서로 달라 기존 ingress-nginx는 이 외 다른 인그레스 컨트롤러 실행이 필요함.
: NGINX 인그레스를 2개 실행하고 ingress-class로 구분 가능하나 혹시 모를 위험(작업 중 실수 등)에 대비하고자 새로운 다른 종류의 인그레스 컨트롤러(Traefik) 실행. Traefik 운영 경험이 있어서 별 거부감이 없었음.

: traefik도 동일하게 nlb, 인증서 등을 nginx와 동일하게 설정함 


Helm 기반 설치

(kr-prod:default)jerry@Jerrys-MacBook-Pro 03.karpenter-demo % helm ls -n traefik
NAME   	NAMESPACE	REVISION	UPDATED                            	STATUS  	CHART         	APP VERSION
traefik	traefik  	1       	2022-02-23 22:09:11.43444 +0900 KST	deployed	traefik-9.17.2	2.4.7

Ingress Rule 분리

: Traefik은 IngressRoute CRD 사용 
: 현재 switch-backend 이름의 ingressRoute 사용 중

(kr-prod:default)jerry@Jerrys-MacBook-Pro 03.karpenter-demo % k get ingressroute -A
NAMESPACE        NAME                           AGE
switch-backend   switch-backend-ingress-route   40h
반응형