この記事は、TUNA-JP Advent Calendar 2021 22日目のエントリーで、
Tanzu Community Edition(TCE)構築時の準備をちょっとだけラクにしてみようとしたときの内容です。
みなさん、TCE/vCenter上にマネジメントクラスタを起動するパタンでの構築はどんな環境で実行していますか?
私の場合は、おうちvSphereな環境に構築用のVM(ubuntu)を起動して、そのVM上にCLI等をインストールして、構築していました。
できるだけ、次回構築するときにラクできるようするために、tanzu等コマンドの実行環境をコンテナにまとめてみました。
当初は、コマンド類をまとめたイメージをビルドするだけでしょ? と思ってましたが
ちょっとだけ素直に起動できない箇所があったので、それも含めてリポジトリにまとめてみました。
n番煎じ感は半端ないですが、お付き合いください。
Dockerfile、docker-compose.yaml にまとめたので、 docker-compose up -d
して、
コンテナ内でクラスタ構築作業ができるようになるので、次回はちょっとだけ楽してクラスタ構築環境が再現できるはず。
コンテナを落としても(docker-compose down)、構築+構築後のクラスタのアクセスに必要なファイルは永続化してみています。
ちなみに、実行環境用の VMイメージにしておけばいいじゃん とか、他のアプローチもありそうなので、
皆さんどうしてるんですかねぇ。
使い方
早速ですが、以下のリポジトリに Dockerfile とdocker-compose.yaml をまとめました。
- Dockerが起動できて,docker-compose コマンドが実行できて
- インターネットに繋がっている
Linuxなマシンで実行できるはず。(私の実行環境は Ubuntu 20.04 LTS + Docker / Server Version: 20.10.11 + docker-compose 2.2.2)
docker-compose up -d
すると手元でコンテナイメージをビルド(必要なコマンド類を回収ー)したあとに、
コンテナを起動します。
# Git Cloneする
git clone https://github.com/make0x0/tanzuenv
cd tanzuenv
# docker-compose up する
docker-compose up -d
# イメージがビルドされたら、コンテナに潜る
docker-compose exec tanzuenv bash
あとはコンテナ内で、先人たちのわかりやすい記事に従って、tanzuのコマンドを打ってクラスタを構築するだけです。
これで次回は上記のリポジトリをCloneして実行するだけで、コマンド類が一式揃った環境でTCEの構築ができるはずだぞぃ!
コンテナに包もうとしたときに躓いたところ
どこにTCEの設定ファイルが保存されるのだろう?
- kubeconfig類
- ~/.kube : 構築したクラスタの接続情報が格納
- ~/.kube-tkg : マネジメントクラスタの接続情報が格納
- TCEが必要とする、設定ファイル類の保存先
- ~/.config/tanzu : クラスタ構築時のカスタマイズに必要なファイルもここに格納されるみたい
- ~/.cache/tanzu
この辺っぽいので、コンテナ外に保存されるように設定した
docker.sock をマウントしないといけない
Tanzuコマンドでマネジメントクラスタ構築をする際 コンテナとして小さなKubernetesクラスタ(kind)を起動される。
そのため、コンテナ内でdockerコマンドの実行と、ホスト上のDockerデーモンにアクセスできないとだめっぽい。
が必要でした。
TCEインストーラーのWebUIにアクセスするためにはネットワークをHostModeにする必要があった
TCEのコマンドをインストールするとき rootユーザーだと怒られる
環境変数に ALLOW_INSTALL_AS_ROOT=ture を設定するとインストールできた。(とりあえず動いたけど、、、いいかなぁ。。。)
(Github上のDockerfile 2回宣言してるな。。。。)
マネジメントクラスタの起動
あとはコンテナの中で、TCEの構築手の手順にある、tanzuコマンドを使ってインストーラーを起動、
ホストのVMのブラウザで UIにアクセスすれば、マネジメントクラスタを立ち上げられると思います。
tanzu management-cluster create --ui
よしよし、できたできた。
次回 、準備作業の10分ぐらいは短縮できたんじゃないかなー と自己満足できました。ありがとうございました!
追記 マネジメントクラスタの削除も問題なし!
コンテナで設定ファイルも含めてくるんでいるので、1台の作業用マシンで、複数のマネジメントクラスタを扱いやすくなった気がします。