Apigee ハイブリッドのバージョン 1.5 へのアップグレード

バージョン 1.5.10 へのアップグレードの概要

以降のセクションでは、Apigee Hybrid のアップグレード手順を次の順番で説明します。

  1. ハイブリッド インストールをバックアップします。
  2. Kubernetes のバージョンを確認し、必要に応じてアップグレードします。
  3. ASM をアップグレードする。
  4. ハイブリッド ランタイムのバージョン 1.5 をインストールする。

前提条件

バージョン 1.5 にアップグレードする

  1. この手順では、apigeectl をインストールしたファイル システム内のディレクトリを環境変数 APIGEECTL_HOME で表しています。必要であれば、cdapigeectl ディレクトリに移動して、次のコマンドで変数を定義してください。

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    macOS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (推奨)バージョン 1.4 の $APIGEECTL_HOME/ ディレクトリのバックアップを作成します。次に例を示します。
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (推奨)Cassandra のバックアップと復元の手順に沿って、Cassandra データベースをバックアップします。
  4. Kubernetes プラットフォームをハイブリッド 1.5 でサポートされているバージョンにアップグレードします。ヘルプが必要な場合は、プラットフォームのドキュメントをご覧ください。
  5. バージョン v1.2.0 より前の cert-manager を実行している場合は、v1.2.0 にアップグレードする必要があります。
    1. 次のコマンドを使用して、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
      
    2. 次のコマンドを使用してデプロイを削除します。
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. 次のコマンドを使用して、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 clusters。
    • Anthos clusters on VMware(GKE On-Pprem)
    • Anthos on bare metal
    • Anthos clusters on AWS
    • Amazon EKS
  • その他の Kubernetes プラットフォーム: 以下で作成され、実行される正規のクラスタ。
    • AKS
    • EKS
    • OpenShift

GKE

ハイブリッド インストールで ASM をバージョン 1.8.x にアップグレードする手順は次のとおりです。

  1. アップグレードの準備を行います。
  2. 新しいバージョンの ASM をインストールします。
  3. 現在のインストールから、以前のバージョンの ASM のデプロイ、サービス、Webhook を削除します。
  4. ゲートウェイをアップグレードして新しい Webhook を構成します。

GKE でハイブリッドの ASM をバージョン 1.8.x にアップグレードするには:

  1. Anthos Service Mesh のアップグレードの要件を確認します。ただし、まだアップグレードは行わないでください。
  2. 新しいバージョンをインストールする前に、現在のリビジョンを確認します。この情報は、現在のインストールより前のバージョンの 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}
  3. 新しい 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)%"}'
    
  4. ASM のドキュメントの次のセクションの説明に従ってください。
    1. asmcli をダウンロードする
    2. クラスタ管理者の権限を付与する
    3. プロジェクトとクラスタを検証する
    4. オプション機能を使用してアップグレードする。「Gateway をアップグレードする」には、まだ進まないでください。
  5. 変更用 Webhook と検証用 Webhook を削除します。
    1. cd を実行して、asmcli がインストールされたディレクトリに移動します。
    2. Webhook を削除するスクリプトで使用するため、現在の新しいリビジョンを環境変数に保存します。
      UPGRADE_REV="asm-1129-3"
    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
      
    4. 現在の Webhook を削除するスクリプトを実行します。
  6. ゲートウェイのアップグレードの手順に沿って、新しい Webhook を作成し、トラフィックを新しいゲートウェイに切り替えます。

Google Cloud 以外

ここでは、以下で行われる ASM のアップグレードについて説明します。

  • Anthos clusters on VMware(GKE On-Prem)
  • Anthos on bare metal
  • Anthos clusters on AWS
  • Amazon EKS
  1. Anthos Service Mesh のアップグレードの要件を確認します。ただし、まだアップグレードは行わないでください。
  2. 新しいバージョンをインストールする前に、現在のリビジョンを確認します。この情報は、現在の 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}
  3. 新しい 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)%"}'
    
  4. ASM のドキュメントの次のセクションの説明に従ってください。
    1. asmcli をダウンロードする
    2. クラスタ管理者の権限を付与する
    3. プロジェクトとクラスタを検証する
    4. オプション機能を使用してアップグレードする。「Gateway をアップグレードする」には、まだ進まないでください。
  5. 変更用 Webhook と検証用 Webhook を削除します。
    1. cd を実行して、asmcli がインストールされたディレクトリに移動します。
    2. Webhook を削除するスクリプトで使用するため、現在の新しいリビジョンを環境変数に保存します。
      UPGRADE_REV="asm-1129-3"
    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
      
    4. 現在の Webhook を削除するスクリプトを実行します。
  6. ゲートウェイのアップグレードの手順に沿って、新しい Webhook を作成し、トラフィックを新しいゲートウェイに切り替えます。

