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

ここでは、Apigee ハイブリッド バージョン 1.15.x から Apigee ハイブリッド バージョン 1.16.0 へのアップグレードについて説明します。

Apigee ハイブリッド v1.15 からの変更

次の変更点にご注意ください。

  • Seccomp プロファイル: バージョン 1.16 以降、Apigee ハイブリッドでは、Seccomp プロファイルをランタイム コンポーネントに適用する機能が提供されるようになりました。これにより、デプロイのセキュリティ体制が大幅に強化されます。この機能を使用すると、Apigee 管理者とセキュリティ チームは、コンテナ化されたプロセスがホストのカーネルに対して実行できるシステム呼び出しを制限できます。コンテナを必要な syscall のみに制限すると、次のことが可能になります。
    • セキュリティの強化: コンテナ ブレイクアウトと権限昇格のリスクを軽減します。
    • 最小権限の適用: コンポーネントが、そのオペレーションに必要なシステムコールのみにアクセスできるようにします。
    • コンプライアンスの遵守: 厳しいセキュリティ コンプライアンス要件を満たすための重要な制御を提供します。
    詳細については、Pod セキュリティの Seccomp プロファイルを構成するをご覧ください。
  • Apigee ハイブリッドでの UDCA の削除: Apigee ハイブリッド バージョン 1.16 で、Unified Data Collection Agent(UDCA)コンポーネントが削除されました。分析、トレース、デプロイ ステータス データを Apigee コントロール プレーンに送信する処理は、Google Cloud Pub/Sub ベースのデータ パイプラインを使用して処理されるようになりました。Apigee ハイブリッド バージョン 1.14.0 以降、Pub/Sub ベースのデータ パイプラインの使用がデフォルトのデータ収集メカニズムになっています。
  • apigee-guardrails サービス アカウント: v1.16.0 では、Apigee ハイブリッドに apigee-guardrails Google IAM サービス アカウントが導入されています。これは、インストール中に apigee-operator チャートで使用され、必要な API がすべてプロジェクトで有効になっていることを確認します。

    参照:

  • cert-manager リリース 1.18 と 1.19 のサポート: Apigee ハイブリッド v1.16 は、cert-manager のリリース 1.18リリース 1.19 をサポートしています。cert-manager リリース 1.18 では、トラフィックに影響する可能性がある Certificate.Spec.PrivateKey.rotationPolicy のデフォルト値が変更されています。以前のバージョンの Apigee ハイブリッドからアップグレードし、cert-manager リリース 1.18 以降にアップグレードする場合は、このガイドの cert-manager をアップグレードするの手順に沿って操作します。

ハイブリッド バージョン 1.16 の機能の詳細については、Apigee ハイブリッド v1.16.0 リリースノートをご覧ください。

前提条件

ハイブリッド バージョン 1.16 にアップグレードする前に、インストールが次の要件を満たしていることを確認してください。

1.16.0 にアップグレードする前に - 制限事項と重要な注意事項

  • Apigee ハイブリッド 1.16.0 では、環境ごとのプロキシの上限が強化され、単一の環境にデプロイできるプロキシと共有フローの数が増えました。環境ごとにデプロイできるプロキシと共有フローの数の上限については、上限: API プロキシをご覧ください。この機能は、新しく作成されたハイブリッド組織でのみ使用できます。アップグレードされた組織には適用できません。この機能を使用するには、ハイブリッド 1.16.0 を新規にインストールし、新しい組織を作成します。

    この機能は 2024 サブスクリプション プランにご加入いただいた場合にのみ使用でき、そのサブスクリプションに付与されている利用資格の影響を受けます。この機能の詳細については、環境ごとのプロキシの上限の強化をご覧ください。

  • Apigee ハイブリッド バージョン 1.16 へのアップグレード中は、ダウンタイムが発生する場合があります。

    Apigee コントローラをバージョン 1.16.0 にアップグレードすると、すべての Apigee デプロイでローリング再起動が行われます。本番環境ハイブリッド環境のダウンタイムを最小限に抑えるには、少なくとも 2 つのクラスタ(同じまたは異なるリージョン/データセンター)を実行している必要があります。本番環境のすべてのトラフィックを 1 つのクラスタに戻し、オフラインでアップグレードしようとしているクラスタを取得して、アップグレード プロセスを続行します。この手順をクラスタごとに繰り返します。

    本番環境に影響する可能性を低減するため、アップグレードを開始した後できるだけ早くすべてのクラスタをアップグレードすることをおすすめします。最初のクラスタをアップグレードした後に、残りのすべてのクラスタをいつアップグレードする必要があるかについては、時間制限はありません。ただし、Cassandra のバックアップと復元はバージョンが混在している環境では機能しないため、残りのクラスタがすべてアップグレードされるまで使用できません。たとえば、ハイブリッド 1.15 のバックアップを使用してハイブリッド 1.16 のインスタンスを復元することはできません。

  • アップグレード中に管理プレーンの変更を完全に一時停止する必要はありません。管理プレーンの変更の一時停止が必要な場合は、以下のアップグレード手順に記載されています。

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

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

  1. アップグレードを準備する
  2. ハイブリッド ランタイム バージョン 1.16.0 をインストールする

