Helm チャートでの Apigee ハイブリッドのインストールと管理

このドキュメントでは、Helm チャートを使用して Apigee ハイブリッド v1.10 をインストールする手順を詳細に説明します。

バージョン

Apigee ハイブリッド Helm チャートは Apigee ハイブリッド v1.10.x で使用されます。ハイブリッド リリースの一覧については、Apigee ハイブリッド リリース履歴をご覧ください。

前提条件

範囲

サポートされている Kubernetes のプラットフォームとバージョン

プラットフォーム バージョン
GKE 1.24、1.25、1.26
AKS 1.24、1.25、1.26
EKS 1.24、1.25、1.26
OpenShift 4.11、4.12

制限事項

  • Helm チャートは CRD を完全にサポートしていません。そのため、kubectl -k コマンドを使用して、それらのインストールとアップグレードを行います。Google は、Kubernetes 管理に関するコミュニティと Google のベスト プラクティスに従うことを目指しています。Helm を通じた CRD デプロイメントは、幅広いサポート、またはそのようなモデルに対するリクエストが認められるコミュニティの状態にまだ達していません。したがって、このドキュメントで説明するように、Apigee CRD の管理は kubectl を使用して行う必要があります。
  • apigeectl では、overrides.yaml 全体でサービス アカウントと証明書用のファイルを使用しています。ただし、Helm はチャート ディレクトリの外部にあるファイルを参照できません。サービス アカウントと証明書ファイルには、次のいずれかのオプションを選択します。
    • 関連するファイルのコピーを各チャート ディレクトリに配置します。
    • 各ファイルまたはフォルダの各チャート ディレクトリ内にシンボリック リンクを作成します。Helm はチャート ディレクトリからのシンボリック リンクをたどりますが、次のような警告が出力されます。
      apigee-operator/gsa -> ../gsa
    • Kubernetes Secret を使用します。たとえば、サービス アカウントの場合:
      kubectl create secret generic SECRET_NAME \
        --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \
        -n apigee
      

サポートされている Kubernetes のプラットフォームとバージョン

サポートされているプラットフォームの一覧については、Apigee ハイブリッドでサポートされているプラットフォームの表の v1.10 の列をご覧ください。

必要な権限

この表に、Kubernetes と Apigee に必要なリソースと権限の一覧を示します。

この表をフィルタリングするには、次の 1 つ以上を行います。カテゴリを選択、検索キーワードを入力、または列見出しをクリックして並べ替えます。