AKS / EKS

これらの手順で、Anthos 接続クラスタで Anthos Service Mesh(ASM)バージョン istio-1.12.9-asm.3 をアップグレードするプロセスは新規インストールのプロセスと同じです。

Anthos Service Mesh のインストールの準備

    Linux

  1. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. 署名ファイルをダウンロードし、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
    
  3. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  4. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  5. 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
    export PATH=$PWD/bin:$PATH
  6. macOS

  7. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. 署名ファイルをダウンロードし、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
    
  9. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  10. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  11. 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. 署名ファイルをダウンロードし、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
    
  15. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  16. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  17. 利便性を考えて、\bin ディレクトリ内のツールを PATH に追加します。
    set PATH=%CD%\bin:%PATH%
  18. ASM Istio がインストールされたので、istioctl のバージョンを確認します。
    istioctl version
  19. コントロール プレーン コンポーネント用に istio-system という Namespace を作成します。
    kubectl create namespace istio-system

検証 Webhook を構成する

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

  1. 次の内容のファイルを 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)%"}'
    
  2. kubectl を使用して検証 Webhook 構成を適用します。
    kubectl apply -f istiod-service.yaml
  3. 構成が適用されたことを確認します。
    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 のインストール

  1. 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 リビジョンに関連付けます。Namespace のサイドカー自動挿入を有効にするには、istiod のラベルと一致するリビジョンのラベルを付ける必要があります。

  2. インストールが完了したことを確認します。
    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 のインストールの準備

    Linux

  1. 次の OpenShift CLI(oc)コマンドを使用して、anyuid セキュリティ コンテキスト制約(SCC)を istio-system に付与します。
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. 署名ファイルをダウンロードし、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
    
  4. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  5. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  6. 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
    export PATH=$PWD/bin:$PATH
  7. macOS

  8. 次の OpenShift CLI(oc)コマンドを使用して、anyuid セキュリティ コンテキスト制約(SCC)を istio-system に付与します。
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. 署名ファイルをダウンロードし、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
    
  11. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  12. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  13. 利便性を考えて、/bin ディレクトリ内のツールを PATH に追加します。
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 次の OpenShift CLI(oc)コマンドを使用して、anyuid セキュリティ コンテキスト制約(SCC)を istio-system に付与します。
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Anthos Service Mesh インストール ファイルを現在の作業ディレクトリにダウンロードします。
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. 署名ファイルをダウンロードし、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
    
  18. ファイル システム上の任意の場所にファイルの内容を抽出します。たとえば、現在の作業ディレクトリに内容を抽出するには、次のコマンドを実行します。
    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 ディレクトリにあります。
  19. Anthos Service Mesh インストールのルート ディレクトリに移動していることを確認します。
    cd istio-1.12.9-asm.3
  20. 利便性を考えて、\bin ディレクトリ内のツールを PATH に追加します。
    set PATH=%CD%\bin:%PATH%
  21. ASM Istio がインストールされたので、istioctl のバージョンを確認します。
    istioctl version
  22. コントロール プレーン コンポーネント用に istio-system という Namespace を作成します。
    kubectl create namespace istio-system

