본문 바로가기

AWS

[EKS 애드온 #1] External DNS Helm으로 설치하기

반응형

 

External DNS IAM Role 설정 (IRSA)

본인은 Terraform으로 생성하였지만 AWS 공식문서에 나와있는대로 eksctl로 설치해도 무방하다.

 

문서 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-set-up-externaldns/


지원 내역

본인은 Istio와 AWS LoadBalancer Controller에서 사용해보았다.

 

https://github.com/kubernetes-sigs/external-dns#deploying-to-a-cluster


Helm으로 external-dns 설치

위의 Github으로 접속하여 values.yaml을 Local로 가져온다. 이는 본인 환경에 맞게 values.yaml을 변경하기 위함이다.

 

https://github.com/kubernetes-sigs/external-dns/tree/master/charts/external-dns

 

 

 

Helm 으로 External DNS 구성

# Repo 설치
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
helm repo update external-dns


# Helm Values를 통해 External DNS 설치
helm upgrade --install -f values.yaml \
  --namespace kube-system external-dns external-dns/external-dns


# 업그레이드
helm upgrade -f values.yaml \
  --namespace kube-system external-dns external-dns/external-dns

 

values.yaml 수정 내역

 

[1] ServiceAccount

External DNS의 IAM Role ARN을 기입할 수 있도록 SA Annotation에 추가

 

[2] nodeSelector

특정 Nodegroup에 배치될 수 있도록 nodeSelector 지정

 

[3] extraArgs

추가 Argument들을 기입.

 

https://github.com/kubernetes-sigs/external-dns/blob/1f0f004d331c08fc359b7b738dfc4636e4990ef7/pkg/apis/externaldns/types.go

 

이 부분이 중요한데, aws-zone-types, assume-role, zone-id-filter, zone-name-fiolter, exclude-domains, domain-filter 등 여러가지 추가 옵션을 설정할 수 있다.

 

참고로 aws-assume-role 설정은 Cross Account Role 설정을 수행하도록 도와주는 옵션이다.

 

해당 SA의 Annotation에 기입된 IAM Role은 Cross Account IAM Role에 대해 sts:assumeRole 수행할 권한이 부여되어 있어야 하고 Cross Account의 IAM Role은 신뢰관계에 등록되어 있어야 한다.

 

반응형