カテゴリ リソース リソースの種類 Kubernetes RBAC 権限
Datastore apigeedatastores.apigee.cloud.google.com Apigee create delete patch update
Datastore certificates.cert-manager.io Kubernetes create delete patch update
Datastore cronjobs.batch Kubernetes create delete patch update
Datastore jobs.batch Kubernetes create delete patch update
Datastore secrets Kubernetes create delete patch update
Env apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
Env secrets Kubernetes create delete patch update
Env serviceaccounts Kubernetes create delete patch update
Ingress manager certificates.cert-manager.io Kubernetes create delete patch update
Ingress manager configmaps Kubernetes create delete patch update
Ingress manager deployments.apps Kubernetes create get delete patch update
Ingress manager horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
Ingress manager issuers.cert-manager.io Kubernetes create delete patch update
Ingress manager serviceaccounts Kubernetes create delete patch update
Ingress manager services Kubernetes create delete patch update
Operator apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
Operator apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
Operator apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeredis.apigee.cloud.google.com/status Apigee get patch update
Operator apigeerouteconfigs.apigee.cloud.google.com Apigee get list
Operator apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
Operator apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
Operator cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
Operator cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
Operator cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
Operator *.networking.x.k8s.io Kubernetes get list watch
Operator apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
Operator certificates.cert-manager.io Kubernetes create delete get list patch update watch
Operator certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
Operator certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
Operator certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
Operator certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
Operator clusterissuers.cert-manager.io Kubernetes create get watch
Operator clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator configmaps Kubernetes create delete get list patch update watch
Operator configmaps/status Kubernetes get patch update
Operator cronjobs.batch Kubernetes create delete get list patch update watch
Operator customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
Operator daemonsets.apps Kubernetes create delete get list patch update watch
Operator deployments.apps Kubernetes get list watch
Operator deployments.extensions Kubernetes get list watch
Operator destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
Operator endpoints Kubernetes get list watch
Operator endpointslices.discovery.k8s.io Kubernetes get list watch
Operator events Kubernetes create delete get list patch update watch
Operator gateways.networking.istio.io Kubernetes create delete get list patch update watch
Operator horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
Operator ingressclasses.networking.k8s.io Kubernetes get list watch
Operator ingresses.networking.k8s.io/status Kubernetes all verbs
Operator issuers.cert-manager.io Kubernetes create delete get list patch update watch
Operator jobs.batch Kubernetes create delete get list patch update watch
Operator leases.coordination.k8s.io Kubernetes create get list update
Operator namespaces Kubernetes create get list watch
Operator nodes Kubernetes get list watch
Operator peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
Operator persistentvolumeclaims Kubernetes create delete get list patch update watch
Operator persistentvolumes Kubernetes get list watch
Operator poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
Operator pods Kubernetes create delete get list patch update watch
Operator pods/exec Kubernetes create
Operator replicasets.apps Kubernetes create delete get list patch update watch
Operator replicasets.extensions Kubernetes get list watch
Operator resourcequotas Kubernetes create delete get list patch update watch
Operator rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator secrets Kubernetes batch create delete get list patch update watch
Operator securitycontextconstraints.security.openshift.io Kubernetes create get list
Operator serviceaccounts Kubernetes create delete get list patch update watch
Operator services Kubernetes batch create delete get list patch update watch
Operator signers.certificates.k8s.io Kubernetes approve
Operator statefulsets.apps Kubernetes create delete get list patch update watch
Operator subjectaccessreviews.authorization.k8s.io Kubernetes create get list
Operator tokenreviews.authentication.k8s.io Kubernetes create
Operator virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
Org apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
Org secrets Kubernetes create delete patch update
Org serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
Telemetry apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
Telemetry secrets Kubernetes create delete patch update
Telemetry serviceaccounts Kubernetes create delete patch update
Virtual host apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
Virtual host secrets Kubernetes create delete patch update

関連項目:

インストールの準備をする

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

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

Apigee Helm チャートを pull する

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

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.10.5
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 ハイブリッドをインストールする

インストール シーケンスの概要

コンポーネントのインストールは、次の図に示すように、左から右に順番に行われます。図に垂直に積まれたコンポーネントは、順不同で一緒にインストールできます。コンポーネントをインストールすると、そのコンポーネントを任意の箇所(たとえば、レプリカ、メモリ、CPU など)で個別に更新できます。

インストール シーケンス: 証明書マネージャー、次に CRD、次に Apigee オペレータ、次にスタックされたコンポーネント: redis と datastore および telemetry と Ingress マネージャー、次に組織、次にスタックされたコンポーネント: 環境と仮想ホスト

