사전 준비

Route53 권한 등록

IAM → Policies 에서 Create Policy를 통해 아래 권한을 만들어준다. 혹은 AmazonRoute53FullAccess 사용

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": [
        "arn:aws:route53:::hostedzone/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
        "route53:ListResourceRecordSets"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

Policy detail 화면으로 가서 ARN을 복사해온다.

Untitled

EKS에 Service account 등록

eksctl create iamserviceaccount \
--name SERVICE_ACCOUNT_NAME \
--namespace NAMESPACE \
--cluster CLUSTER_NAME
--attach-policy-arn IAM_POLICY_ARN
--approve

External-dns 설치

helm artifactHUB에 등록되어 있는 external-dns를 설치한다.

External-dns는 EKS에 서비스를 배포하면 자동으로 uuid.<region>.elb.amazonaws.com 이름으로 도메인 명을 만들어준다.

helm repo add external-dns <https://kubernetes-sigs.github.io/external-dns/>
helm upgrade --install external-dns external-dns/external-dns

서비스 배포

<aside> 💡 External-dns와 다른 Namespace에서 배포해도 됨

</aside>