参考
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 = "すべてのレコードはすでに最新です"