バージョン 1.8

同じバージョンの再インストール

install_asm スクリプトは istioctl install を呼び出し、インストール、アップグレード、Istio の移行用に Anthos Service Mesh コントロール プレーン コンポーネント(istiodistio-ingressgateway)をデプロイします。このスクリプトは istioctl install を使用するので、オプション機能を有効にするために Anthos Service Mesh をカスタマイズする必要がある場合は、新しい構成を含むコントロール プレーンを再インストールする必要があります。また、サイドカー プロキシに更新されたコントロール プレーン構成が再挿入されるように、ワークロードを再デプロイする必要もあります。

install_asm スクリプトを使用して、同じバージョンの Anthos Service Mesh をクラスタに再インストールすることはできません。そのスクリプトを使用してインストール、アップグレード、または Istio から移行した場合で、構成を変更するために同じバージョンを再インストールする必要がある場合は、istioctl install コマンドを使用します。istioctl install を実行すると、既存の構成が上書きされます。そのため、既存のインストールをカスタマイズした場合は、以前のインストールの YAML ファイルと、有効にするオプション機能用の IstioOperator YAML ファイルを含める必要があります。-f オプションを指定して、YAML ファイルを istioctl install に渡します。

始める前に、必要なツールがインストールされていることを確認してください。

認証情報と権限の設定

自分以外のユーザーが install_asm スクリプトを実行した場合、またはスクリプトを実行したものの、別のクラスタで動作するように kubeconfig コンテキストを変更した場合は、次の手順を行い、Anthos Service Mesh をインストールするために必要な権限があることを確認してください。

  1. Cloud SDK で認証します。

    gcloud auth login
    
  2. クラスタとのやり取りで必要な認証情報を取得します。このコマンドは、クラスタに対して kubectl の現在のコンテキストも設定します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID
    
  3. 現在のユーザーにクラスタ管理者の権限を付与します。この権限は、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 を続行しても問題ありません。

インストール ファイルのダウンロード

    Linux

  1. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-linux-amd64.tar.gz
  2. 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.8.1-asm.5-linux-amd64.tar.gz.1.sig istio-1.8.1-asm.5-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    想定される出力は Verified OK です。

  3. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
    tar xzf istio-1.8.1-asm.5-linux-amd64.tar.gz

    このコマンドにより、現在の作業ディレクトリに istio-1.8.1-asm.5 という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。

    • samples ディレクトリにあるサンプル アプリケーション
    • Anthos Service Mesh のインストールに使用する istioctl コマンドライン ツールは、bin ディレクトリにあります。
    • Anthos Service Mesh 構成プロファイルは manifests/profiles ディレクトリにあります。

  4. Mac OS

  5. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-osx.tar.gz
  6. 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.8.1-asm.5-osx.tar.gz.1.sig istio-1.8.1-asm.5-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    想定される出力は Verified OK です。

  7. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
    tar xzf istio-1.8.1-asm.5-osx.tar.gz

    このコマンドにより、現在の作業ディレクトリに istio-1.8.1-asm.5 という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。

    • samples ディレクトリにあるサンプル アプリケーション
    • Anthos Service Mesh のインストールに使用する istioctl コマンドライン ツールは、bin ディレクトリにあります。
    • Anthos Service Mesh 構成プロファイルは manifests/profiles ディレクトリにあります。

  8. Windows

  9. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-win.zip
  10. 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.8.1-asm.5-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.8.1-asm.5-win.zip.1.sig istio-1.8.1-asm.5-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    想定される出力は Verified OK です。

  11. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
    tar xzf istio-1.8.1-asm.5-win.zip

    このコマンドにより、現在の作業ディレクトリに istio-1.8.1-asm.5 という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。

    • samples ディレクトリにあるサンプル アプリケーション
    • Anthos Service Mesh のインストールに使用する istioctl コマンドライン ツールは、bin ディレクトリにあります。
    • Anthos Service Mesh 構成プロファイルは manifests/profiles ディレクトリにあります。

  12. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.8.1-asm.5
  13. 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
    export PATH=$PWD/bin:$PATH

リソース構成ファイルの準備

