参考
https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/external-dns/setup/
外部DNS
- kubectlコマンド経由でDNSレコードを設定することができる
手順
マニュフェストファイルをダウンロード
wget https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress
-controller/v1.1.8/docs/examples/external-dns.yaml
args部分を変更する
- ここでは、test-dns.comがRoute53で管理しているHostedZone
引数:
---source = service
---source = ingress
---domain-filter = test-dns.com#は、ExternalDNSに、
指定されたドメインと一致するホストゾーンのみを表示させ、
使用可能なすべてのホストゾーンの処理を省略します
---provider = aws
---policy = upsert-only#は、ExternalDNSがレコードを削除するのを防ぎ、
完全同期を有効にすることを省略します
---aws-zone-type = public#パブリックホストゾーンのみを確認
(有効な値はpublic、private、または両方の値なし)
---registry = txt
---txt-owner-id = my-identifier
申し込む
kubectl apply -f external-dns.yaml
確認
kubectl logs -f $(kubectl get po | egrep -o 'external-dns [A-Za-z0-9-] +')
使い方
ingressのマニュフェストファイルのannotation部分に書く
- external-dns.alpha.kubernetes.io/hostname: k8s.test.jpを追記
apiVersion:extensions / v1beta1
種類:イングレス                                                                                                                        
メタデータ:
  名前:「イングレス」
  名前空間:「ビジネス」
  注釈:
    kubernetes.io/ingress.class:alb 
    alb.ingress.kubernetes.io/scheme:インターネットに面した
    external-dns.alpha.kubernetes.io/hostname:k8s.test.jp
  ラベル:
    app: "sample-app"
スペック:
  ルール:
    -http:
        パス:
          - 道: /
            バックエンド:
              serviceName: "アプリ"
              servicePort:80
確認
kubectl logs -f $(kubectl get po | egrep -o 'external-dns [A-Za-z0-9-] +')
time = "2020-09-12T16:05:29Z" level = info msg = "すべてのレコードはすでに最新です"
time = "2020-09-12T16:06:29Z" level = info msg = "必要な変更:CREATE k8s.test
.jp A [Id:/ hostedzone / Z02817823VED9IW9EO9S7]"
time = "2020-09-12T16:06:29Z" level = info msg = "Desired change:CREATE k8s
.test.jp TXT [Id:/ hostedzone / Z02817823VED9IW9EO9S7]"
time = "2020-09-12T16:06:29Z" level = info msg = "ゾーンtest.jpの2つのレコード。
[Id:/ hostedzone / Z02817823VED9IW9EO9S7]が正常に更新されました"
time = "2020-09-12T16:07:29Z" level = info msg = "すべてのレコードはすでに最新です"
time = "2020-09-12T16:08:29Z" level = info msg = "すべてのレコードはすでに最新です"
