NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

CAPX の Kubernetes クラスタに Nutanix CSI Driver を追加してみる。

CAPX(Cluster API Provider Nutanix Cloud Infrastructure)で、Nutanix CSI Driver がインストールされた Workload Cluster を作成してみます。

このあたりを参考にすすめます。

今回の内容です。

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 スクリプトをダウンロードします。

# curl -OL https://raw.githubusercontent.com/nutanix-cloud-native/cluster-api-provider-nutanix/main/scripts/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"

gist.github.com

そして、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

以上。

続きはこちら。

 

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。