TCE で 手軽に k8s 環境を手に入れよう ~その1~

はじめに

ディーネットのよろず請負の深見です。前回のお話から年を越してしまいました。

遅くなりましたが本年もよろしくお願いいたします。

さて、前回のお話の続きになります。

VMware Tanzu Community Edition (TCE) のインストールと進めていきましょう。

[ 補足 ] 構築環境について

今回は、TCE の導入を中心に進めますので、導入のベースとなる vSphere 7.0 (ESXi) および vCenter Server Appliance 7 の環境は構築済みの想定とします。

  • vSphere 7.0u3 (ESXi) のホスト x 1  (vSphere 6.7 最新で構築は可能)
  • vCenter Server Appliance 7 Standard x 1

※vSphere 関連の試用版を利用するのであれば、60日間までの利用が可能です。

また、前回お知らせしました構成より都合により、若干構築する環境は以下となりますのでご了承を。

TCE-Lab-101

VMware Tanzu Community Edition (TCE) 環境の構築について

TCE 環境は以下の手順にて構築していきます。

  • DHCP サーバの構築
      TCE (k8s) は、コンテナのオーケストレーションの際の IP アドレスは DHCP にて割り当てる様にします。
      ※今回、構築の環境では photon OS のイメージを使用して、事前に構築しています。

  • Bootstrap 環境の構築
      「Management Cluster」、「Workload Cluster」の作成のために必要となります。
      ※DHCP サーバと同じく photon OS のイメージを使用してデプロイします。

  • Management Cluster の作成

  • Workload Cluster の作成

  • TCE 環境の調整
      kubectl のプラグインを追加
      LB (MetalLB) の追加

Bootstrap 環境の構築

ここでは、Linux サーバ (photon OS) をデプロイし、docker が稼働する環境を構築します。

OS 環境の準備

※「OVA with virtual hardware v13 (UEFI Secure Boot)」を利用してデプロイします。
 ファイル名:photon-ova_uefi-4.0-c001795b80.ova

https://packages.vmware.com/photon/4.0/Rev2/ova/photon-ova_uefi-4.0-c001795b80.ova

※以降を考慮し、上記をあらかじめテンプレートとして登録しておきます。
  →テンプレート名:photon-v4r2-ova_uefi-Template02

 仮想マシン名:lab-tceboot-03

デプロイしたら、vCPU を 4、メモリを 16GB(要件は 6GB ですが、ここでは大きめに)に設定変更して起動

 CPU: 4vCPU
 MEM: 16GB
 Disk: 50GB(デフォルト:16GB -> 50GB)
 Network adapter: DSwitch-VM Network-ephemeral
 CD/DVD drive 1: クライアント デバイス(※便宜上)

  • デプロイ後、ネットワーク設定 (固定 IP アドレスの付与)や OS のアップデートを実施
  • 一般ユーザ (denet) の作成
  • iptables によるファイアウォールが有効になりますが、今回は検証環境なので無効にしておきます。
  • パーティション拡張(16GB -> 50GB へ適用)
  • docker の起動および自動起動設定
  • OS 設定の調整(キーボードマップ、タイムゾーン、ホスト名の設定など)

ここまでは、OS の基本設定などの事前準備となります。

※これより以降の作業は、一般ユーザー denet にて実施となります。

$ su - denet
$ id

  • ssh-keygen で、SSH 鍵ペアのファイルを作成

$ ssh-keygen -P '' -f ~/.ssh/id_rsa
$ ls -l .ssh/
$ cat .ssh/id_rsa.pub
※以降の作業に公開鍵が必要になりますので、準備をしておきます。

  • CLI を配置するディレクトリ($HOME/bin)を作成して、PATH 環境変数に追加設定

$ mkdir $HOME/bin
$ echo 'PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile
$ source $HOME/.bash_profile
$ cat $HOME/.bash_profile

  • 次回ログイン時に tanzu CLI と kubectl の Bash 補完機能を有効化

$ echo 'source <(tanzu completion bash)' >> $HOME/.bash_profile
$ echo 'source <(kubectl completion bash)' >> $HOME/.bash_profile

kubectl のインストール

  • 最新の kubectl をダウンロードし、インストールします。

cd $HOME/bin/
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x $HOME/bin/kubectl
kubectl version --short --client


denet [ ~ ]$ cd $HOME/bin/
denet [ ~/bin ]$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 154 100 154 0 0 376 0 --:--:-- --:--:-- --:--:-- 377
100 44.4M 100 44.4M 0 0 9353k 0 0:00:04 0:00:04 --:--:-- 10.5M
denet [ ~/bin ]$
denet [ ~/bin ]$ chmod +x $HOME/bin/kubectl
denet [ ~/bin ]$
denet [ ~/bin ]$ kubectl version --short --client
Client Version: v1.23.2


Tanzu Community Edition のインストール

  • TCE を GitHub からダウンロードします。

https://github.com/vmware-tanzu/community-edition/releases

$ cd
$ curl -sLO https://github.com/vmware-tanzu/community-edition/releases/download/v0.10.0-rc.2/tce-linux-amd64-v0.10.0-rc.2.tar.gz

