Anthos Service Mesh 1.4 はサポート期間が終了し、今後はサポートされません。以前のバージョンからのアップグレードをご覧ください。

最新のドキュメントを表示するか、他の利用可能なバージョンを選択します。

Anthos CLI を使用した Anthos Service Mesh のインストール

このガイドでは、Anthos コマンドライン インターフェース(CLI)を使用して次の機能を備えた新しい Google Cloud GKE クラスタに、Anthos Service Mesh 1.4.10-asm.18 をインストールする方法を説明します。

現在、Anthos CLI では既存の GKE クラスタまたは Anthos clusters on VMware へのインストールをサポートしていません。

始める前に

このガイドでは、次のものが用意されていることを前提としています。

要件

  • Anthos の試用版ライセンスまたはサブスクリプションが必要です。詳細については、Anthos 料金ガイドをご覧ください。

  • GKE クラスタは次の要件を満たす必要があります。

  • サービス メッシュに含めるには、サービスポートに名前を付ける必要があります。名前には、name: protocol[-suffix] の構文でポートのプロトコルを含める必要があります。角かっこは、ダッシュで始まるオプションの接尾辞です。詳細については、サービスポートの命名をご覧ください。

  • Anthos Service Mesh を限定公開クラスタにインストールする場合に、自動サイドカー インジェクションを使用するには、ポート 9443 を開くファイアウォール ルールを追加する必要があります。ファイアウォール ルールを追加せず、自動サイドカー インジェクションを有効にすると、ワークロードのデプロイでエラーが発生します。ファイアウォール ルールの追加方法については、特定のユースケースに対するファイアウォール ルールの追加をご覧ください。

  • 組織にサービス境界を作成した場合は、Mesh CA サービスを境界に追加する必要があります。詳細については、サービス境界へのメッシュ CA の追加をご覧ください。

制限事項

1 つの Google Cloud プロジェクトにインストールできる Anthos Service Mesh は 1 つだけです。1 つのプロジェクトで複数のメッシュ デプロイはサポートされていません。

証明書データ

Mesh CA からの証明書には、アプリケーションのサービスに関する次のデータが含まれます。

  • Google Cloud プロジェクト ID。
  • GKE 名前空間
  • GKE サービス アカウント名

kpt と Anthos CLI のインストール

kpt を使用して Anthos CLI をインストールします。また、kpt を使用して、GitHub に保存されている Anthos Service Mesh リソース構成ファイルをダウンロードして管理、カスタマイズします。構成ファイルには、特定の Google Cloud プロジェクトと GKE クラスタの情報のプレースホルダが含まれています。構成ファイルをカスタマイズした後、独自の GitHub リポジトリや他のソース管理システムに対して確認できます。

  1. Cloud SDK で認証します。

    gcloud auth login
    
  2. Cloud プロジェクト ID を取得し、その環境変数を作成します。

    export PROJECT_ID=YOUR_PROJECT_ID
  3. gcloud コマンドライン ツールのデフォルトのプロジェクト ID を設定します。

    gcloud config set project ${PROJECT_ID}
    
  4. 新しいクラスタのゾーンまたはリージョンマシンタイプを選択します。Anthos Service Mesh で必要最小限なマシンタイプは n1-standard-4 です。任意のリリース チャンネル オプションを使用できます。

    • シングルゾーン クラスタを作成する場合は、次のコマンドを実行して、使用可能な GCP ゾーンのリストを取得します。

      gcloud compute zones list
      
    • リージョン クラスタを作成する場合は、次のコマンドを実行して、使用可能なリージョンのリストを取得します。

      gcloud compute regions list
      
    • マシンタイプのリストを取得するには:

      gcloud compute machine-types list | more
      
  5. 次の環境変数を作成します。

    • クラスタ名を設定します。

      export CLUSTER_NAME=YOUR_CLUSTER_NAME

      クラスタ名に使用できるのは、英小文字、数字、- のみです。先頭は英字、末尾は英数字を使用し、40 文字以下にする必要があります。

    • CLUSTER_LOCATION をクラスタのゾーンまたはリージョンに設定します。

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  6. Anthos CLI をインストールしてコンポーネントを更新します。Cloud Shell を使用する場合は、次のコマンドに sudo を追加します。

    gcloud components install kpt anthoscli alpha
    gcloud components update --version 292.0.0
  7. 必要に応じて、Anthos Service Mesh パッケージ用の新しいディレクトリを作成し、cd を実行します。

  8. Anthos Service Mesh パッケージを現在の作業ディレクトリにダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.4-asm .
    

    デフォルトでは、kpt pkg get コマンドはパッケージ ファイルのコンピューティング ゾーンを現在の構成に合わせて入力します。

  9. 構成ファイルに次の値を設定します。

    • プロジェクト ID を設定します。

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • クラスタ名を設定します。

      kpt cfg set asm cluster-name ${CLUSTER_NAME}
    • デフォルトのゾーンまたはリージョンを設定します。

      kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
    • 必要に応じて、リリース チャンネルをデフォルトの REGULAR から変更します。次のコマンドで、YOUR_CHANNELSTABLE または RAPID に置き換えます。

      kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL

      各チャネルの説明については、利用可能なチャネルをご覧ください。