istioctl install コマンドを実行するときは、コマンドラインで -f istio-operator.yaml を指定します。このファイルには、Anthos Service Mesh で必要なプロジェクトとクラスタに関する情報が含まれています。プロジェクトとクラスタの情報を設定できるように、istio-operator.yaml と他のリソース構成ファイルを含むパッケージをダウンロードする必要があります。

リソース構成ファイルを準備するには:

  1. Anthos Service Mesh パッケージのリソース構成ファイル用に新しいディレクトリを作成します。クラスタ名をディレクトリ名として使用することをおすすめします。

  2. Anthos Service Mesh パッケージをダウンロードするディレクトリに変更します。

  3. パッケージをダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm asm
    
  4. クラスタが作成されたプロジェクトのプロジェクト ID を設定します。

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

    kpt cfg set asm gcloud.container.cluster CLUSTER_NAME
    
  6. デフォルトのゾーンまたはリージョンを設定します。

    kpt cfg set asm gcloud.compute.location CLUSTER_LOCATION
    
  7. リビジョンラベルを使用するように Webhook の検証を設定します。

    kpt cfg set asm anthos.servicemesh.rev asm-181-5
    

    Anthos Service Mesh をインストールするときに、istiodリビジョン ラベルを設定します。検証 Webhook に同じリビジョンを設定する必要があります。

  8. kpt セッターの値を出力します。

     kpt cfg list-setters asm
    

    コマンドの出力で、次のセッターの値が正しいことを確認します。

    • anthos.servicemesh.rev
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project

    他のセッターの値は無視してかまいません。

  9. 以前に install_asm スクリプトを実行したとき、--option を使用して構成をカスタマイズした場合、選択したオプションに対応する YAML ファイルは asm/istio/options/ ディレクトリにあります。istioctl install コマンドを実行するときに、この YAML ファイルを指定する必要があります。

  10. 以前に install_asm スクリプトを実行したとき、--custom_overlay OVERLAY_FILE を使用して構成をカスタマイズした場合は、istioctl install コマンドを実行するときに、その YAML ファイルを使用できるようにする必要があります。

Anthos Service Mesh のインストール

Mesh CA

  1. 現在の kubeconfig コンテキストが、Anthos Service Mesh をインストールするクラスタを指していることを確認します。

    kubectl config current-context
    

    出力は次の形式になります。

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    kubeconfig コンテキストと kpt セッターの値は一致する必要があります。必要に応じて、gcloud container clusters get-credentials コマンドを実行して現在の kubeconfig コンテキストを設定します。

  2. istioctl install を実行して、新しい構成で Anthos Service Mesh を再インストールします。このコマンドでは、次の要素を置き換えてください。

    • CONFIG_FILE_1IstioOperator YAML ファイルに置き換えます。コマンドラインでファイルを指定する順序は重要です。コマンドに示されているように、multicluster.yaml の後に YAML ファイルを必ず指定してください。

    • 複数の IstioOperator YAML ファイルがある場合は、-f オプションとともに、別々の行にファイルを 1 つずつ含めます。各行の末尾には必ずスラッシュを付けます。

    istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/multicluster.yaml \
      -f CONFIG_FILE_1.yaml \
      ...
      # -f CONFIG_FILE_n.yaml \
      --revision=asm-181-5
    
    • --revision 引数は、istio.io/rev=asm-181-5 形式のリビジョンラベルを istiod に追加します。リビジョンラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod Deployment に一致するリビジョンにラベルを付ける必要があります。

    • istio-operator.yaml ファイルには、以前に kpt cfg set を介して設定したプロジェクトとクラスタ情報が含まれます。

    • multicluster.yaml ファイルは、マルチクラスタ構成で Anthos Service Mesh が必要とする設定を構成します。 メッシュにクラスタが 1 つしかない場合でも、このファイルを含めます。

