TLS는 오늘날 거의 모든 서비스에서 기대되는 기본 보안 요소이며, NLB와 연계하면 이를 간소화하고 최적화할 수 있습니다.
거의 모든 웹 및 네트워크 서비스에 데이터 전송 암호화가 요구되는 상황에서, NLB에 TLS를 연동하는 것은 통신 보안과 서비스 효율성을 모두 고려한 중요한 설계 요소로 작용합니다.
목표 : EKS에 연결된 NLB에 tls를 적용한다.
[관련 기술 문서]
NLB https
annotation
적용 절차
1) ACM에 (해당 Region에) SSL 인증서 업로드
'Certificate ID'가 아래 yaml 파일 상에, 'ssl-cert' 값으로 활용된다.

2) 'service' yaml 파일을 위 기술 문서를 참고하여 'anotation' 부분을 수정
```
apiVersion: v1
kind: Service
metadata:
name: service-kdream-01
namespace: test
labels:
app: auth-test
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: external
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https1, https2
service.beta.kubernetes.io/aws-load-balancer-ssl-cert : "arn:aws:acm:us-west-2:4xxxxxxxxxxx:certificate/aaaaaaaaa-2028-bbbb-cccc-dddddd"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: TCP
service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy : "ELBSecurityPolicy-TLS13-1-2-2021-06"
spec:
ports:
- name: https1
port: 8080
targetPort: 80
- name: https2
port: 443
targetPort: 80
type: LoadBalancer
service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy
* 이 주석은 클라이언트와 로드 밸런서 간의 SSL 연결을 협상하도록 보안 정책을 구성하는 옵션을 제공합니다.
* 보안 정책은 사용하려는 SSL 프로토콜, SSL 암호의 조합이며 기본적으로 이 주석을 지정하지 않으면 ELBSecurityPolicy-2016-08 정책을 사용합니다.
* 또한 이 기본 정책은 TLSv1.3 프로토콜을 지원하지 않으며 매니페스트 파일에 사용한 ELBSecurityPolicy-TLS13-1-2-2021-06 보안 정책을 사용하는 것이 좋습니다.
* 이 보안 정책에는 보안 및 성능에 최적화된 TLS 1.3이 포함되며 TLS 1.2와 역호환됩니다.
externalTrafficPolicy
* 이 옵션은 서비스가 외부 트래픽을 노드 로컬 또는 클러스터 전체 엔드포인트로 라우팅하려는지 여부를 나타냅니다.
* 클러스터(기본값) 및 로컬의 두 가지 옵션을 사용할 수 있습니다. 클러스터는 클라이언트 소스 IP를 가리고 다른 노드로 두 번째 홉을 발생시킬 수 있지만 전반적인 부하 분산이 양호해야 합니다.
* 로컬은 클라이언트 소스 IP를 보존하고 LoadBalancer 및 NodePort 유형 서비스에 대한 두 번째 홉을 방지하지만 잠재적으로 불균형 트래픽 확산의 위험이 있습니다.
* 필요에 따라 두 옵션중 하나를 선택할 수 있습니다.
3) Routet53에 관련 DNS CNAME 등록
