vSphere with Tanzu を .localドメインで作った話

歴史的な経緯で.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

タイトルとURLをコピーしました