Citadel

  1. 現在の kubeconfig コンテキストが、Anthos Service Mesh をインストールするクラスタを指していることを確認します。

    kubectl config current-context
    

    出力は次の形式になります。

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    kubeconfig コンテキストと kpt セッターの値は一致する必要があります。必要に応じて、gcloud container clusters get-credentials コマンドを実行して現在の kubeconfig コンテキストを設定します。

  2. istioctl install を実行して、新しい構成で Anthos Service Mesh を再インストールします。このコマンドでは、次の要素を置き換えてください。

    • CONFIG_FILE_1IstioOperator YAML ファイルに置き換えます。コマンドラインでファイルを指定する順序は重要です。コマンドに示されているように、multicluster.yaml の後に YAML ファイルを必ず指定してください。

    • 複数の IstioOperator YAML ファイルがある場合は、-f オプションとともに、別々の行にファイルを 1 つずつ含めます。各行の末尾には必ずスラッシュを付けます。

    istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/citadel-ca.yaml \
      -f asm/istio/options/multicluster.yaml \
      -f CONFIG_FILE_1.yaml \
      ...
      # -f CONFIG_FILE_n.yaml \
      --revision=asm-181-5
    
    • --revision 引数は、istio.io/rev=asm-181-5 形式のリビジョンラベルを istiod に追加します。リビジョンラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod Deployment に一致するリビジョンにラベルを付ける必要があります。

    • istio-operator.yaml ファイルには、以前に kpt cfg set を介して設定したプロジェクトとクラスタ情報が含まれます。

    • citadel-ca.yaml ファイルは、Citadel を CA として使用するために必要な設定を構成します。

    • multicluster.yaml ファイルは、マルチクラスタ構成で Anthos Service Mesh が必要とする設定を構成します。 メッシュにクラスタが 1 つしかない場合でも、このファイルを含めます。

    --revision 引数は、istio.io/rev=asm-181-5 形式のリビジョンラベルを istiod に追加します。リビジョンラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod Deployment に一致するリビジョンにラベルを付ける必要があります。

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

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 をインストールする前にクラスタで実行していたワークロードの Pod を再起動するまで完了しません。

自動挿入を有効にするには、Anthos Service Mesh をインストールしたときに、istiod に設定されたリビジョン ラベルで名前空間にラベルを付けます。リビジョン ラベルは、サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。ラベルを追加したら、サイドカーを挿入できるように、名前空間内の既存の Pod を再起動する必要があります。

新しいワークロードを新しい名前空間にデプロイする前に、Anthos Service Mesh がトラフィックのモニタリングと保護を行えるように自動挿入を構成してください。

自動インジェクションを有効にするには:

  1. kubectl の現在のコンテキストを設定します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID
    
  2. 次のコマンドを使用して、istiod のリビジョンラベルを探します。

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

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

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-181-5-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-181-5,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-181-5-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-181-5,istio=istiod,pod-template-hash=5788d57586

    出力の LABELS 列で、接頭辞 istio.io/rev= に続く istiod リビジョン ラベルの値をメモします。この例での値は asm-181-5 です。

  3. リビジョン ラベルを適用し、存在する場合は istio-injection ラベルを削除します。次のコマンドで、NAMESPACE は自動インジェクションを有効にする名前空間の名前で、REVISION は前の手順でメモしたリビジョン ラベルです。

    kubectl label namespace NAMESPACE  istio-injection- istio.io/rev=REVISION --overwrite
    

    出力中のメッセージ "istio-injection not found" は無視します。つまり、今までは名前空間に istio-injection ラベルが付いていなかったということです。Anthos Service Mesh の新規インストールや新規デプロイでは、これが予想されます。名前空間に istio-injection とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべての kubectl label コマンドには istio-injection ラベルの削除が含まれています。

  4. Anthos Service Mesh をインストールする前にクラスタでワークロードが実行されていた場合は、Pod を再起動して再インジェクションをトリガーします。

    Pod を再起動する方法は、アプリケーションとクラスタが属する環境によって異なります。たとえば、ステージング環境では、すべての Pod を削除するのみの場合がありますが、それによって Pod が再起動されます。ただし、本番環境では、Blue / Green デプロイメントを実装するプロセスにより、トラフィックが中断しないように Pod を安全に再起動できます。

    kubectl を使用すると、ローリングの再起動を実行できます。

    kubectl rollout restart deployment -n NAMESPACE
    
  5. Pod が新しいバージョンの istiod を指すように構成されていることを確認します。

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    

次のステップ