このページでは、GKE クラスタに Anthos Service Mesh バージョン 1.6.14 をクリーン インストールする方法について説明します。以前のバージョンの Anthos Service Mesh がインストールされている場合は、GKE での Anthos Service Mesh のアップグレードをご覧ください。
始める前に
Anthos Service Mesh をインストールする前に、次のことを確認してください。
認証情報と権限の設定
プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのコントロール プレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"
コマンドを実行すると、空の中かっこ
{}
が返されます。クラスタとのやり取りで必要な認証情報を取得します。
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
現在のユーザーにクラスタ管理者の権限を付与します。この権限は、Anthos Service Mesh に必要なロールベースのアクセス制御(RBAC)ルールを作成するのに必要です。
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
"cluster-admin-binding" already exists
エラーが発生した場合は、無視して既存の cluster-admin-binding を続行しても問題ありません。
インストール ファイルのダウンロード
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 -
ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.6.14-asm.2-linux-amd64.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.6.14-asm.2
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 -
ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.6.14-asm.2-osx.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.6.14-asm.2
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 -
ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.6.14-asm.2-win.zip
このコマンドにより、現在の作業ディレクトリに
istio-1.6.14-asm.2
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.6.14-asm.2
- 利便性を考えて、
/bin
ディレクトリ内のツールを PATH に追加します。export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
リソース構成ファイルの準備
istioctl install
コマンドを実行するときは、コマンドラインで -f istio-operator.yaml
を指定します。このファイルには、Anthos Service Mesh で必要なプロジェクトとクラスタに関する情報が含まれています。プロジェクトとクラスタの情報を設定できるように、istio-operator.yaml
と他のリソース構成ファイルを含むパッケージをダウンロードする必要があります。
開始するには、使用する認証局(CA)に基づいてダウンロードするパッケージを選択します。
asm
: thumb_up_alt このパッケージは新規インストールに推奨される Mesh CA を有効にします。asm-citadel
: 必要に応じて、Citadel を CA として有効にすることもできます。このパッケージを選択する前に、認証局の選択で詳細をご確認ください。
リソース構成ファイルを準備するには:
Anthos Service Mesh パッケージのリソース構成ファイル用に新しいディレクトリを作成します。クラスタ名をディレクトリ名として使用することをおすすめします。
Anthos Service Mesh パッケージをダウンロードするディレクトリに変更します。
CA に基づいて、使用するパッケージをダウンロードします。
Mesh CA
asm
パッケージをダウンロードします。これにより、Mesh CA が有効になります。kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
Citadel
asm-citadel
パッケージをダウンロードします。これにより、Citadel が CA として使用できるようになります。kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
クラスタが作成されたプロジェクトのプロジェクト ID を設定します。
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
フリート ホスト プロジェクトのプロジェクト番号を設定します。
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
クラスタ名を設定します。
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
デフォルトのゾーンまたはリージョンを設定します。
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
リビジョン ラベルを使用するように Webhook の検証を設定します。
kpt cfg set asm anthos.servicemesh.rev asm-1614-2
Anthos Service Mesh をインストールするときに、
istiod
にリビジョン ラベルを設定します。検証 Webhook に同じリビジョンを設定する必要があります。使用する構成プロファイルを設定します。
すべてのクラスタが同じプロジェクトにある場合、
asm-gcp
プロファイルを設定します。kpt cfg set asm anthos.servicemesh.profile asm-gcp
サービス メッシュに別のプロジェクトのクラスタが含まれている場合は、
asm-gcp-multiproject
プロファイルを設定します(ベータ版)。kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
asm-gcp-multiproject
プロファイルを設定してasm
パッケージをダウンロードすると、Mesh CA が有効になります。その場合、マルチクラスタ / マルチプロジェクトのサービス メッシュを形成する他のプロジェクトに信頼ドメイン エイリアスを構成する必要があります。それ以外の場合は、この手順をスキップします。マルチクラスタ / マルチプロジェクト メッシュに含まれるすべてのクラスタのプロジェクト ID を取得します。
各クラスタのプロジェクト ID に、信頼ドメイン エイリアスを設定します。たとえば、3 つのプロジェクトにクラスタがある場合は、次のコマンドを実行して、
PROJECT_ID_1
、PROJECT_ID_2
、PROJECT_ID_3
を各クラスタのプロジェクト ID に置き換えます。kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog
他のプロジェクトにクラスタを構成する場合は、同じコマンドを使用できます。
信頼ドメイン エイリアスにより、Mesh CA は他のプロジェクトのクラスタ上のワークロードを認証できます。Anthos Service Mesh をインストールした後、信頼ドメイン エイリアスを設定するだけでなく、クラスタ間で負荷分散を有効にする必要があります。
kpt
セッターの値を出力します。kpt cfg list-setters asm
コマンドの出力で、次のセッターの値が正しいことを確認します。
- anthos.servicemesh.rev
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
Anthos Service Mesh のインストール
現在の
kubeconfig
コンテキストが、Anthos Service Mesh をインストールするクラスタを指していることを確認します。kubectl config current-context
出力は次の形式になります。
gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME
kubeconfig
コンテキストとkpt
セッターの値は一致する必要があります。必要に応じて、gcloud container clusters get-credentials
コマンドを実行して、現在のkubeconfig
コンテキストを設定します。Citadel を認証局として使用し、カスタム CA を使用する場合は、次のコマンドを実行します。それ以外の場合は、次のステップに進みます。
kubectl create namespace istio-system
kubectl create secret generic cacerts \ -n istio-system \ --from-file=ca-cert.pem \ --from-file=ca-key.pem \ --from-file=root-cert.pem \ --from-file=cert-chain.pem
詳細については、既存の CA 証明書への接続をご覧ください。
次のコマンドを実行し、
istio-operator.yaml
ファイルで設定した構成プロファイルを使用して Anthos Service Mesh をインストールします。サポートされているオプション機能を有効にするには、コマンドラインで-f
と YAML のファイル名を指定します。詳細については、オプション機能の有効化をご覧ください。istioctl install \ -f asm/cluster/istio-operator.yaml \ --set revision=asm-1614-2
--set revision
引数は、istio.io/rev=asm-1614-2
形式のリビジョン ラベルをistiod
に追加します。リビジョン ラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定のistiod
リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod
のラベルと一致するリビジョンのラベルを付ける必要があります。検証 Webhook を構成して、リビジョン ラベルで
istiod
サービスを検出できるようにします。kubectl apply -f asm/istiod-service.yaml
このコマンドは、構成の適用前に検証 Webhook が構成を自動的にチェックするサービス エントリを作成します。
asm-gcp
プロファイルを使用した場合は、次のコマンドを実行して、Canonical Service コントローラをデプロイします。kubectl apply -f asm/canonical-service/controller.yaml
このコマンドでは、Canonical Service コントローラをクラスタにデプロイします。Canonical Service コントローラは、同じ論理サービスに属するワークロードをグループにまとめ、Google Cloud コンソールのサービス ダッシュボードで追加機能のロックを解除する必要があります。詳細については、Canonical Service コントローラの有効化と無効化をご覧ください。
asm-gcp-multiproject
プロファイルを使用した場合、現在のテレメトリー データは、Google Cloud コンソールの Anthos Service Mesh ダッシュボードに表示されません。ただし、プロジェクトごとに Cloud Logging でログを表示し、Cloud Monitoring で指標を表示できます。
自動相互 TLS(自動 mTLS)はデフォルトで有効になっています。自動 mTLS の場合、クライアント サイドカー プロキシがサーバーにサイドカーがあるかどうかを自動的に検出します。クライアント サイドカーは、サイドカーを含むワークロードに mTLS を送信し、サイドカーなしでワークロードに書式なしテキストのトラフィックを送信します。
コントロール プレーン コンポーネントを確認する
istio-system
のコントロール プレーン Pod が稼働していることを確認します。
kubectl get pod -n istio-system
予想される出力は次のようになります。
NAME READY STATUS RESTARTS AGE istio-ingressgateway-cff9f5c7d-qg4ls 1/1 Running 0 7m5s istio-ingressgateway-cff9f5c7d-vlkzb 1/1 Running 0 7m20s istiod-66b587859c-886gx 1/1 Running 0 7m33s istiod-66b587859c-dfs2j 1/1 Running 0 7m33s
サイドカー プロキシの挿入
Anthos Service Mesh は、サイドカー プロキシを使用してネットワークのセキュリティ、信頼性、オブザーバビリティを強化します。Anthos Service Mesh では、これらの機能がアプリケーションのプライマリ コンテナから抽出され、同じ Pod 内の個別のコンテナとして提供される共通のプロセス外プロキシに実装されます。
ワークロードをデプロイする前に、Anthos Service Mesh がトラフィックをモニタリングおよび保護できるように、サイドカー プロキシ インジェクションを構成します。
Anthos Service Mesh のインストール前にクラスタで実行されていたワークロードの場合、現在の Anthos Service Mesh バージョンを使用するように、サイドカー プロキシを挿入または更新する必要があります。新しいワークロードをデプロイする前に、Anthos Service Mesh がトラフィックをモニタリングおよび保護できるように、サイドカー プロキシ インジェクションを構成します。
サイドカー自動挿入を有効にするには、istiod
で設定したリビジョンと同じ名前を使用して、名前空間にラベルを付けます。次のコマンドを実行して、istiod
のラベルを表示します。
kubectl -n istio-system get pods -l app=istiod --show-labels
リビジョン ラベル istio.io/rev=asm-1614-2
が出力にあることを確認します。これは、自動挿入を有効にするために使用するラベルです。自動挿入は、次のように 1 つのコマンドで有効にできます。
kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --overwrite
ここで、NAMESPACE
はアプリケーションのサービスの名前空間の名前です。名前空間を明示的に作成していない場合は default
です。
詳細については、サイドカー プロキシの挿入をご覧ください。
Anthos Service Mesh ダッシュボードの表示
このセクションの内容は、asm-gcp
構成プロファイルを使用して Anthos Service Mesh がインストールされている場合にのみ適用されます。asm-gcp-multiproject
プロファイルを使用して Anthos Service Mesh をインストールした場合、テレメトリー データは Google Cloud コンソールの Anthos Service Mesh ダッシュボードに表示されません。
サイドカー プロキシが挿入されたクラスタにワークロードをデプロイすると、Google Cloud コンソールの Anthos の [サービス メッシュ] ページで、Anthos Service Mesh が提供するすべてのオブザーバビリティ機能を確認できます。ワークロードをデプロイした後、Google Cloud コンソールにテレメトリー データが表示されるまでに 1~2 分ほどかかることがあります。
Google Cloud コンソールでの Anthos Service Mesh へのアクセスは、Identity and Access Management(IAM)によって制御されます。Anthos Service Mesh ページにアクセスするには、プロジェクト オーナーがユーザーに対して、プロジェクト編集者または閲覧者のロール、または、より限定的なロール(Google Cloud コンソールでの Anthos Service Mesh に対するアクセス制御を参照)を付与する必要があります。
Google Cloud コンソールで、[Anthos Service Mesh] に移動します。
メニューバーのプルダウン リストから Google Cloud プロジェクトを選択します。
複数のサービス メッシュがある場合は、[サービス メッシュ] プルダウン リストからメッシュを選択します。
詳細については、Google Cloud コンソールでの Anthos Service Mesh の確認をご覧ください。
Anthos Service Mesh ページに加えて、サービスに関連する指標(特定のサービスで受信したリクエストの数など)が Cloud Monitoring に送信され、Metrics Explorer に表示されます。
指標を表示するには:
Google Cloud コンソールで、[Monitoring] ページに移動します。
[リソース] > [Metrics Explorer] を選択します。
指標の完全なリストについては、Cloud Monitoring のドキュメントの Istio 指標をご覧ください。
クラスタの登録
Google Cloud コンソールで統合ユーザー インターフェースにアクセスするには、クラスタをプロジェクトのフリートに登録する必要があります。フリートは、Google Cloud 外のクラスタを含むクラスタとそのワークロードを表示して管理するために統合された方法を提供します。
クラスタの登録については、フリートへのクラスタの登録をご覧ください。