Helm チャートで Apigee ハイブリッドをインストールする準備をする

  1. apigee リソースに使用する Namespace を作成します。これは、overrides.yaml ファイルの namespace フィールドと一致する必要があります。overrides.yaml に存在しない場合、デフォルトは apigee です。
    1. Namespace がすでに存在するかどうかを確認します。

      kubectl get namespace apigee

      名前空間が存在する場合、出力は次のようになります。

        NAME     STATUS   AGE
        apigee   Active   1d
    2. まだ存在しない場合は、この名前空間を作成します。

      kubectl create namespace apigee
  2. Apigee オペレーター リソースで使用される apigee-system 名前空間を作成します。
    1. この名前空間がすでに存在するかどうかを確認します。

      kubectl get namespace apigee-system
    2. まだ存在しない場合は、この名前空間を作成します。

      kubectl create namespace apigee-system
  3. サービス アカウントを作成し、適切な IAM ロールをそれらに割り当てます。Apigee ハイブリッドでは、次のサービス アカウントが使用されます。

    サービス アカウント IAM ロール
    apigee-cassandra Storage オブジェクト管理者
    apigee-logger ログ書き込み
    apigee-mart Apigee Connect エージェント
    apigee-metrics モニタリング指標の書き込み
    apigee-runtime ロールは不要
    apigee-synchronizer Apigee Synchronizer 管理者
    apigee-udca Apigee Analytics エージェント
    apigee-watcher Apigee ランタイム エージェント

    Apigee には、apigee-operator/etc/tools ディレクトリ内に create-service-account ツールが用意されています。

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    このツールは、サービス アカウントを作成し、各アカウントに IAM ロールを割り当て、アカウントごとに JSON 形式の証明書ファイルをダウンロードします。

    1. サービス アカウントの証明書ファイルをダウンロードするディレクトリを作成します。これは、次のコマンドで SERVICE_ACCOUNTS_PATH の代わりに指定します。
    2. 次のオプションを指定して、単一のコマンドですべてのサービス アカウントを作成できます。
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. オーバーライド ファイルのサービス アカウントの名前を一覧表示します。
      ls service-accounts
      
      my_project-apigee-cassandra.json    my_project-apigee-runtime.json
      my_project-apigee-logger.json       my_project-apigee-synchronizer.json
      my_project-apigee-mart.json         my_project-apigee-udca.json
      my_project-apigee-metrics.json      my_project-apigee-watcher.json

      詳細については、次をご覧ください。

  4. インストールの前に、overrides.yaml ファイルを調べて設定を確認します。
    instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER
    namespace: apigee # required for Helm charts installation
    
    # By default, logger and metrics are enabled and requires below details
    # Google Cloud project and cluster
    gcp:
      projectID: PROJECT_ID
      region: REGION
    
    k8sCluster:
      name: CLUSTER_NAME
      region: REGION
    
    org: ORG_NAME
    
    envs:
    - name: "ENV_NAME"
      serviceAccountPaths:
        runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT"
        synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT"
        udca: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    ingressGateways:
    - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389.
      replicaCountMin: 1
      replicaCountMax: 2
      svcType: LoadBalancer
    
    virtualhosts:
    - name: ENV_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: GATEWAY_NAME
      sslSecret: SECRET_NAME
    
    mart:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    logger:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT"
    
    metrics:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT"
    
    udca:
      serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    connectAgent:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    watcher:
      serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"

    これは、この Helm インストールで使用するオーバーライド構成と同じです。その他の設定については、構成プロパティ リファレンスをご覧ください。

    オーバーライド ファイルのその他の例については、ステップ 6: ハイブリッド ランタイムを構成するをご覧ください。

  5. Synchronizer アクセスを有効にします。これは Apigee ハイブリッドをインストールするための前提条件です。
    1. Synchronizer アクセスがすでに有効になっているかどうかを、次のコマンドで確認します。

      export TOKEN=$(gcloud auth print-access-token)
      
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \
        -d ''
      

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

      {
        "identities":[
           "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"
        ],
        "etag":"BwWJgyS8I4w="
      }
    2. 出力にサービス アカウント ID が含まれていない場合は、Synchronizer アクセスを有効にします。このタスクを行うには、アカウントに Apigee 組織管理者の IAM ロールroles/apigee.admin)が必要です。

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \
        -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
      

      詳細については、Apigee ハイブリッドのインストール ドキュメントのステップ 7: Synchronizer アクセスを有効にするをご覧ください。

  6. 次のコマンドで Cert Manager をインストールします。
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  7. 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                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  8. クラスタノードの既存のラベルを確認します。デフォルトでは、Apigee はラベルが cloud.google.com/gke-nodepool=apigee-data のノードでデータ Pod をスケジューリングし、ランタイム Pod はラベルが cloud.google.com/gke-nodepool=apigee-runtime のノードでスケジューリングされます。ノードプールのラベルは、overrides.yaml ファイルでカスタマイズできます。

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

