Cloud Penguins

Flying penguins in the cloud.

Tanzu Kubernetes Grid 1.4を新規構築した

先日Tanzu Kubernetes Grid 1.4が登場

tanzu.vmware.com

TKG1.3.1からのアップグレード方法はmaking先生が書いているのでそちらを見てもらうとして、自分は環境作り直しをしたかったので新規構築してみた。

CLIのセットアップ

まずは tanzu CLI等必要なものをセットアップ。基本的には以下のドキュメントを参照。

Install the Tanzu CLI and Other Tools

Customer connectからVMware Tanzu CLI 1.4.0 CLIをダウンロード(環境に応じてダウンロードするものは変わる)

https://customerconnect.vmware.com/en/downloads/info/slug/infrastructure_operations_management/vmware_tanzu_kubernetes_grid/1_x

そして tanzu のインストールとtanzu pluginのセットアップ、ytt などのCarvel toolを入れる流れ。

OVAテンプレートのダウンロードとアップロード

次にCustomer connectからOVAテンプレートを持ってくる。UbuntuもしくはPhoton、あるいはその両方をダウンロードしておく。

f:id:jaco-m:20210912175126p:plain

ダウンロードし終わったら、 vCenterからOVFテンプレートのデプロイ でデプロイ。その後テンプレートに変換 を行う。

f:id:jaco-m:20210912175426p:plain

このダウンロード&アップロード&変換は govc コマンドを使ってCLIで行うことも可能。そのあたりはmaking先生の記事を参照

Management Clusterのデプロイ

まずはManagement Clusterをデプロイする。CLIを使う方法とUIを使う方法の2つあるが、今回は初回インストールということもありUIを利用する。以下のコマンドを実行すると、 localhost:8080でUIが立ち上がるのでブラウザでアクセスする。もしも踏み台サーバ等で実行している場合は、sshのポートフォワード 例: ssh <踏み台サーバーIP> -L 8008:localhost:8080 を活用するなどしてブラウザから繋ぐと良い。

tanzu management-cluster create --ui -v 9

このような画面になるので、今回はvSphereを選択。ちなみにAWSとAzureを選ぶこともできる。

f:id:jaco-m:20210912175957p:plain

設定画面に入るので、必要項目を入れていく。まずはvCenterの設定。SSH PUBLIC KEYには、今後メンテナンス等でVMに繋ぐためのSSH公開鍵を入れる。

f:id:jaco-m:20210912180232p:plain

次にManagement Clusterの設定。インスタンスタイプはmedium以上が推奨。

f:id:jaco-m:20210912180316p:plain

どうやらTKG1.4から、Control planeのLBにNSX ALBが利用可能になった様子? (これまではkube-vipのみだった)

f:id:jaco-m:20210912180419p:plain

  1. VMware NSX Advanced Load Balancer のところは、NSX ALB利用者向けの設定なので今回は空欄

  2. MetadataもOptionalなので空欄で行ける。

RsourcesのところではvCenter上のリソースを指定。VMフォルダ、リソースプールは予めTKG向けに作っておくのがおすすめ。

f:id:jaco-m:20210912180908p:plain

次にネットワークの設定。作られたManagement ClusterのVMがぶら下がるvCenter上のネットワークを指定する。Cluster service CIDRやCluster pod CIDRは特に理由がなければそのままで良い

f:id:jaco-m:20210912181014p:plain

7 Identity Managementは、認証を外部のプロバイダーにしたい場合に設定する。この過去記事等を参照。

Auth0でTKGのクラスタを認証できるようにする - Cloud Penguins

OS Imageは先ほどアップロードしたOVAを指定。ubuntuもしくはphotonが選択出来る。

f:id:jaco-m:20210912181206p:plain

Register TMCはTanzu Mission Controlが利用可能な方は設定。

一通り設定が終わったら次に進める。すると設定の確認画面が出るので、下の方にある CLI Command Equivalent の内容をメモっておく。これは後々、CLIでのインストールを行う際に有用になる。

DEPLOY MANAGEMENT CLUSTERをクリックしてセットアップを開始。デプロイが終わったら以下のようにVMが作られていることが分かる。

f:id:jaco-m:20210912181505p:plain

Tanzu Kubernetes Cluster(Workload cluster)のセットアップ

次に、実際のワークロードを載せていくKubernetesクラスタを作る。参考にするドキュメントは以下。

docs.vmware.com