Anthos Service Mesh を新しいクラスタにインストールする

  1. 次のコマンドを実行して新しいクラスタを作成し、カスタマイズした Anthos Service Mesh 構成ファイルを使用して Anthos Service Mesh をインストールします。

    anthoscli apply -f asm
    
  2. デプロイが完了するまで待ちます。

    kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
    

    出力:

    deployment.extensions/istio-galley condition met
    deployment.extensions/istio-ingressgateway condition met
    deployment.extensions/istio-pilot condition met
    deployment.extensions/istio-sidecar-injector condition met
    deployment.extensions/promsd condition met

コントロール プレーン コンポーネントを確認する

istio-system のコントロール プレーン Pod が稼働していることを確認します。

kubectl get pod -n istio-system

出力は次のようになります。

NAME                                      READY   STATUS      RESTARTS   AGE
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-nodeagent-74w69                     1/1     Running     0          18m
istio-nodeagent-7524w                     1/1     Running     0          18m
istio-nodeagent-7652w                     1/1     Running     0          18m
istio-nodeagent-7948w                     1/1     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

クラスタ内の各ノードの istio-nodeagent のインスタンスが表示されます。Citadel OSS Istio コンポーネントを置き換える Mesh CA は、サービス メッシュで実行されているワークロードの mTLS 証明書を発行するノード エージェントを作成します。

Mesh CA が機能していることを確認します。

  kubectl get pods -n istio-system -l app=istio-nodeagent \
  --output=jsonpath={​.items..metadata.name} -o yaml | grep CA_ADDR -A 1

予想される出力: meshca.googleapis.com:443.

クラスタの登録

Cloud Console で統合ユーザー インターフェースにアクセスするには、クラスタをプロジェクトのフリートに登録する必要があります。フリートは、Google Cloud 外のクラスタを含むクラスタとそのワークロードを表示して管理するために統合された方法を提供します。

Google Cloud のサービス アカウントと鍵ファイルを作成する

クラスタを登録するには、サービス アカウントの認証情報を含む JSON ファイルが必要です。最小権限の原則に従い、登録するクラスタごとに個別のサービス アカウントを作成することをおすすめします。

サービス アカウントとキーファイルを作成するには:

  1. サービス アカウントの名前を選択して、その環境変数を作成します。

    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    
  2. サービス アカウントを作成します。

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. プロジェクトのサービス アカウントをすべて一覧表示して、サービス アカウントが作成されたことを確認します。

    gcloud iam service-accounts list
  4. サービス アカウントに gkehub.connect IAM ロールをバインドします。

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
       --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/gkehub.connect"
  5. JSON ファイルを保存するローカル ファイルパスの環境変数を作成します。ファイル名にサービス アカウント名とプロジェクト ID を使用することをおすすめします(例: /tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json)。

    export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
  6. サービス アカウントの秘密鍵の JSON ファイルをダウンロードします。

    gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \
       --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