※最新は RC 版ですが、ここではこちらを導入してみます。

  • ファイルを展開します。

$ tar zxvf tce-linux-amd64-v0.10.0-rc.2.tar.gz


denet [ ~ ]$ tar zxvf tce-linux-amd64-v0.10.0-rc.2.tar.gz
tce-linux-amd64-v0.10.0-rc.2/
tce-linux-amd64-v0.10.0-rc.2/bin/
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-cluster
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-kubernetes-release
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-login
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-secret
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-package
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-pinniped-auth
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-management-cluster
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-builder
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-codegen
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-standalone-cluster
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-conformance
tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-diagnostics
tce-linux-amd64-v0.10.0-rc.2/install.sh
tce-linux-amd64-v0.10.0-rc.2/uninstall.sh


  • インストール スクリプトを実行

$ cd tce-linux-amd64-v0.10.0-rc.2/
$ ./install.sh

denet [ ~/tce-linux-amd64-v0.10.0-rc.2 ]$ ./install.sh
+ ALLOW_INSTALL_AS_ROOT=
+ [[ 1000 -eq 0 ]]
+++ dirname ./install.sh
++ cd .
++ pwd
+ MY_DIR=/home/denet/tce-linux-amd64-v0.10.0-rc.2
++ uname
+ BUILD_OS=Linux
+ case "${BUILD_OS}" in
+ XDG_DATA_HOME=/home/denet/.local/share
+ echo /home/denet/.local/share
/home/denet/.local/share
++ command -v tanzu
+ TANZU_BIN_PATH=
+ [[ -n '' ]]
+ TANZU_BIN_PATH=/usr/local/bin
+ [[ :/home/denet/bin:/home/denet/bin:/usr/local/bin:/bin:/usr/bin: == *\:\/\h\o\m\e\/\d\e\n\e\t\/\b\i\n\:* ]]
+ [[ -d /home/denet/bin ]]
+ TANZU_BIN_PATH=/home/denet/bin
+ echo Installing tanzu cli to /home/denet/bin
Installing tanzu cli to /home/denet/bin
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu /home/denet/bin
+ mkdir -p /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-builder /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-cluster /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-codegen /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-conformance /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-diagnostics /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-kubernetes-release /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-login /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-management-cluster /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-package /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-pinniped-auth /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-secret /home/denet/.local/share/tanzu-cli
+ for plugin in "${MY_DIR}"/bin/tanzu-plugin*
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/bin/tanzu-plugin-standalone-cluster /home/denet/.local/share/tanzu-cli
+ mkdir -p /home/denet/.local/share/tce
+ install /home/denet/tce-linux-amd64-v0.10.0-rc.2/uninstall.sh /home/denet/.local/share/tce
+ TANZU_PLUGIN_CACHE=/home/denet/.cache/tanzu/catalog.yaml
+ [[ -n /home/denet/.cache/tanzu/catalog.yaml ]]
+ echo 'Removing old plugin cache from /home/denet/.cache/tanzu/catalog.yaml'
Removing old plugin cache from /home/denet/.cache/tanzu/catalog.yaml
+ rm -f /home/denet/.cache/tanzu/catalog.yaml
+ tanzu init
| initializing ?  successfully initialized CLI
++ tanzu plugin repo list
++ grep tce
+ TCE_REPO=
+ [[ -z '' ]]
+ tanzu plugin repo add --name tce --gcp-bucket-name tce-tanzu-cli-plugins --gcp-root-path artifacts
++ tanzu plugin repo list
++ grep core-admin
+ TCE_REPO=
+ [[ -z '' ]]
+ tanzu plugin repo add --name core-admin --gcp-bucket-name tce-tanzu-cli-framework-admin --gcp-root-path artifacts-admin
+ echo 'Installation complete!'
Installation complete!

  • tanzu CLI が実行可能になったことを確認

$ cd
$ which tanzu
$ tanzu version


denet [ ~ ]$ which tanzu
/home/denet/bin/tanzu
denet [ ~ ]$
denet [ ~ ]$ tanzu version
version: v0.10.0
buildDate: 2021-12-03
sha: fd96beb


OVA テンプレートのデプロイ

TCE で使用する OVA ファイルをデプロイし、テンプレートに変換しておきます。

OVA ファイルは、下記からダウンロードします。

 https://customerconnect.vmware.com/downloads/get-download?downloadGroup=TCE-090
 今回は photon-3-kube-v1.21.2+vmware.1-tkg.2-12816990095845873721.ova を利用します。

※vCenter 側でデプロイ作業をします。
※このデプロイは、ここより前の任意のタイミングで行っておけば良いでしょう。

これで TCE 環境の下準備が完了なります。

本日は、ここまでとします。

最後に

今回は、TCE 環境を構築するにあたって、必要となる下準備を紹介しました。

次回からは、TCE 環境の構築を本格的に進めます。

  • Management Cluster の作成

  • WorkloadCluster の作成

の予定をしています。

それでは、この辺で失礼します。

k8s_lab-002

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA