特徴的な状態の Conditions について

注: 正規サービスは Cloud Service Mesh バージョン 1.6.8 以降で自動的にサポートされます。

このページでは、Cloud Service Mesh クラスタまたはフリートで報告された Conditions を解釈して対処する方法について説明します。

Conditions を確認するには、次のコマンドを実行します。

  gcloud container fleet mesh describe --project FLEET_PROJECT

出力には、クラスタの membershipStatesconditions が含まれる場合があります。

  ...
  membershipStates:
    projects/test-project/locations/us-central1/memberships/my-membership:
      servicemesh:
        conditions:
          - code: <CONDITION_CODE>
            details: ...
            documentationLink: ....
            severity: ...

code の値については、このページで詳しく説明しています。

NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED

メンバーシップの Conditions フィールドに NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED エラーコードが表示されることがあります。

    membershipStates:
      projects/test-project/locations/us-central1/memberships/my-membership:
        servicemesh:
          conditions:
          - code: NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED
            details: One or more node pools have workload identity federation disabled.
            documentationLink: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
            severity: ERROR
          controlPlaneManagement:
            details:
            - code: REVISION_FAILED_PRECONDITION
              details: Required in-cluster components are not ready. This will be retried
                within 15 minutes.
            implementation: TRAFFIC_DIRECTOR
            state: FAILED_PRECONDITION

このエラーは、GKE クラスタのすべてのノードプールで Workload Identity 連携が有効になっていない場合に表示されます。これが、Cloud Service Mesh のインストールの前提条件であるためです。

このエラー メッセージを解決するには、すべてのノードプールで Workload Identity 連携を有効にするの手順に沿って操作する必要があります。この手順は、具体的なクラスタのケースによって異なる場合があります。

有効にすると、エラー メッセージは自動的に削除され、クラスタは ACTIVE 状態に戻ります。問題が解決せず、さらにサポートが必要な場合は、サポートの利用をご覧ください。

MESH_IAM_PERMISSION_DENIED

このエラーは、サービス アカウントにはフリート プロジェクトにアクセスするための十分な権限がないことを示しています。トラブルシューティングの手順は次のとおりです。

  1. サービス アカウントに Anthos Service Mesh Service Agent ロールが付与されているかどうかを確認します。IAM 権限を確認して追加する方法の詳細については、異常なエラーとして報告されているリビジョンに移動し、そこで同じ手順を使用します。

  2. 権限を確認しても問題が解決しない場合は、Google カスタマー サポートにお問い合わせください。

MESH_IAM_CROSS_PROJECT_PERMISSION_DENIED

このエラーは、フリート プロジェクトのサービス アカウントに、別のプロジェクト(クラスタ プロジェクトまたはネットワーク プロジェクト)にアクセスするための十分な権限がないことを示しています。

共有 VPC の場合は、すべてのフリート プロジェクト サービス アカウントに共有 VPC ネットワーク プロジェクトの Anthos Service Mesh Service Agent ロールが付与されていることを確認してください。

GKE フリート プロジェクトとクラスタ プロジェクトのシナリオの場合は、クラスタ プロジェクトでフリート プロジェクトのサービス アカウントに Anthos Service Mesh Service Agent ロールが付与されていることを確認してください。

トラブルシューティング コマンドの例:

  1. ネットワーク プロジェクトまたはクラスタ プロジェクトのサービス アカウントで、フリート プロジェクトのサービス アカウントに Anthos Service Mesh Service Agent ロールが付与されているかどうかを確認します。付与されていない場合は、次のコマンドを実行します。

    gcloud projects add-iam-policy-binding NETWORK_OR_CLUSTER_PROJECT_ID  \
        --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \
        --role roles/anthosservicemesh.serviceAgent
    

    また、このバインディングが自動で削除されないことを確認します。

  2. 権限を確認しても問題が解決しない場合は、Google カスタマー サポートにお問い合わせください。

CONFIG_VALIDATION_ERROR

このエラーは、フリート内の 1 つ以上のメンバーシップに適用されたメッシュ関連の構成の一部が正常に適用されなかったことを示しています。エラーの詳細には、この問題に対する最善の対応方法について説明されています。

  membershipStates:
    projects/test-project/locations/us-central1/memberships/my-membership:
      servicemesh:
        conditions:
        - code: CONFIG_VALIDATION_ERROR
          details: 'Unsupported ProxyConfig fields: [proxyconfig.statNameLength]'
          severity: ERROR
        controlPlaneManagement:

特定の構成で構成検証エラーが発生した場合は、ユーザーによる操作が必要です。たとえば、サポートされていない API フィールドの使用に関するエラーは、Mesh API から問題のある構成を削除するのが最善の対応方法です。

Cloud コンソールで、[Kubernetes Engine] > [シークレットと ConfigMap] > [istio-asm-managed](ConfigMap の名前は使用しているリリース チャンネルによって異なります。例: istio-asm-managed-stable、istio-asm-managed-rapid)に移動し、[YAML] タブを選択します。

たとえば、meshConfig.configSources はサポートされなくなりました。

apiVersion: v1
data:
  mesh: |
    enablePrometheusMerge: true
    trustDomain: "foobar.svc.id.goog"
    trustDomainAliases:
      - cluster.local

    configSources:
      - address: k8s://
      - address: fs:///var/lib/istio/config/data