VMware vSphere with Tanzu Kubernetes ゲスト クラスタのデフォルトの kubeconfig ファイルには、デフォルトで 10 時間後に期限切れになるトークンが含まれています。これにより、警告メッセージが表示されます。この警告が表示されないようにするには、Kubernetes インフラストラクチャ管理者と協力して、NSX Application Platform の展開中に使用可能な有効期限のないトークンを使用して、有効なスーパーバイザー上の TKG クラスタ構成ファイルを生成します。
デフォルトの kubeconfig ファイル内のトークンの有効期限が切れると、NSX Application Platform の NSX Manager ユーザー インターフェイスに次の警告メッセージが表示されます。
接続できません。Kubernetes 構成が期限切れのため、システムで接続の問題が発生しています。この問題を解決するには、Kubernetes 構成を更新してください。
この警告は、
NSX Application Platform の機能や、現在有効になっている NSX Security 機能には影響しません。ただし、Tanzu Kubernetes ゲスト クラスタで
NSX Application Platform の展開を行ってから 10 時間後にデフォルト トークンを置き換えない場合は、次の操作を実行するたびに有効な(期限切れではない)トークンを生成する必要があります。
- NSX Application Platform の展開
- NSX Application Platform のアップグレード
- NSX Application Platform の削除
NSX Application Platform の展開中に使用できる有効期限のないトークンを使用してスーパーバイザー上の TKG クラスタ構成ファイルを生成するには、次の手順を使用して Kubernetes インフラストラクチャ管理者と連携します。
手順
- 次のコマンドを使用して、vSphere with Tanzu Kubernetes ゲスト クラスタにログインします。
kubectl vsphere login --server <supervisor-cluster_ip> -u <user> --tanzu-kubernetes-cluster-name <tkg-cluster-name> --tanzu-kubernetes-cluster-namespace <namespace>
パラメータは次のとおりです。
- <supervisor-cluster_ip> は、[ワークロード管理] > [スーパーバイザー クラスタ] を選択して、vSphere Client で確認できる制御プレーン ノードのアドレスです。
- <user> は、スーパーバイザー上の TKG クラスタへの管理者アクセス権を持つアカウントです。
- <tkg-cluster-name> は、スーパーバイザー上の TKG クラスタの名前です。
- <namespace> は、このクラスタが存在する vSphere ネームスペースです。
次はその例です。
kubectl vsphere login --server 192.111.33.22 -u [email protected] --tanzu-kubernetes-cluster-name napp-tkg-cluster --tanzu-kubernetes-cluster-namespace napp
- 次の各コマンドを個別に実行して、管理者サービス アカウントを生成し、クラスタ ロールのバインドを作成します。
kubectl create serviceaccount napp-admin -n kube-system
kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
- (必須) (Kubernetes バージョン 1.24 以降の場合)管理者のサービス アカウントの認証トークンを手動で作成します。次の情報を使用します。
- サービス アカウントを使用して YAML ファイルを作成します。napp-admin.yaml というサンプル YAML ファイルの次の内容を使用します。
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: napp-admin
namespace: kube-system
annotations:
kubernetes.io/service-account.name: "napp-admin"
- 次のコマンドを使用して、サービス アカウントを使用して認証トークンを作成します。
kubectl apply -f <filename create above.yaml>
前の手順のサンプル YAML ファイルを使用する場合、使用するコマンドは次のとおりです。
kubectl apply -f napp-admin.yaml
認証トークンまたはシークレットが生成されます。
- 管理者サービス アカウントとクラスタ認証局の認証トークンを取得するには、次のコマンドを個別に実行します。
サポートされている Kubernetes バージョン 1.24 以降の場合は、次のコマンドを使用します。
SECRET=$(kubectl get secrets napp-admin -n kube-system -ojsonpath='{.metadata.name}')
TOKEN=$(kubectl get secret $SECRET -n kube-system -ojsonpath='{.data.token}' | base64 -d)
kubectl get secrets $SECRET -n kube-system -o jsonpath='{.data.ca\.crt}' | base64 -d > ./ca.crt
バージョン 1.24 より前のサポート対象の Kubernetes バージョンの場合は、次のコマンドを使用します。
SECRET=$(kubectl get serviceaccount napp-admin -n kube-system -ojsonpath='{.secrets[].name}')
TOKEN=$(kubectl get secret $SECRET -n kube-system -ojsonpath='{.data.token}' | base64 -d)
kubectl get secrets $SECRET -n kube-system -o jsonpath='{.data.ca\.crt}' | base64 -d > ./ca.crt
- スーパーバイザー URL の TKG クラスタを取得します。コマンド プロンプトで次のコマンドを個別に実行します。
CONTEXT=$(kubectl config view -o jsonpath='{.current-context}')
CLUSTER=$(kubectl config view -o jsonpath='{.contexts[?(@.name == "'"$CONTEXT"'")].context.cluster}')
URL=$(kubectl config view -o jsonpath='{.clusters[?(@.name == "'"$CLUSTER"'")].cluster.server}')
- 有効期限のないトークンを使用して、スーパーバイザー上の TKG クラスタの構成ファイルを生成します。
TO_BE_CREATED_KUBECONFIG_FILE="<file-name>"
パラメータ <file-name> は、作成しようとしている kubeconfig ファイルの名前です。
kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-cluster $CLUSTER --server=$URL --certificate-authority=./ca.crt --embed-certs=true
kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-credentials napp-admin --token=$TOKEN
kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE set-context $CONTEXT --cluster=$CLUSTER --user=napp-admin
kubectl config --kubeconfig=$TO_BE_CREATED_KUBECONFIG_FILE use-context $CONTEXT
- (オプション) 新しい kubeconfig ファイルの生成中に作成された一時ファイルである ca.crt を削除します。
- NSX Application Platform の展開時に、新しく生成された kubeconfig ファイルを使用します。