歴史的な経緯で.localドメインを利用している方も少なくないと思います。
.localドメインでvSphere with Tanzuを構築すると、ちょっとイケてない感じになるという話。
今回の環境は下記のような感じ。
vSphereのバージョンは7.0U3、ネットワークにはNSX Advanced Loadbalancer(ALB)を利用して環境を作っています。
まず.local ドメインの影響というと、詳細は割愛しますが、内部のDNSに聞きにいけません。
これはvSphere with Tanzu云々ではなく、RFCで定義されている仕様です。
うちのはそんなことないけど。と思われる方もいらっしゃるかと思いますが、これは簡単な解決策があります。
Search Domainを設定するだけで、内部のDNSに聞きに行くことが出来ます。ただそれだけ。
恐らく、.localドメインで運用している方はSearch Domainを設定していると思います。
なので、そこまで影響がないわけですね。
さて、Kubernetesを建てたら、コンテナイメージはどこから取りに行きたいですか?
パブリックなレジストリから取ってくるのもいいですが、自分で開発したコンテナイメージはどこかしらのプライベートなリポジトリに置いておくケースが多いかと思います。
そこで今回は、イメージレジストリはオンプレ版のHarborを使って建ててみました。FQDNベースで。
Tanzu Kubernetes Cluster(TKC)を建てて、Harborからイメージを取ってこようとすると、証明書関連のエラーが返ってきます。
TKCとHarborはTLSで通信するわけですが、TKCにSearch Domainが入っていない且つHarborはFQDNでデプロイされていて、証明書のCNやSANにFQDNが入っている状態になります。
その名前が解決できないので、エラーが返ってくる形ですね。
更に不幸なことに、TKCはデプロイ時にSearch Domainを設定する項目がありませんでした。
では、どうするのかというと、Nodeに直接ログインしてSearch Domainを書かないといけません。
Nodeへのログイン方法はこちら
パスワードを使用した、システム ユーザーとしての Tanzu Kubernetes クラスタ ノードへの SSH 接続 (vmware.com)
ログイン出来たら、/etc/systemd/network/10-gosc-eth0.network に Domain=AAA.local を追加して、 systemd-networkd と systemd-resolvedをrestartします。
# systemctl restart systemd-networkd systemd-resolved
これで、Search Domainが設定され、名前解決が出来るようになります。
とはいえ、TKCをデプロイするたびに設定しないといけないですし、もうちょっとスマートにやりたいと思いますが、それはまた別の機会に書こうと思います。
Comments