クラスタを登録する

次のコマンドを使用して、MEMBERSHIP_NAME を Hub に登録されているクラスタを一意に識別する名前に置き換えます。

gcloud container hub memberships register MEMBERSHIP_NAME \
    --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \
    --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}

次のような出力が返されます。

kubeconfig entry generated for CLUSTER_NAME.
Waiting for membership to be created...done.
Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME]
Generating the Connect Agent manifest...
Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]...
Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect].
Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.

このサービス アカウント キーは、creds-gcp という名前のシークレットとして gke-connect 名前空間に保存されます。

クラスタの登録の詳細については、Connect のドキュメントでクラスタの登録をご覧ください。

Pod のセキュリティ ポリシーを有効にする

サービス メッシュのセキュリティを最適化するには、Pod のセキュリティ ポリシーを有効にすることをおすすめします。

サイドカー プロキシの挿入

Anthos Service Mesh は、サイドカー プロキシを使用してネットワークのセキュリティ、信頼性、オブザーバビリティを強化します。Anthos Service Mesh では、これらの機能がアプリケーションのプライマリ コンテナから抽出され、同じ Pod 内の個別のコンテナとして提供される共通のプロセス外プロキシに実装されます。

ワークロードをデプロイする前に、Anthos Service Mesh がトラフィックをモニタリングおよび保護できるように、サイドカー プロキシ インジェクションを構成します。

自動サイドカー インジェクションは、次のように 1 つのコマンドで有効にできます。

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

ここで、NAMESPACE はアプリケーションのサービスの名前空間の名前です。名前空間を明示的に作成していない場合は default です。

詳細については、サイドカー プロキシの挿入をご覧ください。

Anthos Service Mesh のページの表示

サイドカー プロキシが挿入されたクラスタにワークロードをデプロイすると、Cloud Console の Anthos Service Mesh ページで、Anthos Service Mesh が提供するすべてのオブザーバビリティ機能を確認できます。ワークロードをデプロイした後、Cloud Console にテレメトリー データが表示されるまでに 1~2 分ほどかかることがあります。

Cloud Console での Anthos サービス メッシュへのアクセスは、Identity and Access Management(IAM)によって制御されます。Anthos Service Mesh ページにアクセスするには、プロジェクト オーナーがユーザーに対して、プロジェクト編集者または閲覧者のロール、または、より限定的なロール(Cloud Console での Anthos Service Mesh へのアクセスの制御を参照)を付与する必要があります。

  1. Google Cloud Console で、[Anthos Service Mesh] に移動します。

    [Anthos Service Mesh] に移動する

  2. メニューバーのプルダウン リストから Cloud プロジェクトを選択します。

  3. 複数のサービス メッシュがある場合は、[サービス メッシュ] プルダウン リストからメッシュを選択します。

詳細については、Cloud Console での Anthos Service Mesh の確認をご覧ください。

Anthos Service Mesh ページに加えて、サービスに関連する指標(特定のサービスで受信したリクエストの数など)が Cloud Monitoring に送信され、Metrics Explorer に表示されます。

指標を表示するには:

  1. Google Cloud Console で、[Monitoring] ページに移動します。

    [Monitoring] に移動

  2. [Resources] > [Metrics Explorer] を選択します。

指標の完全なリストについては、Cloud Monitoring のドキュメントの Istio 指標をご覧ください。

kpt を使用したサンプルのインストール

必要に応じて、kpt を使用して Hipster サンプルをクラスタにインストールできます。

  1. サンプルをダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. 自動サイドカー インジェクションを有効にします。

    kubectl label namespace default istio-injection=enabled
    
  3. サンプルをクラスタにデプロイします。

    kubectl apply -f hipster-demo
    

    サンプルを実行したところで、次に Cloud Console で Anthos Service Mesh を調べます。トポロジグラフにメッシュ内のサービスが表示されるまでに、最長で 5 分間を要する場合があります。

確認が終わったら、Hipster サンプルを削除します。

kubectl delete -f hipster-demo

次のステップ