クラスタを作成するには、コンフィグファイルを作成してtanzuコマンドでデプロイする形になる。コンフィグテンプレートはドキュメントに記載されているのでコピーし、ファイルとして作成しておく。 今回自分は以下のような設定にした。環境に応じて適宜変更すること。

# CLUSTER_NAME:
CLUSTER_PLAN: dev
NAMESPACE: default
CNI: antrea
IDENTITY_MANAGEMENT_TYPE: none

#! Node configuration
#! ---------------------------------------------------------------------

VSPHERE_NUM_CPUS: 2
VSPHERE_DISK_GIB: 40
VSPHERE_MEM_MIB: 8000
CONTROL_PLANE_MACHINE_COUNT: 1
WORKER_MACHINE_COUNT: 2

#! ---------------------------------------------------------------------
#! vSphere configuration
#! ---------------------------------------------------------------------

VSPHERE_NETWORK: TKG
VSPHERE_SSH_AUTHORIZED_KEY: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClNV5DBMYmOo5pYMpYE0PzXAFlLbYT46s6a7sGZdr9FIecJakrTtPVm6Po3uFL6qURi6uRQ8VsgeZGzZWWft8yJs1JdTcem8+KIiCenisTT7m9dRaX3EMdvhHyDtFGPSdGSq+blvgKo+HaHUem+Sx8R1lZAESzlZHjCwDxpZc5F/BkB4Jn+WiRgTeMwavOp0FJedNraLwZIHJ9h4kKV5uxIt3VgD5pHMotzjGJXDd2+jrcX6I/gQ/Cq1mXtvIMRoy72vpwF0r2knt1DrOOGi/Z029ZiPbQJl8HjbQSx/7kYPlw+ZI5W5afMSlwcs8qb3SR5ofF06gUftb3Uq/ziD2j                                                               VSPHERE_USERNAME: administrator@vsphere.local
VSPHERE_PASSWORD: <PASSWORD>
VSPHERE_SERVER: vcenter.udcp.run
VSPHERE_DATACENTER: Datacenter
VSPHERE_RESOURCE_POOL: tkg
VSPHERE_DATASTORE: vsanDatastore
VSPHERE_FOLDER: tkg
VSPHERE_INSECURE: true
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.9.11.101

#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------

ENABLE_MHC: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m

#! ---------------------------------------------------------------------
#! Common configuration
#! ---------------------------------------------------------------------

ENABLE_AUDIT_LOGGING: false
ENABLE_DEFAULT_STORAGE_CLASS: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13

# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""

#! ---------------------------------------------------------------------
#! Autoscaler configuration
#! ---------------------------------------------------------------------

ENABLE_AUTOSCALER: false

コンフィグファイルの編集が終わったら以下のコマンドでデプロイを開始

tanzu cluster create workload -f workload.yaml

Management clusterに加え、workload clusterも構築されたことが分かる。

f:id:jaco-m:20210912182219p:plain

動作確認

終わったら以下のコマンドでkubeconfigを取得し、k8sに接続を確認。

tanzu cluster kubeconfig get workload --admin
kubectl config use-context workload-admin@workload
 kubectl get pods -A
NAMESPACE                           NAME                                                             READY   STATUS      RESTARTS   AGE
avi-system                          ako-0                                                            1/1     Running     0          67m
capi-kubeadm-bootstrap-system       capi-kubeadm-bootstrap-controller-manager-6494884869-8r5v7       2/2     Running     0          72m
capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager-857d687b9d-fxx75   2/2     Running     0          72m
capi-system                         capi-controller-manager-778bd4dfb9-tskmh                         2/2     Running     0          72m
capi-webhook-system                 capi-controller-manager-9995bdc94-7sj5n                          2/2     Running     0          72m
capi-webhook-system                 capi-kubeadm-bootstrap-controller-manager-68845b65f8-d7zs5       2/2     Running     0          72m
capi-webhook-system                 capi-kubeadm-control-plane-controller-manager-9847c6747-8fzkp    2/2     Running     0          72m
capi-webhook-system                 capv-controller-manager-55bf67fbd5-5shl8                         2/2     Running     0          72m
以下略

無事にKubernetesとして機能していることが確認できた。

その他1.4に関すること

基本的にデプロイの流れはTKG 1.3と変わるところはない。

TKG1.3にはadd-onという概念があったが、1.4からはpackageという仕組みに変更が行われた。そのため1.3からのアップデートの場合はadd-onをpackageに更新する作業が必要となる。extensionsを利用している場合も同様。

アップデート方法は例によってこちらの記事と、あとは公式ドキュメントを参考にするとよい。