このガイドでは、GKE on VMware で Anthos Service Mesh のバージョンを 1.4.5+ から 1.4.10 にアップグレードする方法について説明します。Anthos Service Mesh 1.5 にアップグレードする場合は、オンプレミスの Anthos Service Mesh のアップグレードの 1.5 バージョンをご覧ください。
Anthos Service Mesh のコントロール プレーン コンポーネントのデプロイには 5~10 分ほどかかります。また、すべてのワークロードに新しいサイドカー プロキシを挿入し、現在の Anthos Service Mesh バージョンで更新されるようにする必要があります。サイドカー プロキシの更新にかかる時間は、Pod 数、ノード数、デプロイのスケーリング設定、Pod 中断のコスト、その他の構成要素など、さまざまな要因に左右されます。サイドカー プロキシの更新にかかる大まかな時間は 1 分あたり 100 Pod です。
アップグレードの準備を行う
このセクションでは、Anthos Service Mesh のアップグレード手順を説明します。
サポートされている機能とこのガイドを確認して、機能とアップグレード プロセスをよく理解してください。
認可ポリシーで更新が必要であるかどうかを確認してください。
以前のバージョンの Anthos Service Mesh をインストールしたときに
--set values
フラグをistioctl apply
コマンドラインに追加してオプション機能を有効にした場合、istioctl apply
を実行して 1.4.10 をインストールするときにも同じフラグを使用する必要があります。以前のバージョンの Anthos Service Mesh をインストールしたときに
-f
フラグをistioctl apply
コマンドラインに追加して YAML ファイルを指定した場合、istioctl apply
を実行して 1.4.10 にアップグレードするときにも同じファイル(または同じコンテンツを持つファイル)を指定する必要があります。ダウンタイムをスケジュール設定します。クラスタのスケールによりますが、アップグレードには最大 1 時間かかります。これには、ワークロードを再デプロイしてサイドカー プロキシを更新するために必要な時間は含まれません。
環境設定
ローカルマシンに Google Cloud CLI をインストールして初期化します。
gcloud CLI がすでにインストールされている場合は、次の手順を行います。
gcloud CLI を使用して認証します。
gcloud auth login
コンポーネントを更新します。
gcloud components update
kubectl
をインストールします。gcloud components install kubectl
クラスタが作成されたプロジェクトのプロジェクト ID を取得します。
gcloud
gcloud projects list
コンソール
Google Cloud コンソールで、[ダッシュボード] ページに移動します。
ページ上部の [選択元] プルダウン リストをクリックします。表示された [選択元] ウィンドウで、プロジェクトを選択します。プロジェクト ID は、プロジェクト ダッシュボードの [プロジェクト情報] カードに表示されます。
Google Cloud CLI のデフォルトのプロジェクト ID を設定します。
gcloud config set project PROJECT_ID
認証情報と権限の設定
-
Anthos Service Mesh をインストールするユーザー クラスタの
kubectl
があることを確認します。Anthos Service Mesh はユーザー クラスタにのみインストールできます。管理クラスタにはインストールできません。 -
現在のユーザーにクラスタ管理者の権限を付与します。この権限は、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.4.10-asm.18-linux.tar.gz
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 - Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 - Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip
- 署名ファイルをダウンロードし、
openssl
を使用して署名を検証します。curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
想定される出力は
Verified OK
です。 -
ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.4.10-asm.18-linux.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.4.10-asm.18
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
にはサンプル アプリケーション。bin
ディレクトリには次のツール:istioctl
:istioctl
は Anthos Service Mesh のインストールに使用します。asmctl
:asmctl
を使用して、Anthos Service Mesh をインストールした後、セキュリティ構成を検証します(現在、asmctl
は GKE on VMware ではサポートされていません)。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.4.10-asm.18
- 利便性を考えて、
/bin
ディレクトリ内のツールを PATH に追加します。export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
Anthos Service Mesh のアップグレード
このセクションでは、Anthos Service Mesh をアップグレードし、サポートされている機能ページのサポートされているデフォルト機能を有効にする方法について説明します。サポートされているオプション機能の有効化については、オプション機能の有効化をご覧ください。
Anthos Service Mesh をアップグレードするには:
次のいずれかのコマンドを選択して、PERMISSIVE
相互 TLS(mTLS)認証モードまたは STRICT
mTLS モードで Anthos Service Mesh を構成します。
PERMISSIVE mTLS
istioctl manifest apply --set profile=asm-onprem
STRICT mTLS
istioctl manifest apply --set profile=asm-onprem \ --set values.global.mtls.enabled=true
コントロール プレーン コンポーネントを確認する
アップグレードするには、コントロール プレーン コンポーネントを再インストールする必要があります。完了するまでには約 5~10 分かかります。新しいコンポーネントがインストールされると、古いコントロール プレーン コンポーネントは終了し、削除されます。ワークロードの AGE
列の値を見ることで、進行状況を確認できます。
kubectl get pod -n istio-system
出力例
NAME READY STATUS RESTARTS AGE istio-citadel-64f6d7c7c7-jtmw7 1/1 Running 0 38s istio-galley-6b4878d445-c4rtt 1/2 Running 0 37s istio-ingressgateway-7866c5c88f-llp28 0/1 Running 0 37s istio-ingressgateway-7866c5c88f-m9sck 1/1 Terminating 0 25m istio-pilot-7f4fdcb89c-r98jl 1/2 Running 0 37s istio-sidecar-injector-65cbd565b9-q4wm9 1/1 Running 0 37s promsd-78dfdf7c7d-2bhr6 2/2 Running 1 37s
この例では、istio-ingressgateway
のインスタンスが 2 つあります。AGE
列の 25m
のインスタンスが終了します。その他のコンポーネントはすべて、新たにインストールされます。
サイドカー プロキシの更新
Anthos Service Mesh は、サイドカー プロキシを使用してネットワークのセキュリティ、信頼性、オブザーバビリティを強化します。Anthos Service Mesh では、これらの機能がアプリケーションのプライマリ コンテナから抽出され、同じ Pod 内の個別のコンテナとして提供される共通のプロセス外プロキシに実装されます。
Anthos Service Mesh のインストール前にクラスタで実行されていたワークロードの場合、現在の Anthos Service Mesh バージョンを使用するように、サイドカー プロキシを挿入または更新する必要があります。新しいワークロードをデプロイする前に、Anthos Service Mesh がトラフィックをモニタリングおよび保護できるように、サイドカー プロキシ インジェクションを構成します。自動サイドカー インジェクションは、次のように 1 つのコマンドで有効にできます。
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
ここで、NAMESPACE
はアプリケーションのサービスの名前空間の名前です。名前空間を明示的に作成していない場合は default
です。
詳細については、サイドカー プロキシの挿入をご覧ください。