ExternalDNS を試してみたDecember 8, 2020 @nnstt1Kubernetes Novice Tokyo #7
View Slide
自己紹介◼Name ののし@nnstt1◼Job インフラエンジニア◼Fav AnsibleAzureKubernetes
登壇きっかけ
背景
自宅 k8s クラスタでの悩みService type: LoadBalancer デプロイブラウザで IP アドレスにアクセスMetalLB で IP アドレス払い出しGrafana とか ArgoCD とか使いたい!
自宅 k8s クラスタでの悩みService type: LoadBalancer デプロイブラウザで IP アドレスにアクセスMetalLB で IP アドレス払い出しGrafana とか ArgoCD とか使いたい!IP アドレスでアクセスしたくない!手動で DNS レコード登録したくない!
ExternalDNS とは◼Ingress や Service を DNS プロバイダと同期◼DNS プロバイダに依存しない DNS レコードの動的管理
対応している DNS プロバイダStableGoogle Cloud DNS, AWS Route 53BetaAWS Cloud Map, Azure DNS, CloudFlareAlphaDigitalOcean, CoreDNS, …計 22 個v0.7 時点
デプロイ方法◼DNS プロバイダ毎に設定◼公式リポジトリにチュートリアルあります
登録するホスト名Ingressspec.rules.host に基づいて設定ServiceExternalDNS 用アノテーションを付与
+ CoreDNS
ExternalDNS マニフェスト
システム構成図
システム構成図IP アドレス払い出し
システム構成図ホスト名とIPアドレス参照
システム構成図DNS レコード自動登録
システム構成図DNS 参照
システム構成図FQDN でアクセス
結果が分かりにくいので
+ Azure DNS
システム構成図Azure Load Balancer Azure DNS
事前準備DNS ゾーンExternalDNS でレコード登録する対象SecretDNS ゾーンを操作するサービスプリンシパルの情報kubectl create secret generic azure-config-file --from-file azure.json
Azure DNSTXT レコードも作成されている
TXT レコード◼ ExternalDNS は TXT レコードで管理対象のレコードか判断
まとめ
まとめExternalDNS で DNS 動的管理 自宅 k8s クラスタで簡単にサービスへアクセスできるように多くの DNS プロバイダに対応Stable, Beta のプロバイダは少ないコントリビュートするチャンスかも?某金魚さんブログにて awx コマンドでの同期を紹介