先日Tanzu Kubernetes Grid 1.4が登場
TKG1.3.1からのアップグレード方法はmaking先生が書いているのでそちらを見てもらうとして、自分は環境作り直しをしたかったので新規構築してみた。
CLIのセットアップ
まずは tanzu
CLI等必要なものをセットアップ。基本的には以下のドキュメントを参照。
Install the Tanzu CLI and Other Tools
Customer connectからVMware Tanzu CLI 1.4.0 CLIをダウンロード(環境に応じてダウンロードするものは変わる)
そして tanzu
のインストールとtanzu pluginのセットアップ、ytt
などのCarvel toolを入れる流れ。
OVAテンプレートのダウンロードとアップロード
次にCustomer connectからOVAテンプレートを持ってくる。UbuntuもしくはPhoton、あるいはその両方をダウンロードしておく。
ダウンロードし終わったら、 vCenterからOVFテンプレートのデプロイ
でデプロイ。その後テンプレートに変換 を行う。
このダウンロード&アップロード&変換は 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を選ぶこともできる。
設定画面に入るので、必要項目を入れていく。まずはvCenterの設定。SSH PUBLIC KEYには、今後メンテナンス等でVMに繋ぐためのSSH公開鍵を入れる。
次にManagement Clusterの設定。インスタンスタイプはmedium以上が推奨。
どうやらTKG1.4から、Control planeのLBにNSX ALBが利用可能になった様子? (これまではkube-vipのみだった)
VMware NSX Advanced Load Balancer のところは、NSX ALB利用者向けの設定なので今回は空欄
MetadataもOptionalなので空欄で行ける。
RsourcesのところではvCenter上のリソースを指定。VMフォルダ、リソースプールは予めTKG向けに作っておくのがおすすめ。
次にネットワークの設定。作られたManagement ClusterのVMがぶら下がるvCenter上のネットワークを指定する。Cluster service CIDRやCluster pod CIDRは特に理由がなければそのままで良い
7 Identity Managementは、認証を外部のプロバイダーにしたい場合に設定する。この過去記事等を参照。
Auth0でTKGのクラスタを認証できるようにする - Cloud Penguins
OS Imageは先ほどアップロードしたOVAを指定。ubuntuもしくはphotonが選択出来る。
Register TMCはTanzu Mission Controlが利用可能な方は設定。
一通り設定が終わったら次に進める。すると設定の確認画面が出るので、下の方にある CLI Command Equivalent の内容をメモっておく。これは後々、CLIでのインストールを行う際に有用になる。
DEPLOY MANAGEMENT CLUSTERをクリックしてセットアップを開始。デプロイが終わったら以下のようにVMが作られていることが分かる。
Tanzu Kubernetes Cluster(Workload cluster)のセットアップ
次に、実際のワークロードを載せていくKubernetesクラスタを作る。参考にするドキュメントは以下。
クラスタを作成するには、コンフィグファイルを作成して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も構築されたことが分かる。
動作確認
終わったら以下のコマンドで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を利用している場合も同様。
アップデート方法は例によってこちらの記事と、あとは公式ドキュメントを参考にするとよい。