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
環境 apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
環境 secrets Kubernetes create delete patch update
環境 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
オペレーター apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
オペレーター apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeeredis.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeerouteconfigs.apigee.cloud.google.com Apigee get list
オペレーター apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
オペレーター apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
オペレーター apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
オペレーター cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
オペレーター cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
オペレーター cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
オペレーター *.networking.x.k8s.io Kubernetes get list watch
オペレーター apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
オペレーター certificates.cert-manager.io Kubernetes create delete get list patch update watch
オペレーター certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
オペレーター certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
オペレーター certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
オペレーター certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
オペレーター clusterissuers.cert-manager.io Kubernetes create get watch
オペレーター clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
オペレーター clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
オペレーター configmaps Kubernetes create delete get list patch update watch
オペレーター configmaps/status Kubernetes get patch update
オペレーター cronjobs.batch Kubernetes create delete get list patch update watch
オペレーター customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
オペレーター daemonsets.apps Kubernetes create delete get list patch update watch
オペレーター deployments.apps Kubernetes get list watch
オペレーター deployments.extensions Kubernetes get list watch
オペレーター destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
オペレーター endpoints Kubernetes get list watch
オペレーター endpointslices.discovery.k8s.io Kubernetes get list watch
オペレーター events Kubernetes create delete get list patch update watch
オペレーター gateways.networking.istio.io Kubernetes create delete get list patch update watch
オペレーター horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
オペレーター ingressclasses.networking.k8s.io Kubernetes get list watch
オペレーター ingresses.networking.k8s.io/status Kubernetes all verbs
オペレーター issuers.cert-manager.io Kubernetes create delete get list patch update watch
オペレーター jobs.batch Kubernetes create delete get list patch update watch
オペレーター leases.coordination.k8s.io Kubernetes create get list update
オペレーター namespaces Kubernetes create get list watch
オペレーター nodes Kubernetes get list watch
オペレーター peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
オペレーター persistentvolumeclaims Kubernetes create delete get list patch update watch
オペレーター persistentvolumes Kubernetes get list watch
オペレーター poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
オペレーター pods Kubernetes create delete get list patch update watch
オペレーター pods/exec Kubernetes create
オペレーター replicasets.apps Kubernetes create delete get list patch update watch
オペレーター replicasets.extensions Kubernetes get list watch
オペレーター resourcequotas Kubernetes create delete get list patch update watch
オペレーター rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
オペレーター roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
オペレーター secrets Kubernetes batch create delete get list patch update watch
オペレーター securitycontextconstraints.security.openshift.io Kubernetes create get list
オペレーター serviceaccounts Kubernetes create delete get list patch update watch
オペレーター services Kubernetes batch create delete get list patch update watch
オペレーター signers.certificates.k8s.io Kubernetes approve
オペレーター statefulsets.apps Kubernetes create delete get list patch update watch
オペレーター subjectaccessreviews.authorization.k8s.io Kubernetes create get list
オペレーター tokenreviews.authentication.k8s.io Kubernetes create
オペレーター virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
組織 apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
組織 secrets Kubernetes create delete patch update
組織 serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
テレメトリー apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
テレメトリー secrets Kubernetes create delete patch update
テレメトリー serviceaccounts Kubernetes create delete patch update
仮想ホスト apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
仮想ホスト 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 リソースに使用する名前空間を作成します。これは、overrides.yaml ファイルの namespace フィールドと一致する必要があります。overrides.yaml に存在しない場合、デフォルトは apigee です。
    1. 名前空間がすでに存在するかどうかを確認します。

      kubectl get namespace apigee

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

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

      kubectl create namespace apigee
  2. Apigee オペレーター リソースで使用される apigee-system Namespace を作成します。
    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)を内部で作成する ApigeeRoute(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 名前空間で 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. コンテキストを元の名前空間に設定します。

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

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

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

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

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

      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

Tolerations

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

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

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

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

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

Tolerations を 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. 仮想ホストを削除します。各仮想ホストに対して次のコマンドを実行します。
    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. delete telemetry:
    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/