バージョン 1.5.10 へのアップグレードの概要
以降のセクションでは、Apigee Hybrid のアップグレード手順を次の順番で説明します。
- ハイブリッド インストールをバックアップします。
- Kubernetes のバージョンを確認し、必要に応じてアップグレードします。
- ASM をアップグレードします。
- ハイブリッド ランタイムのバージョン 1.5 をインストールする。
前提条件
- Apigee ハイブリッド バージョン 1.4。以前のバージョンから更新する場合は、Apigee ハイブリッド バージョン 1.4 へのアップグレード手順をご覧ください。
バージョン 1.5 にアップグレードする
- この手順では、
apigeectl
をインストールしたファイル システム内のディレクトリの環境変数 APIGEECTL_HOME を使用します。必要に応じて、apigeectl
ディレクトリへのcd
を行い、次のコマンドを使用して変数を定義します。Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- (推奨)バージョン 1.4 の
$APIGEECTL_HOME/
ディレクトリのバックアップを作成します。次に例を示します。tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
- (推奨)Cassandra のバックアップと復元の手順に従って Cassandra データベースをバックアップします。
- Kubernetes プラットフォームをハイブリッド 1.7 でサポートされているバージョンにアップグレードします。 ヘルプが必要な場合は、プラットフォームのドキュメントをご覧ください。
- v1.2.0 より前のバージョン
cert-manager
を実行している場合は、v1.2.0 にアップグレードする必要があります。-
次のコマンドを使用して、現在の
cert-manager
バージョンを確認します。kubectl -n cert-manager get deployment -o yaml | grep 'image:'
次のようなバージョン名が返されます。
image: quay.io/jetstack/cert-manager-controller:v1.2.0 image: quay.io/jetstack/cert-manager-cainjector:v1.2.0 image: quay.io/jetstack/cert-manager-webhook:v1.2.0
-
次のコマンドを使用してデプロイを削除します。
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
次のコマンドを使用して、
cert-manager
を v1.2.0 バージョンにアップグレードします。kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
ASM をバージョン 1.12にアップグレードする
ご使用のプラットフォームに適した ASM のドキュメントを使用して、アップグレードします。
ASM をインストールして構成する手順は、プラットフォームによって異なります。プラットフォームは、次のカテゴリに分類されます。
- GKE: Google Cloud で実行されている Google Kubernetes Engine クラスタ。
- Google Cloud 以外: 次の場所で実行されている Anthos クラスタ。
- Anthos clusters on VMware(GKE On-Prem)
- ベアメタル版 Anthos
- Anthos clusters on AWS
- Amazon EKS
- その他の Kubernetes プラットフォーム: 次で作成され実行される正規のクラスタ。
- AKS
- EKS
- OpenShift
GKE
ハイブリッド インストールで ASM バージョン 1.8.x にアップグレードする順序は次のとおりです。
- アップグレードの準備をします。
- 新しいバージョンの ASM をインストールします。
- 現在のインストールから、以前の ASM バージョンのデプロイ、サービス、Webhook を削除します。
- ゲートウェイをアップグレードして新しい Webhook を構成します。
GKE でハイブリッドの ASM バージョン 1.8.x にアップグレードするには:
- Anthos Service Mesh のアップグレードの要件を確認します。ただし、まだアップグレードは行わないでください。
- 新しいバージョンをインストールする前に、現在のリビジョンを確認します。この情報は、現在のインストールより前の ASM バージョンのデプロイ、サービス、Webhook を削除する際に必要になります。現在の istiod リビジョンを環境変数に格納するには、次のコマンドを使用します。
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- 新しい
overlay.yaml
ファイルを作成するか、既存のoverlay.yaml
に次の内容が含まれていることを確認します。apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- ASM のドキュメントの次のセクションの手順に従ってください。
- asmcli をダウンロードする
- クラスタ管理者の権限を付与する
- プロジェクトとクラスタを検証する。
- オプション機能を使用してアップグレードする。「Gateway のアップグレード」セクションには、まだ進まないでください。
- 変更用 Webhook と検証 Webhook を削除します。
asmcli
をインストールしたディレクトリにcd
を実行します。- Webhook を削除するスクリプトで使用するために、現在の新しいリビジョンを環境変数に保存します。
UPGRADE_REV="asm-1129-3"
- 次のコマンドを含むシェル スクリプトを作成します。
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- 現在の Webhook を削除するスクリプトを実行します。
- ゲートウェイのアップグレードの手順に沿って、新しい Webhook を作成し、トラフィックを新しいゲートウェイに切り替えます。
Google Cloud 以外
ここでは、以下で行われる ASM のアップグレードについて説明します。
- Anthos clusters on VMware(GKE On-Prem)
- ベアメタル版 Anthos
- Anthos clusters on AWS
- Amazon EKS
- Anthos Service Mesh のアップグレードの要件を確認します。ただし、まだアップグレードは行わないでください。
- 新しいバージョンをインストールする前に、現在のリビジョンを確認します。この情報は、現在の ASM インストールから検証 Webhook と変更 Webhook を削除する際に必要になります。現在の istiod リビジョンを環境変数に格納するには、次のコマンドを使用します。
export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}') echo ${DELETE_REV}
- 新しい
overlay.yaml
ファイルを作成するか、既存のoverlay.yaml
に次の内容が含まれていることを確認します。apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- ASM のドキュメントの次のセクションの手順に従ってください。
- asmcli をダウンロードする
- クラスタ管理者の権限を付与する
- プロジェクトとクラスタを検証する。
- オプション機能を使用してアップグレードする。「Gateway のアップグレード」セクションには、まだ進まないでください。
- 変更用 Webhook と検証 Webhook を削除します。
asmcli
をインストールしたディレクトリにcd
を実行します。- Webhook を削除するスクリプトで使用するために、現在の新しいリビジョンを環境変数に保存します。
UPGRADE_REV="asm-1129-3"
- 次のコマンドを含むシェル スクリプトを作成します。
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" gcloud config configurations activate ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- 現在の Webhook を削除するスクリプトを実行します。
- ゲートウェイのアップグレードの手順に沿って、新しい Webhook を作成し、トラフィックを新しいゲートウェイに切り替えます。
AKS / EKS
これらの手順において、Anthos 接続クラスタで Anthos Service Mesh(ASM)バージョン istio-1.12.9-asm.3 をアップグレードするプロセスは、新規インストールのプロセスと同じです。
Anthos Service Mesh のインストールの準備
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
export PATH=$PWD/bin:$PATH
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-osx.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
export PATH=$PWD/bin:$PATH
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-win.zip
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests\profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
set PATH=%CD%\bin:%PATH%
- ASM Istio がインストールされているので、
istioctl
のバージョンを確認します。istioctl version
- コントロール プレーン コンポーネント用に istio-system という名前空間を作成します。
kubectl create namespace istio-system
Linux
Mac OS
Windows
検証 Webhook の構成
Anthos Service Mesh をインストールするときに、istiod にリビジョン ラベルを設定します。検証 Webhook に同じリビジョンを設定する必要があります。
- 次の内容のファイルを、
istiod-service.yaml
という名前で作成します。apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1129-3 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
kubectl
を使用して検証 Webhook 構成を適用します。kubectl apply -f istiod-service.yaml
- 構成が適用されたことを確認します。
kubectl get svc -n istio-system
レスポンスは次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Anthos Service Mesh のインストール
asm-multicloud
プロファイルを使用して、istioctl
を使用して Anthos Service Mesh をインストールします。istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1129-3"
出力は次のようになります。
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
--set revision
引数は、istio.io/rev=asm-1129-3
形式のリビジョン ラベルを istiod に追加します。リビジョン ラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod のラベルと一致するリビジョンのラベルを付ける必要があります。- インストールが完了したことを確認します。
kubectl get svc -n istio-system
出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1129-3 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
これらの手順において、Anthos 接続クラスタで Anthos Service Mesh(ASM)バージョン istio-1.12.9-asm.3 をアップグレードするプロセスは、新規インストールのプロセスと同じです。
Anthos Service Mesh のインストールの準備
- 次の OpenShift CLI(
oc
)コマンドを使用して、anyuid
セキュリティ コンテキスト制約(SCC)を istio-system に付与します。oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
export PATH=$PWD/bin:$PATH
- 次の OpenShift CLI(
oc
)コマンドを使用して、anyuid
セキュリティ コンテキスト制約(SCC)を istio-system に付与します。oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-osx.tar.gz
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests/profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
export PATH=$PWD/bin:$PATH
- 次の OpenShift CLI(
oc
)コマンドを使用して、anyuid
セキュリティ コンテキスト制約(SCC)を istio-system に付与します。oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- 署名ファイルをダウンロードし、openssl を使用して署名を検証します。
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリにコンテンツを抽出するには、次のコマンドを実行します。
tar xzf istio-1.12.9-asm.3-win.zip
このコマンドにより、現在の作業ディレクトリに
istio-1.12.9-asm.3
という名前のインストール ディレクトリが作成されます。このディレクトリには、次のものが含まれます。samples
ディレクトリにあるサンプル アプリケーション- Anthos Service Mesh のインストールに使用する
istioctl
コマンドライン ツールは、bin
ディレクトリにあります。 - Anthos Service Mesh 構成プロファイルは
manifests\profiles
ディレクトリにあります。
- Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
cd istio-1.12.9-asm.3
- 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
set PATH=%CD%\bin:%PATH%
- ASM Istio がインストールされているので、
istioctl
のバージョンを確認します。istioctl version
- コントロール プレーン コンポーネント用に istio-system という名前空間を作成します。
kubectl create namespace istio-system
Linux
Mac OS
Windows
検証 Webhook の構成
Anthos Service Mesh をインストールするときに、istiod にリビジョン ラベルを設定します。検証 Webhook に同じリビジョンを設定する必要があります。
- 次の内容のファイルを、
istiod-service.yaml
という名前で作成します。apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1129-3 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
kubectl
を使用して検証 Webhook 構成を適用します。kubectl apply -f istiod-service.yaml
- 構成が適用されたことを確認します。
kubectl get svc -n istio-system
レスポンスは次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Anthos Service Mesh のインストール
asm-multicloud
プロファイルを使用して、istioctl
を使用して Anthos Service Mesh をインストールします。istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.12.9-asm.3
出力は次のようになります。
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
--set revision
引数は、istio.io/rev=1.8.6-asm.1
形式のリビジョン ラベルを istiod に追加します。リビジョン ラベルは、自動サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定の istiod リビジョンに関連付けます。名前空間のサイドカー自動挿入を有効にするには、istiod のラベルと一致するリビジョンのラベルを付ける必要があります。- インストールが完了したことを確認します。
kubectl get svc -n istio-system
出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1129-3 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
ハイブリッド 1.5.10 ランタイムをインストールする
ご使用のオペレーティング システムに対応したリリース パッケージをダウンロードします。
Mac 64 ビット:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gz
Linux 64 ビット:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gz
Mac 32 ビット:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz
Linux 32 ビット:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
- 現在の
apigeectl/
ディレクトリをバックアップ ディレクトリ名に変更します。次に例を示します。mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
ダウンロードした gzip ファイルの内容をハイブリッドのベース ディレクトリに展開します。次に例を示します。
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cd
でベース ディレクトリに移動します。-
デフォルトでは、tar の内容が展開されるディレクトリの名前には、バージョンとプラットフォームが含まれています。例:
./apigeectl_1.5.0-d591b23_linux_64
。このディレクトリの名前をapigeectl
に変更します。mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- 新しい
apigeectl/
ディレクトリで、apigeectl init
、apigeectl apply
、apigeectl check-ready
を実行します。- ハイブリッド 1.5.10 を初期化します。
apigeectl init -f OVERRIDES
.yaml
ここで、OVERRIDES
.yaml
は編集したoverrides.yaml
ファイルです。 - 次のコマンドを使用して、正しく初期化されていることを確認します。
apigeectl check-ready -f OVERRIDES
.yaml
kubectl describe apigeeds -n apigee
出力は次のようになります。
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
apigeectl
--dry-run
フラグの構文は、実行しているkubectl
のバージョンによって異なります。kubectl
のバージョンを確認します。gcloud version
- 使用しているバージョンの
kubectl
に適したコマンドを使用して、ドライランでエラーを確認します。kubectl
バージョン 1.17 以前:apigeectl apply -f OVERRIDES
.yaml
--dry-run=truekubectl
バージョン 1.18 以降:apigeectl apply -f OVERRIDES
.yaml
--dry-run=client - オーバーライドを適用します。インストールの環境に応じて、本番環境またはデモ / 試験運用版環境の手順を選択して従います。
本番
本番環境では各ハイブリッド コンポーネントを個別にアップグレードし、次のコンポーネントに進む前に、アップグレードされたコンポーネントのステータスを確認します。
- オーバーライドを適用して Cassandra をアップグレードします。
apigeectl apply -f OVERRIDES
.yaml
--datastore - 完了を確認します。
apigeectl check-ready -f OVERRIDES
.yaml
Pod の準備ができた場合にのみ、次の手順に進みます。
- オーバーライドを適用してテレメトリー コンポーネントをアップグレードし、完了を確認します。
apigeectl apply -f OVERRIDES
.yaml
--telemetryapigeectl check-ready -f OVERRIDES
.yaml
- Redis コンポーネントを起動します。
apigeectl apply -f OVERRIDES
.yaml
--redis - オーバーライドを適用して、組織レベルのコンポーネント(MART、Watcher、Apigee Connect)をアップグレードし、完了を確認します。
apigeectl apply -f OVERRIDES
.yaml
--orgapigeectl check-ready -f OVERRIDES
.yaml
- オーバーライドを適用して環境をアップグレードします。これには、次の 2 つの選択肢があります。
- 環境別の環境: 一度に 1 つの環境にオーバーライドを適用して、完了を確認します。環境ごとにこの手順を繰り返します。
apigeectl apply -f OVERRIDES
.yaml
--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yaml
ここで、ENV_NAME はアップグレードする環境の名前です。
- 一度にすべての環境: すべての環境にオーバーライドを一度に適用して、完了を確認します。
apigeectl apply -f OVERRIDES
.yaml
--all-envsapigeectl check-ready -f OVERRIDES
.yaml
- 環境別の環境: 一度に 1 つの環境にオーバーライドを適用して、完了を確認します。環境ごとにこの手順を繰り返します。
デモ / 試験運用版
ほとんどのデモまたは試験運用環境では、すべてのコンポーネントにオーバーライドを一度に適用できます。デモ / 試験運用版が大規模で複雑な環境、または本番環境が似ている場合や本番環境に酷似している場合は、本番環境のアップグレード手順を使用します。
apigeectl apply -f OVERRIDES
.yaml
- ステータスを確認します。
apigeectl check-ready -f OVERRIDES
.yaml
- オーバーライドを適用して Cassandra をアップグレードします。
- ハイブリッド 1.5.10 を初期化します。
アップグレードのロールバック
以前のアップグレードをロールバックするには次のようにします。
- ハイブリッドのランタイム名前空間の完了したジョブをクリーンアップします。ここで、名前空間を指定した場合、NAMESPACE は、オーバーライド ファイルで指定された名前空間です。名前空間を指定しない場合、デフォルトの名前空間は
apigee
です。kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
apigee-system
名前空間の完了したジョブをクリーンアップします。kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 以前のバージョンの
apigeectl
を含むディレクトリを指すようにAPIGEECTL_HOME
変数を変更します。例:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- ロールバックするインストールのルート ディレクトリで、
apigeectl apply
を実行し、Pod のステータスを確認し、Redis コンポーネント(ハイブリッド v1.5.0 で新たに追加)を削除してから、apigeectl init
を実行します。必ずロールバックするバージョンの元のオーバーライド ファイルを使用してください。apigeectl apply
を実行します。$APIGEECTL_HOME
/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
- ポッドのステータスを確認します。
kubectl -n NAMESPACE get pods
ここで、NAMESPACE は Apigee ハイブリッドの名前空間です。
apigeeds
Pod が実行されている場合にのみ、次の手順に進みます。 -
Redis はハイブリッド v1.5 の新しいコンポーネントであるため、次のコマンドを実行して削除します。
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml
apigeectl init
を実行します。$APIGEECTL_HOME
/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml