CAPX(Cluster API Provider Nutanix Cloud Infrastructure)で、Nutanix CSI Driver がインストールされた Workload Cluster を作成してみます。
このあたりを参考にすすめます。
今回の内容です。
- インストール方法について
- Webhook 証明書の生成
- Management Cluster での ClusterResourceSet の有効化
- Workload Cluster クラスタの作成(CSI Flavor)
CAPX の環境構築はこちらをどうぞ。
インストール方法について
CAPX Workload Cluster への Nutanix CSI Driver インストールには、3種類の方法があります。
- Helm
- ClusterResourceSet
- CAPX Flavor
今回は、CAPX Flavor でインストールしてみます。以前の投稿との差分のみを説明しているので、下記もあわせて参照してください。
Webhook 証明書の生成
CSI Snapshot Webhook の証明書を生成して、環境変数に指定しておきます。これは、専用のスクリプトが提供されています。
ちなみに、Webhook 証明書の関連ファイルを指定する環境変数を指定せずにクラスタを作成しようとすると、エラーで処理が開始できません。
[root@lab-capi-01 ~]# clusterctl generate cluster capx02 -f csi | kubectl apply -f - Error: value for variables [WEBHOOK_CA, WEBHOOK_CERT, WEBHOOK_KEY] is not set. Please set the value using os environment variables or the clusterctl config file error: no objects passed to apply
gen-self-cert.sh スクリプトをダウンロードします。
ダウンロードしたスクリプトを、source コマンドで実行します。
# source gen-self-cert.sh creating certs in tmpdir /tmp/tmp.Pq6jU4eQOk Generating RSA private key, 2048 bit long modulus (2 primes) ......+++++ ....+++++ e is 65537 (0x010001) Generating RSA private key, 2048 bit long modulus (2 primes) ..............................................................+++++ ............................................................................+++++ e is 65537 (0x010001) Signature ok subject=CN = csi-snapshot-webhook.ntnx-system.svc Getting CA Private Key
これで、証明書が自動生成され、env コマンドで確認すると、WEBHOOK_~ という環境変数が設定されています。出力が多いので、ここでは設定された環境変数の名前だけ表示しています。
# env | grep WEBHOOK | cut -d '=' -f1 WEBHOOK_KEY WEBHOOK_CA WEBHOOK_CERT
Management Cluster での ClusterResourceSet の有効化
この作業は、kind による Kubernetes クラスタを作成した後、Management Cluster にする前に実施します。
Management Cluster の作成前(clusterctl init -i nutanix の実行前)に、.cluster-api/clusterctl.yaml ファイルに下記を追記しておきます。
- EXP_CLUSTER_RESOURCE_SET: "true"
そして、Management クラスタを作成します。
# clusterctl init -i nutanix
Workload Cluster クラスタの作成(CSI Flavor)
Flavor で CSI Driver(-f csi)を指定して、Workload Cluster を作成します。
# clusterctl generate cluster capx02 -f csi | kubectl apply -f - New clusterctl version available: v1.6.0 -> v1.6.1 sigs.k8s.io/cluster-api configmap/user-ca-bundle created configmap/nutanix-ccm created configmap/nutanix-csi created secret/capx02 created secret/nutanix-ccm-secret created clusterresourceset.addons.cluster.x-k8s.io/nutanix-ccm-crs created clusterresourceset.addons.cluster.x-k8s.io/nutanix-csi-crs created kubeadmconfigtemplate.bootstrap.cluster.x-k8s.io/capx02-kcfg-0 created cluster.cluster.x-k8s.io/capx02 created machinedeployment.cluster.x-k8s.io/capx02-wmd created machinehealthcheck.cluster.x-k8s.io/capx02-mhc created kubeadmcontrolplane.controlplane.cluster.x-k8s.io/capx02-kcp created nutanixcluster.infrastructure.cluster.x-k8s.io/capx02 created nutanixmachinetemplate.infrastructure.cluster.x-k8s.io/capx02-mt-0 created
少し待つと、Workload Cluster の Machine リソース(仮想マシン)が Running になります。
# kubectl get machine NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION capx02-kcp-764l5 capx02 capx02-kcp-764l5 nutanix://c4d96221-7f01-4e98-9dfa-724d2768aa13 Running 3m45s v1.26.7 capx02-wmd-ckhs7-xbbd7 capx02 capx02-wmd-ckhs7-xbbd7 nutanix://2bcf2f7a-ebb2-46c0-ae2c-d0aaa5283da7 Running 3m51s v1.26.7
Workload Cluster の Kubeconfig を入手します。
# clusterctl get kubeconfig capx02 > kubeconfig.capx02 New clusterctl version available: v1.6.0 -> v1.6.1 sigs.k8s.io/cluster-api
CNI(Calico)をインストール(手順は 以前の投稿 を参照)すると、Pod がすべて起動されます。
# kubectl --kubeconfig=kubeconfig.capx02 get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-66f6974857-2ww7v 1/1 Running 0 5m42s calico-apiserver calico-apiserver-66f6974857-smppg 1/1 Running 0 5m42s calico-system calico-kube-controllers-fc99f48b6-72qbz 1/1 Running 0 7m30s calico-system calico-node-2jcs8 1/1 Running 0 7m31s calico-system calico-node-kcqsp 1/1 Running 0 7m31s calico-system calico-typha-6656f7cf58-tsqc4 1/1 Running 0 7m31s calico-system csi-node-driver-kr6mf 2/2 Running 0 7m30s calico-system csi-node-driver-vlhbs 2/2 Running 0 7m30s kube-system coredns-787d4945fb-k6vs6 1/1 Running 0 12m kube-system coredns-787d4945fb-nsdjc 1/1 Running 0 12m kube-system etcd-capx02-kcp-764l5 1/1 Running 0 12m kube-system kube-apiserver-capx02-kcp-764l5 1/1 Running 0 12m kube-system kube-controller-manager-capx02-kcp-764l5 1/1 Running 0 12m kube-system kube-proxy-ccrq7 1/1 Running 0 12m kube-system kube-proxy-m79bv 1/1 Running 0 11m kube-system kube-scheduler-capx02-kcp-764l5 1/1 Running 0 12m kube-system kube-vip-capx02-kcp-764l5 1/1 Running 0 12m kube-system nutanix-cloud-controller-manager-7946b47574-gvrg5 1/1 Running 0 12m ntnx-system csi-snapshot-controller-779cf5cbcb-j6hj4 1/1 Running 0 12m ntnx-system csi-snapshot-controller-779cf5cbcb-w2qsc 1/1 Running 0 12m ntnx-system csi-snapshot-webhook-77f95df676-vjtvj 1/1 Running 0 12m ntnx-system csi-snapshot-webhook-77f95df676-zz7n8 1/1 Running 0 12m ntnx-system nutanix-csi-controller-75d894c878-6qv7p 0/5 Pending 0 12m ntnx-system nutanix-csi-controller-75d894c878-7hrcz 5/5 Running 0 12m ntnx-system nutanix-csi-node-gnprw 3/3 Running 0 6m34s tigera-operator tigera-operator-5db468f88d-xtpdp 1/1 Running 0 8m45s
Nutanix CSI Driver がインストールされています。
# kubectl --kubeconfig=kubeconfig.capx02 get csidriver NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE csi.nutanix.com false true false <unset> false Persistent 15m csi.tigera.io true true false <unset> false Ephemeral 10m
以上。
続きはこちら。