バージョン 1.16 へのアップグレードを準備する

ハイブリッド インストールをバックアップする

  1. この手順では、ファイル システム内で Helm チャートをインストールしたディレクトリに対し、環境変数 APIGEE_HELM_CHARTS_HOME を使用します。必要に応じてこのディレクトリに移動し、次のコマンドで変数を定義します。

    Linux

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Mac OS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. バージョン 1.15 の $APIGEE_HELM_CHARTS_HOME/ ディレクトリのバックアップを作成します。任意のバックアップ プロセスを使用できます。たとえば、次のコマンドを使用して、ディレクトリ全体の tar ファイルを作成します。
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. Cassandra のバックアップと復元の手順に沿って Cassandra データベースをバックアップします。
  4. TLS 証明書ファイルと鍵ファイル(.crt.key.pem)が $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/ ディレクトリにあることを確認します。

Kubernetes のバージョンをアップグレードする

Kubernetes プラットフォームのバージョンを確認し、必要に応じて Kubernetes プラットフォームを、ハイブリッド 1.15 とハイブリッド 1.16 の両方でサポートされているバージョンにアップグレードします。ヘルプが必要な場合は、プラットフォームのドキュメントをご覧ください。

Apigee Helm チャートを pull します。

Apigee ハイブリッド チャートは Google Artifact Registry でホストされます。

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

次のコマンドで pull コマンドを使用して、すべての Apigee ハイブリッド Helm チャートをローカル ストレージにコピーします。

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.16.0
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

カスタム Apigee Namespace の kustomization.yaml を編集する

Apigee Namespace が apigee でない場合は、apigee-operator/etc/crds/default/kustomization.yaml ファイルを編集して、namespace 値を Apigee Namespace に置き換えます。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: APIGEE_NAMESPACE

