ExternalDNS K8S 서비스/인그레스 생성 시 도메인을 설정하면, AWS(Route 53), Azure(DNS), GCP(Cloud DNS) 에 A 레코드(TXT 레코드)로 자동 생성/삭제 1 # 모니터링 watch -d kubectl get pod -A # 정책 생성 -> 마스터/워커노드에 정책 연결 iam > 정책 > AllowExternalDNSUpdates 정책이 있다. route53 업데이트 권한이 들어가 있다. curl -s -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/AKOS/externaldns/externaldns-aws-r53-policy.json aws iam create-policy --policy-name AllowExternalDNSUpdates --policy-document file://externaldns-aws-r53-policy.json # ACCOUNT_ID 변수 지정 export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text) # EC2 instance profiles 에 IAM Policy 추가(attach) aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/AllowExternalDNSUpdates --role-name masters.$KOPS_CLUSTER_NAME aws iam attach-role-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/AllowExternalDNSUpdates --role-name nodes.$KOPS_CLUSTER_NAME # 설치 kops edit cluster -------------------------- spec: externalDns: provider: external-dns -------------------------- # 업데이트 적용 kops update cluster --yes && echo && sleep 3 && kops rolling-update cluster # externalDns 컨트롤러 파드 확인 kubectl get pod -n kube-system -l k8s-app=external-dns NAME READY STATUS RESTARTS AGE external-dns-66969c4497-wbs5p 1/1 Running 0 8m53s 2 # CLB에 ExternanDNS 로 도메인 연결 kubectl annotate service mario "external-dns.alpha.kubernetes.io/hostname=mario.$KOPS_CLUSTER_NAME" # 확인 dig +short mario.$KOPS_CLUSTER_NAME kubectl logs -n kube-system -l k8s-app=external-dns # 웹 접속 주소 확인 및 접속 echo -e "Maria Game URL = http://mario.$KOPS_CLUSTER_NAME" # 도메인 체크 echo -e "My Domain Checker = https://www.whatsmydns.net/#A/mario.$KOPS_CLUSTER_NAME" 3 콘솔 route53 에서 확인 4 삭제 kubectl delete deploy,svc mario 감사합니다.