Apigee ハイブリッド Helm チャートをインストールする

  1. Apigee Operator/Controller をインストールします。

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f overrides.yaml
    

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

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.10.5   1.10.5

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

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
  2. Apigee データストアをインストールします。

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

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

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  3. Apigee テレメトリーをインストールします。

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

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

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  4. Apigee Redis をインストールします。

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

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

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  5. Apigee Ingress マネージャーをインストールします。

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

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

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  6. Apigee 組織をインストールします。

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

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

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  7. 環境をインストールします。

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

    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    

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

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  8. TLS 証明書を作成します。Apigee ハイブリッド構成では、ランタイム Ingress ゲートウェイの TLS 証明書を指定する必要があります。
    1. 証明書を作成します。本番環境では、署名済み証明書を使用する必要があります。証明書と鍵のペアか、Kubernetes Secret を使用できます。

      デモやテスト インストールの場合、ランタイム ゲートウェイは自己署名認証情報を受け入れます。次の例では、openssl を使用して自己署名認証情報を生成します。

      openssl req -nodes -new -x509 \
        -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \
        -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \
        -subj '/CN='YOUR_DOMAIN'' -days 3650
      

      詳しくは、手順 5: TLS 証明書を作成するをご覧ください。

    2. 証明書を参照する Kubernetes Secret を作成します。

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. 仮想ホストをインストールします。

    同時に 1 つの環境グループ(virtualhost)をインストールする必要があります。--set envgroup= ENV_GROUP_NAME を使用して環境グループを指定します。

    # repeat the following command for each env group mentioned in the overrides.yaml file
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml
    

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

    kubectl -n apigee get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    kubectl -n apigee get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-xxxxxx                running   2d

Apigee ハイブリッドのある Helm チャートの追加のユースケース

Cassandra のバックアップと復元

  1. バックアップを有効にするには:
    1. overrides.yaml ファイル内の Cassandra バックアップの詳細を更新します。

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
    2. apigee-datastore チャートで Helm のアップグレードを実行します。

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. 同様に、復元を有効にするには:
    1. overrides.yaml ファイル内の Cassandra 復元の詳細を更新します。

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. apigee-datastore チャートで Helm のアップグレードを実行します。

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

Cassandra のバックアップと復元について詳しくは、Cassandra のバックアップの概要をご覧ください。

マルチリージョンの拡張

Helm チャートでのマルチリージョン設定には、現在の apigeectl 手順と同じ前提条件が必要です。詳細については、マルチリージョン デプロイの前提条件をご覧ください。

マルチリージョンのハイブリッドを構成する手順は、マルチリージョン シードホストを構成し、Kubernetes クラスタとコンテキストを設定する既存の手順と同じです。

最初のリージョンを構成する

最初のリージョンを構成して、2 番目のリージョンを構成する準備をするには、次の手順を用います。

  1. マルチリージョン用の Apigee ハイブリッドを構成するの手順に沿って、プラットフォームでマルチリージョン シードホストを構成します。
  2. 最初に作成したリージョンのために、Apigee Namespace で Pod を取得します。

    kubectl get pods -o wide -n apigee
    
  3. このリージョン内の Cassandra のマルチリージョン シードホスト アドレス(たとえば、10.0.0.11)を特定します。
  4. 2 番目のリージョン用の overrides.yaml ファイルを準備し、次のようにシードホストの IP アドレスを追加します。

    cassandra:
      multiRegionSeedHost: "SEED_HOST_IP_ADDRESS"
      datacenter: "DATACENTER_NAME"
      rack: "RACK_NAME"
      clusterName: CLUSTER_NAME
      hostNetwork: false

    次のように置き換えます。

    • SEED_HOST_IP_ADDRESS と、シードホスト IP アドレス(例: 10.0.0.11)。
    • DATACENTER_NAME と、データセンター名(例: dc-2)。
    • RACK_NAME と、ラック名(例: ra-1)。
    • CLUSTER_NAME を Apigee クラスタの名前で置き換えます。デフォルトでは、値は apigeecluster です。別のクラスタ名を使用する場合は、cassandra.clusterName の値を指定する必要があります。この値はすべてのリージョンで同じである必要があります。

2 番目のリージョンを構成する