Namespace として apigee を使用している場合は、ファイルを編集する必要はありません。

  • 更新された Apigee CRD をインストールします。
    1. 次のコマンドを実行して、kubectl ドライラン機能を使用します。

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. dry-run コマンドで検証した後、次のコマンドを実行します。

      kubectl apply -k  apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    3. kubectl get crds コマンドを使用してインストールを検証します。
      kubectl get crds | grep apigee

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

      apigeedatastores.apigee.cloud.google.com                    2024-08-21T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2024-08-21T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2024-08-21T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2024-08-21T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2024-08-21T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2024-08-21T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2024-08-21T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2024-08-21T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2024-08-21T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2024-08-21T14:48:35Z
      
  • クラスタノードのラベルを確認します。デフォルトでは、Apigee はラベルが cloud.google.com/gke-nodepool=apigee-data のノードでデータ Pod をスケジューリングし、ランタイム Pod はラベルが cloud.google.com/gke-nodepool=apigee-runtime のノードでスケジューリングされます。ノードプールのラベルは、overrides.yaml ファイルでカスタマイズできます。

    詳細については、専用ノードプールの構成をご覧ください。

  • apigee-guardrails サービス アカウントを設定する

    ハイブリッド v1.16 以降では、apigee-operator チャートをアップグレードするために apigee-guardrails サービス アカウントが必要です。

    次の手順では、使用しているサービス アカウント認証のタイプを選択します。

    1. create-service-account を実行できることを確認します。チャートをダウンロードしたばかりの場合は、create-service-account ファイルが実行可能モードになっていない可能性があります。APIGEE_HELM_CHARTS_HOME ディレクトリで、次のコマンドを実行します。
      ./apigee-operator/etc/tools/create-service-account --help

      出力に permission denied と表示された場合は、ファイルを実行可能にする必要があります。たとえば、Linux、MacOS、UNIX、Windows エクスプローラーでは chmod を、Windows では icacls コマンドを使用します。次に例を示します。

      chmod +x ./apigee-operator/etc/tools/create-service-account
    2. apigee-guardrails サービス アカウントを作成します。

      Kubernetes Secret

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      このコマンドは、apigee-guardrails サービス アカウントを作成し、キーを service-accounts/ ディレクトリにダウンロードします。

      JSON ファイル

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir ./apigee-operator/

      このコマンドは、apigee-guardrails サービス アカウントを作成し、キーを apigee-operator/ チャート ディレクトリにダウンロードします。

      Vault

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      このコマンドは、apigee-guardrails サービス アカウントを作成し、キーを service-accounts/ ディレクトリにダウンロードします。

      WIF for GKE

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      このコマンドは、apigee-guardrails サービス アカウントを作成し、キーを apigee-operator/etc/tools/service-accounts/ ディレクトリにダウンロードします。ダウンロードした鍵ファイルは不要になったため、削除できます。

      他のプラットフォームでの WIF

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      このコマンドは、apigee-guardrails サービス アカウントを作成し、キーを service-accounts/ ディレクトリにダウンロードします。

    3. apigee-guardrails サービス アカウントの認証を設定します。

      Kubernetes Secret

      service-accounts/ ディレクトリの apigee-guardrails サービス アカウント キーファイルを使用して Kubernetes Secret を作成します。

      kubectl create secret generic apigee-guardrails-svc-account \
          --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \
          -n $APIGEE_NAMESPACE

      次のコードを overrides.yaml ファイルに追加します。

      guardrails:
        serviceAccountRef: apigee-guardrails-svc-account

      JSON ファイル

      apigee-operator/ ディレクトリの apigee-guardrails サービス アカウント キーファイルのパスを使用して、overrides.yaml ファイルに以下を追加します。

      guardrails:
        serviceAccountPath: $PROJECT_ID-apigee-guardrails.json

      Vault

      1. Vault シークレット secret/data/apigee/orgsakeys を更新して、apigee-guardrails サービス アカウント キーファイルの内容を含む guardrails エントリを追加します。
        vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
        
      2. ガードレールの Kubernetes サービス アカウント(KSA)の名前は apigee-operator-guardrails-sa です。Guardrails KSA を、Vault の apigee-orgsakeys ロールにバインドされた組織固有のサービス アカウントに追加します。
        1. KSA バインディングの現在のリストを取得します。
          vault read auth/kubernetes/role/apigee-orgsakeys
          

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

          Key                                         Value
          ---                                         -----
          alias_name_source                           serviceaccount_uid
          bound_service_account_names                 BOUND_SERVICE_ACCOUNT_NAMES
          bound_service_account_namespace_selector    n/a
          bound_service_account_namespaces            APIGEE_NAMESPACE

          出力では、BOUND_SERVICE_ACCOUNT_NAMES はカンマ区切りのサービス アカウント名のリストです。名前のリストに apigee-operator-guardrails-sa を追加します(読みやすくするために改行を追加しています)。

          apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa,
          apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido
          rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c
          assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0
          44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect-
          agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee
          -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer
          -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee-
          telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy
          nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod-
          2d0221c,apigee-operator-guardrails-sa
        2. 更新されたサービス アカウント名のリストを使用して、apigee-orgsakeys ロールのバインディングを更新します。
          vault write auth/kubernetes/role/apigee-orgsakeys \
            bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \
            bound_service_account_namespaces=APIGEE_NAMESPACE \
            policies=apigee-orgsakeys-auth \
            ttl=1m
          
      3. SecretProviderClass に「ガードレール」を追加します。
        1. spc-org.yaml ファイルを編集します。
        2. spec.parameters.objects に、ガードレールのエントリを追加します。
                - objectName: "guardrails"
                  secretPath: ""
                  secretKey: ""
        3. SecretProviderClass を更新します。
          kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
          

      WIF for GKE

      ガードレールの Kubernetes サービス アカウント(KSA)の名前は apigee-operator-guardrails-sa です。次のコマンドを使用して、apigee-guardrails Google サービス アカウント(GSA)のバインディングを作成します。

      gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \
          --project $PROJECT_ID

      次のコードを overrides.yaml ファイルに追加します。

      guardrails:
        gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com

      他のプラットフォームでの WIF

      ガードレールの Kubernetes サービス アカウント(KSA)の名前は apigee-operator-guardrails-sa です。ガードレール KSA に apigee-guardrails Google サービス アカウント(GSA)の権限を借用する権限を付与し、認証情報の構成ファイルを使用するようにオーバーライドを構成する必要があります。

      1. 次のコマンドを使用して、KSA に GSA の権限を借用する権限を付与します。

        テンプレート

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \
          --role=roles/iam.workloadIdentityUser

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-guardrails@my-project.iam.gserviceaccount.com \
          --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \
          --role=roles/iam.workloadIdentityUser

        ここで

        • PROJECT_ID: Google Cloud プロジェクト ID。
        • PROJECT_NUMBER: Workload Identity プールを作成したプロジェクトのプロジェクト番号
        • POOL_ID: Workload Identity プール ID。
        • APIGEE_NAMESPACE: Apigee ハイブリッドがインストールされている Namespace。
      2. apigee-guardrails サービス アカウントの認証情報構成ファイルを作成します。
        gcloud iam workload-identity-pools create-cred-config \
          projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
          --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --credential-source-file=/var/run/service-account/token \
          --credential-source-type=text \
          --output-file=apigee-guardrails-credential-configuration.json
            

        ここで、WORKLOAD_PROVIDER_ID は Workload Identity プール プロバイダ ID です。

      3. 次のいずれかの方法で Workload Identity 連携を使用するように apigee-guardrails を構成します。

        WIF: Secret

        1. 認証情報構成ファイルごとに認証情報ソースファイルを使用して、新しい Kubernetes Secret を作成します。
          kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
        2. serviceAccountRef の値を新しい Secret に置き換えます。
          guardrails:
            serviceAccountRef: guardrails-workload-identity-secret

        WIF: ファイル

        生成された apigee-guardrails-credential-configuration.json ファイルを apigee-operator/ グラフ ディレクトリに移動します。

        次のコードを overrides.yaml ファイルに追加します。

        guardrails:
          serviceAccountPath: apigee-guardrails-credential-configuration.json

        WIF: Vault

        Vault の guardrails のサービス アカウント キーを、対応する認証情報ソースファイルで更新します。

        SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"

        詳細については、Storing service account keys in Hashicorp Vault をご覧ください。

    cert-manager をアップグレードする

    Apigee ハイブリッド v1.16 は、cert-manager リリース 1.16 ~ 1.19 をサポートしています。cert-manager 1.18 には、トラフィックに関する問題を引き起こす可能性のある変更があります。cert-manager リリース 1.18 で、Certificate.Spec.PrivateKey.rotationPolicy のデフォルト値が Never から Always に変更されました。アップグレードされた Apigee ハイブリッド インストールの場合、これによりトラフィックに関する問題が発生する可能性があります。以前のバージョンからハイブリッド v1.16 にアップグレードする場合は、この変更を補うように apigee-ca 証明書を編集するか、cert-manager のバージョンをリリース 1.17.x 以下に維持する必要があります。

    cert-manager を 1.18 または 1.19 にアップグレードする前に、次の手順で apigee-ca 証明書を編集して、Certificate.Spec.PrivateKey.rotationPolicy の値を Never に設定します。

    1. apigee-ca 証明書の内容を調べて、rotationPolicy が設定されているかどうかを確認します。
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

      出力で spec.privateKey の下の値を探します。

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          # Note: rotationPolicy would appear here if it is set.
          size: 256
        secretName: apigee-ca
      ...
    2. rotationPolicy が設定されていない場合、または Always に設定されている場合は、apigee-ca 証明書を編集して rotationPolicy の値を Never に設定します。
      1. 最初にドライランを実行します。
        kubectl patch Certificate \
          --dry-run=server \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
      2. 証明書にパッチを適用します。
        kubectl patch Certificate \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
    3. rotationPolicy の値が Never に設定されていることを確認します。
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

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

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          rotationPolicy: Never
          size: 256
        secretName: apigee-ca
      ...
    4. cert-manager をアップグレードします。次のコマンドは、cert-manager v1.19.2 をダウンロードしてインストールします。
      kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml

      サポートされているバージョンの一覧については、サポートされているプラットフォームとバージョン: cert-manager をご覧ください。

    参照:

    ハイブリッド 1.16.0 ランタイムをインストールする

    1. まだ行っていない場合は、APIGEE_HELM_CHARTS_HOME ディレクトリに移動します。このディレクトリから次のコマンドを実行します。
    2. Apigee Operator/Controller をアップグレードします。

      ドライランを実行します。

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Apigee Operator のインストールを確認します。

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                   APP VERSION
      operator   apigee   3          2024-08-21 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.16.0   1.16.0
      

      可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           7d20h
      
    3. Apigee データストアをアップグレードします。

      ドライランを実行します。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      状態をチェックして、apigeedatastore が稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    2d
    4. Apigee テレメトリーをアップグレードします。

      ドライランを実行します。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   2d
    5. Apigee Redis をアップグレードします。

      ドライランを実行します。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   2d
    6. Apigee Ingress Manager をアップグレードします。

      ドライランを実行します。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      可用性をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           2d
    7. Apigee 組織をアップグレードします。

      ドライランを実行します。

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      チャートをアップグレードします。

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      それぞれの組織の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      apigee-my-org-my-env      running   2d
    8. 環境をアップグレードします。

      同時にインストールできる環境は 1 つだけです。--set env=ENV_NAME で環境を指定します。

      ドライランを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE \
        --dry-run=server
      
      • ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。
      • ENV_NAME はアップグレードする環境の名前です。
      • OVERRIDES_FILE は、v.1.16.0 の新しいオーバーライド ファイルです。

      チャートをアップグレードします。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE
      

      それぞれの環境の状態をチェックして、稼働していることを確認します。

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                          STATE       AGE   GATEWAYTYPE
      apigee-my-org-my-env          running     2d
    9. 環境グループ(virtualhosts)をアップグレードします。
      1. 一度にアップグレードできる環境グループ(virtualhost)は 1 つだけです。--set envgroup=ENV_GROUP_NAME を使用して環境グループを指定します。overrides.yaml ファイルに記載されている環境グループごとに、次のコマンドを繰り返します。

        ドライランを実行します。

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE \
          --dry-run=server
        

        ENV_GROUP_RELEASE_NAME は、以前に apigee-virtualhost チャートをインストールしたときに使用した名前です。通常は ENV_GROUP_NAME です。

        チャートをアップグレードします。

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE
        
      2. ApigeeRoute(AR)の状態を確認します。

        virtualhosts をインストールすると、ApigeeRouteConfig(ARC)が作成されます。これにより、Apigee ウォッチャーがコントロール プレーンから環境グループ関連の詳細を pull した時点で、ApigeeRoute(AR)が内部で作成されます。このため、対応する AR の状態が実行中であることを確認します。

        kubectl -n APIGEE_NAMESPACE get arc
        
        NAME                                STATE   AGE
        apigee-org1-dev-egroup                       2d
        kubectl -n APIGEE_NAMESPACE get ar
        
        NAME                                        STATE     AGE
        apigee-org1-dev-egroup-123abc               running   2d
    10. すべてのインストールが正常にアップグレードされたことを確認したら、古い apigee-operator リリースを apigee-system Namespace から削除します。
      1. 古い operator リリースをアンインストールします。
        helm delete operator -n apigee-system
        
      2. apigee-system Namespace を削除します。
        kubectl delete namespace apigee-system
        
    11. Apigee Namespace で operator を再度アップグレードして、削除されたクラスタ スコープのリソースを再インストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      

    以前のバージョンにロールバックする

    以前のバージョンにロールバックするには、古いチャート バージョンを使用して、アップグレード プロセスを逆の順序でロールバックします。apigee-virtualhost から始めて apigee-operator までロールバックしてから、CRD を元に戻します。

    1. すべてのチャートを apigee-virtualhost から apigee-datastore に戻します。次のコマンドは、以前のバージョン(v1.15.x)のチャートを使用していることを前提としています。

      環境グループごとに次のコマンドを実行します。

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace apigee \
        --atomic \
        --set envgroup=ENV_GROUP_NAME \
        -f 1.15_OVERRIDES_FILE
      

      環境ごとに次のコマンドを実行します。

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace apigee \
        --atomic \
        --set env=ENV_NAME \
        -f 1.15_OVERRIDES_FILE
      

      apigee-operator を除く残りのチャートを元に戻します。

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade redis apigee-redis/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
    2. apigee-system Namespace を作成します。
      kubectl create namespace apigee-system
      
    3. リソース アノテーションを apigee-system Namespace に適用します。
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
      
    4. リリース名も変更した場合は、operator リリース名でアノテーションを更新します。
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
      
    5. apigee-operatorapigee-system Namespace に再インストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace apigee-system \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
    6. 古い CRD を再インストールして CRD を元に戻します。
      kubectl apply -k apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    7. APIGEE_NAMESPACE Namespace から apigee-operator リリースをクリーンアップして、ロールバック プロセスを完了します。
      helm uninstall operator -n APIGEE_NAMESPACE
      
    8. clusterIssuer などのクラスタ スコープのリソースは、operator がアンインストールされると削除されます。次のコマンドを使用して再インストールします。
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace apigee-system \
        --atomic \
        -f 1.15_OVERRIDES_FILE