VMware vSphere with Tanzu Kubernetes ゲスト クラスタのデフォルトの kubeconfig ファイルには、デフォルトで 10 時間後に期限切れになるトークンが含まれています。これにより、警告メッセージが表示されます。この警告が表示されないようにするには、Kubernetes インフラストラクチャ管理者と協力して、NSX Application Platform の展開中に使用可能な有効期限のないトークンを使用して、有効なスーパーバイザー上の TKG クラスタ構成ファイルを生成します。

デフォルトの kubeconfig ファイル内のトークンの有効期限が切れると、NSX Application PlatformNSX 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 インフラストラクチャ管理者と連携します。

手順

  1. 次のコマンドを使用して、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
  2. 次の各コマンドを個別に実行して、管理者サービス アカウントを生成し、クラスタ ロールのバインドを作成します。
    kubectl create serviceaccount napp-admin -n kube-system
    
    kubectl create clusterrolebinding napp-admin --serviceaccount=kube-system:napp-admin --clusterrole=cluster-admin
  3. (必須) (Kubernetes バージョン 1.24 以降の場合)管理者のサービス アカウントの認証トークンを手動で作成します。次の情報を使用します。
    1. サービス アカウントを使用して 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"
    2. 次のコマンドを使用して、サービス アカウントを使用して認証トークンを作成します。
      kubectl apply -f <filename create above.yaml>
      前の手順のサンプル YAML ファイルを使用する場合、使用するコマンドは次のとおりです。
      kubectl apply -f napp-admin.yaml
      認証トークンまたはシークレットが生成されます。
  4. 管理者サービス アカウントとクラスタ認証局の認証トークンを取得するには、次のコマンドを個別に実行します。
    サポートされている 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
  5. スーパーバイザー 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}')
  6. 有効期限のないトークンを使用して、スーパーバイザー上の 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
  7. (オプション) 新しい kubeconfig ファイルの生成中に作成された一時ファイルである ca.crt を削除します。
  8. NSX Application Platform の展開時に、新しく生成された kubeconfig ファイルを使用します。