新しいリージョンを設定するには:

  1. リージョン 2 に cert-manager をインストールします。

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. 証明書を既存のクラスタから新しいクラスタにコピーします。新しい CA ルートは、Cassandra などのハイブリッド コンポーネントによって mTLS に使用されます。したがって、クラスタ全体で一貫した証明書を使用することが不可欠です。
    1. コンテキストを元の Namespace に設定します。

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. 現在の Namespace の構成をファイルにエクスポートします。

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. apigee-ca Secret をファイルにエクスポートします。

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. コンテキストを新しいリージョンのクラスタ名に設定します。

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. 新しいクラスタに Namespace の構成をインポートします。新しいリージョンで別の Namespace を使用する場合は、ファイル内の Namespace を必ず更新してください。

      kubectl apply -f apigee-namespace.yaml
      
    6. 新しいクラスタに Secret をインポートします。

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  3. ここで、Helm チャートを使用して、次の Helm チャート コマンド(リージョン 1 と同様)で、Apigee ハイブリッドを新しいリージョンにインストールします。

    helm upgrade operator apigee-operator \
      --install \
      --namespace apigee-system \
      --atomic
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade datastore apigee-datastore \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env group mentioned on the overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  4. すべてのコンポーネントをインストールしたら、新しいデータセンターのすべての Pod で Cassandra を設定します。手順については、マルチリージョン用の Apigee ハイブリッドを構成するを参照し、プラットフォームを選択し、新しいリージョンの設定までスクロールしてから、手順 5. を参照します。
  5. データ レプリケーションが完了し、検証されたら、シードホストを更新します。
    1. multiRegionSeedHost: 10.0.0.11overrides-DATACENTER_NAME.yaml から削除してください。

      データ レプリケーションが確立された後、multiRegionSeedHost エントリは不要になり、Pod IP は時間の経過とともに変更されることが想定されます。

    2. 変更を再適用して、Apigee Datastore CR を更新します。

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides-DATACENTER_NAME.yaml
      

非公開でのイメージのホスト

一般公開の Google Cloud リポジトリを使用する代わりに、イメージを非公開でホストすることもできます。各コンポーネントをオーバーライドする代わりに、オーバーライドにハブの詳細を追加できます。

hub: PRIVATE_REPO

たとえば、次のハブが指定されている場合、イメージパスは自動的に解決されます。

hub: private-docker-host.com

例:

## an example of internal component vs 3rd party
containers:
- name: apigee-udca
  image: private-docker-host.com/apigee-udca:1.10.5
  imagePullPolicy: IfNotPresent

containers:
- name: apigee-ingressgateway
  image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless
  imagePullPolicy: IfNotPresent

Google Cloud リポジトリでホストされている Apigee イメージのリストをコマンドラインで表示するには:

./apigee-operator/etc/tools/apigee-pull-push.sh --list

Toleration

Kubernetes の Taint と Toleration の機能を使用するには、Apigee ハイブリッド コンポーネントごとに tolerations オーバーライド プロパティを定義する必要があります。Toleration の定義は、次のコンポーネントでサポートされます。

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

これらのコンポーネントの詳細については、構成プロパティ リファレンスをご覧ください。

たとえば、Toleration を Apigee オペレーターのデプロイに適用するには:

ao:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Toleration を Cassandra StatefulSet に適用するには:

cassandra:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Helm を使用して Apigee ハイブリッドをアンインストールする

特定のアップデートまたはリリースをアンインストールするには、helm [uninstall/delete] RELEASE-NAME -n NAMESPACE コマンドを使用します。

クラスタから Apigee ハイブリッドを完全にアンインストールする手順は次のとおりです。

  1. virtualhosts を削除します。各 virtualhosts に対して次のコマンドを実行します。
    helm -n apigee delete VIRTUALHOST_RELEASE-NAME
    
  2. 環境を削除します。環境ごとに次のコマンドを実行します。
    helm -n apigee delete ENV_RELEASE-NAME
    
  3. Apigee 組織を削除します。
    helm -n apigee delete ORG_RELEASE-NAME
    
  4. テレメトリーを削除します。
    helm -n apigee delete TELEMETRY_RELEASE-NAME
    
  5. redis を削除します。
    helm -n apigee delete REDIS_RELEASE-NAME
    
  6. Ingress マネージャーを削除します。
    helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
    
  7. データストアを削除します。
    helm -n apigee delete DATASTORE_RELEASE-NAME
    
  8. オペレーターを削除します。
    1. 次の操作を行う前に、すべての CR が削除されていることを確認します。
      kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
      
    2. Apigee オペレーターを削除します。
      helm -n apigee-system delete OPERATOR_RELEASE-NAME
      
  9. Apigee ハイブリッド CRD を削除します。
    kubectl delete -k  apigee-operator/etc/crds/default/