6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TCE構築に使うコマンド類をコンテナでくるんで次回ちょっとだけ楽したかった件

Last updated at Posted at 2021-12-21

この記事は、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デーモンにアクセスできないとだめっぽい。

  • コンテナ内にDockerコマンドを追加した
  • ホスト上のDockerデーモンにアクセスできるように docker.sock をマウントした

が必要でした。

TCEインストーラーのWebUIにアクセスするためにはネットワークをHostModeにする必要があった

ここ

TCEのコマンドをインストールするとき rootユーザーだと怒られる

環境変数に ALLOW_INSTALL_AS_ROOT=ture を設定するとインストールできた。(とりあえず動いたけど、、、いいかなぁ。。。)

(Github上のDockerfile 2回宣言してるな。。。。)

マネジメントクラスタの起動

あとはコンテナの中で、TCEの構築手の手順にある、tanzuコマンドを使ってインストーラーを起動、
ホストのVMのブラウザで UIにアクセスすれば、マネジメントクラスタを立ち上げられると思います。

tanzu management-cluster create --ui

(ウィザードに従ってセットアップすると・・・)
image.png

よしよし、できたできた。
次回 、準備作業の10分ぐらいは短縮できたんじゃないかなー と自己満足できました。ありがとうございました!

追記 マネジメントクラスタの削除も問題なし!

image.png

コンテナで設定ファイルも含めてくるんでいるので、1台の作業用マシンで、複数のマネジメントクラスタを扱いやすくなった気がします。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?