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

끝!