external-dns 설정 & 배포하기 (feat. helm)
API manifest 파일을 작성하고 (ALB 설정) 배포를 하게 되면 blur.ap-northeast-2.elb.amazonaws.com
와 같은 URL을 만들어낸다.
그럼 이 긴 URL을 도메인에 연결해야하는데, 이 때 external-dns 를 사용한다.
나는 bitnami의 external-dns를 사용하기 때문에 이 기준으로 설명한다.
먼저 helm repo 를 추가한다.
helm repo add bitnami https://charts.bitnami.com/bitnami
만약 추가를 해둔 상태라면 업데이트를 통해 최신버전을 받아오도록 한다.
helm repo update
기본 설정은 다 되었으니 external-dns를 설치해준다.
helm install external-dns-[DOMAIN] -n dns \ # namespace는 dns로 설정
--set provider=aws \ # provider는 aws
--set aws.zoneType=public \ # 외부에 오픈해야하니 public
--set txtOwnerId=blur \ # txtOwnerId는 Route53 가서 확인 가능합니다.
--set domainFilters[0]=domainmain \ # domain 넣어주면 됩니다. (e.g. naver.com)
bitnami/external-dns
위 명령어를 입력해주면 external-dns가 설정에 맞게 배포된다.
사용할 준비는 모두 끝났으니 아래의 예시처럼 ALB Ingress를 설정해주면 spec.host를 읽어 route53 record에 alb를 지정해준다!
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/subnets: SUBNETS
alb.ingress.kubernetes.io/healthcheck-port: traffic-port
alb.ingress.kubernetes.io/healthcheck-path: /health
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-2:12312312312:certificate/ACM
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
name: BLUR
namespace: BLUR
labels:
app: BLUR
spec:
rules:
- host: BLUR
http:
paths:
- backend:
serviceName: ssl-redirect
servicePort: use-annotation
- backend:
serviceName: BLUR
servicePort: 80
끝!