検証 Webhook を構成する

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

  1. 次の内容のファイルを 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)%"}'
    
  2. kubectl を使用して検証 Webhook 構成を適用します。
    kubectl apply -f istiod-service.yaml
  3. 構成が適用されたことを確認します。
    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 のインストール

  1. 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 リビジョンに関連付けます。Namespace のサイドカー自動挿入を有効にするには、istiod のラベルと一致するリビジョンのラベルを付ける必要があります。

  2. インストールが完了したことを確認します。
    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 ランタイムをインストールする

  1. ご使用のオペレーティング システムに対応したリリース パッケージをダウンロードします。

    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
  2. 現在の apigeectl/ ディレクトリをバックアップ ディレクトリ名に変更します。次に例を示します。
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. ダウンロードした gzip ファイルの内容をハイブリッドのベース ディレクトリに展開します。次に例を示します。

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd でベース ディレクトリに移動します。
  5. デフォルトでは、tar の内容が展開されるディレクトリの名前には、バージョンとプラットフォームが含まれています。たとえば、./apigeectl_1.5.0-d591b23_linux_64 のようになります。このディレクトリの名前を apigeectl に変更します。

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. 新しい apigeectl/ ディレクトリで、apigeectl initapigeectl applyapigeectl check-ready を実行します。
    1. ハイブリッド 1.5.10 を初期化します。
      apigeectl init -f OVERRIDES.yaml

      ここで、OVERRIDES.yaml は編集した overrides.yaml ファイルです。

    2. 次のコマンドを使用して、正しく初期化されていることを確認します。
      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
      
    3. apigeectl --dry-run フラグの構文は、実行している kubectl のバージョンによって異なります。kubectl のバージョンを確認します。
      gcloud version
    4. 使用しているバージョンの kubectl に適したコマンドを使用して、ドライランでエラーを確認します。

      kubectl バージョン 1.17 以前:

      apigeectl apply -f OVERRIDES.yaml --dry-run=true

      kubectl バージョン 1.18 以降:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. オーバーライドを適用します。インストール先の環境に応じて、本番環境またはデモ / 試験運用環境の手順を選択して実行します。

      本番環境

      本番環境では、ハイブリッド コンポーネントを個別にアップグレードし、アップグレードしたコンポーネントのステータスを確認してから次のコンポーネントに進んでください。

      1. オーバーライドを適用して Cassandra をアップグレードします。
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. 完了を確認します。
        apigeectl check-ready -f OVERRIDES.yaml

        Pod の準備ができた場合にのみ、次の手順に進みます。

      3. オーバーライドを適用してテレメトリー コンポーネントをアップグレードし、完了を確認します。
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Redis コンポーネントを起動します。
        apigeectl apply -f OVERRIDES.yaml --redis
      5. オーバーライドを適用して、組織レベルのコンポーネント(MART、Watcher、Apigee Connect)をアップグレードし、完了を確認します。
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. オーバーライドを適用して環境をアップグレードします。次の 2 つの選択肢があります。
        • 環境ごと: 一度に 1 つの環境にオーバーライドを適用して、完了を確認します。この手順を環境ごとに繰り返します。
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          ここで、ENV_NAME はアップグレードする環境の名前です。

        • 一度にすべての環境: すべての環境にオーバーライドを一度に適用して、完了を確認します。
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      デモ / 試験運用版

      ほとんどのデモまたは試験運用環境では、すべてのコンポーネントにオーバーライドを一度に適用できます。デモ / 試験運用環境が大規模で複雑な場合や本番環境に酷似している場合は、本番環境のアップグレード手順を使用します。

      1. apigeectl apply -f OVERRIDES.yaml
      2. ステータスを確認します。
        apigeectl check-ready -f OVERRIDES.yaml

アップグレードのロールバック

以前のアップグレードをロールバックする手順は次のとおりです。

  1. ハイブリッド ランタイムの名前空間に対して、完了したジョブのクリーンアップを行います。ここで、名前空間を指定した場合、NAMESPACE はオーバーライド ファイルで指定した名前空間になります。指定しない場合、デフォルトの名前空間は apigee です。
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. apigee-system 名前空間で完了したジョブをクリーンアップします。
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. 以前のバージョンの apigeectl を含むディレクトリを指すように APIGEECTL_HOME 変数を変更します。次に例を示します。
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. ロールバックするインストールのルート ディレクトリで、apigeectl apply を実行し、Pod のステータスを確認します。Redis コンポーネント(ハイブリッド v1.5.0 で新たに追加)を削除してから、apigeectl init を実行します。ロールバックするバージョンの元のオーバーライド ファイルを必ず使用してください。
    • apigeectl apply を実行します。
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Pod のステータスを確認します。
      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