このドキュメントでは、Helm チャートを使用して Apigee ハイブリッド v1.10 をインストールする手順を詳細に説明します。
バージョン
Apigee ハイブリッド Helm チャートは Apigee ハイブリッド v1.10.x で使用されます。ハイブリッド リリースの一覧については、Apigee ハイブリッド リリース履歴をご覧ください。
前提条件
- Apigee ハイブリッド 1.10.5
- Helm v3.10 以降
-
Apigee ハイブリッド Helm チャート リポジトリへの以下でのアクセス:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
- gcloud CLI
- Apigee ハイブリッド インストール用の Google Cloud プロジェクト。プロジェクトの作成と管理をご覧ください。
- Apigee ハイブリッド インストール用の Kubernetes クラスタ。詳しくは、以下を参照してください。
範囲
- このリリースは、Apigee ハイブリッド バージョン 1.10.5 のみをサポートしています。
-
このリリースでは、次のものがサポートされています。
- 新しい Apigee ハイブリッドのインストール。
- 既存の Apigee ハイブリッドのインストールは、バージョン 1.10.5 にアップグレードされ、Apigee ハイブリッド Helm 移行ツールを使用して Helm 管理に移行されます。
- このリリースでは、次のものがサポートされています。
サポートされている 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
-
次のように置き換えます。
- SECRET_NAME と、作成した Kubernetes Secret の名前。
- CLOUD_IAM_FILE_NAME.json と、ダウンロードされた JSON ファイルの名前。
サポートされている 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-chartsexport 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 など)で個別に更新できます。
Helm チャートで Apigee ハイブリッドをインストールする準備をする
-
apigee
リソースに使用する Namespace を作成します。これは、overrides.yaml
ファイルの namespace フィールドと一致する必要があります。overrides.yaml
に存在しない場合、デフォルトはapigee
です。Namespace がすでに存在するかどうかを確認します。
kubectl get namespace apigee
名前空間が存在する場合、出力は次のようになります。
NAME STATUS AGE apigee Active 1d
-
まだ存在しない場合は、この名前空間を作成します。
kubectl create namespace apigee
-
Apigee オペレーター リソースで使用される
apigee-system
名前空間を作成します。この名前空間がすでに存在するかどうかを確認します。
kubectl get namespace apigee-system
-
まだ存在しない場合は、この名前空間を作成します。
kubectl create namespace apigee-system
-
サービス アカウントを作成し、適切な 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 形式の証明書ファイルをダウンロードします。
- サービス アカウントの証明書ファイルをダウンロードするディレクトリを作成します。これは、次のコマンドで SERVICE_ACCOUNTS_PATH の代わりに指定します。
-
次のオプションを指定して、単一のコマンドですべてのサービス アカウントを作成できます。
APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
- オーバーライド ファイルのサービス アカウントの名前を一覧表示します。
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
詳細については、次をご覧ください。
- インストールの前に、
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: ハイブリッド ランタイムを構成するをご覧ください。
- Synchronizer アクセスを有効にします。これは Apigee ハイブリッドをインストールするための前提条件です。
-
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=" }
-
出力にサービス アカウント 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 アクセスを有効にするをご覧ください。
-
- 次のコマンドで Cert Manager をインストールします。
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
-
Apigee CRD をインストールします。
-
次のコマンドを実行して、
kubectl
ドライラン機能を使用します。kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
-
dry-run コマンドで検証した後、次のコマンドを実行します。
kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
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
-
-
クラスタノードの既存のラベルを確認します。デフォルトでは、Apigee はラベルが
cloud.google.com/gke-nodepool=apigee-data
のノードでデータ Pod をスケジューリングし、ランタイム Pod はラベルがcloud.google.com/gke-nodepool=apigee-runtime
のノードでスケジューリングされます。ノードプールのラベルは、overrides.yaml
ファイルでカスタマイズできます。詳細については、専用ノードプールの構成をご覧ください。
Apigee ハイブリッド Helm チャートをインストールする
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
-
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
-
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
-
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
-
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
-
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
-
環境をインストールします。
同時にインストールできる環境は 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
- TLS 証明書を作成します。Apigee ハイブリッド構成では、ランタイム Ingress ゲートウェイの TLS 証明書を指定する必要があります。
-
証明書を作成します。本番環境では、署名済み証明書を使用する必要があります。証明書と鍵のペアか、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 証明書を作成するをご覧ください。
-
証明書を参照する Kubernetes Secret を作成します。
kubectl create secret generic NAME \ --from-file="cert=PATH_TO_CRT_FILE" \ --from-file="key=PATH_TO_KEY_FILE" \ -n apigee
-
-
仮想ホストをインストールします。
同時に 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 のバックアップと復元
- バックアップを有効にするには:
-
overrides.yaml
ファイル内の Cassandra バックアップの詳細を更新します。cassandra: backup: enabled: true serviceAccountPath: PATH_TO_GSA_FILE dbStorageBucket: BUCKET_LINK schedule: "45 23 * * 6"
-
apigee-datastore
チャートで Helm のアップグレードを実行します。helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
- 同様に、復元を有効にするには:
-
overrides.yaml
ファイル内の Cassandra 復元の詳細を更新します。cassandra: restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: PATH_TO_GSA_FILE cloudProvider: "CSI"
-
apigee-datastore
チャートで Helm のアップグレードを実行します。helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
Cassandra のバックアップと復元について詳しくは、Cassandra のバックアップの概要をご覧ください。
マルチリージョンの拡張
Helm チャートでのマルチリージョン設定には、現在の apigeectl
手順と同じ前提条件が必要です。詳細については、マルチリージョン デプロイの前提条件をご覧ください。
マルチリージョンのハイブリッドを構成する手順は、マルチリージョン シードホストを構成し、Kubernetes クラスタとコンテキストを設定する既存の手順と同じです。
最初のリージョンを構成する
最初のリージョンを構成して、2 番目のリージョンを構成する準備をするには、次の手順を用います。
- マルチリージョン用の Apigee ハイブリッドを構成するの手順に沿って、プラットフォームでマルチリージョン シードホストを構成します。
-
最初に作成したリージョンのために、Apigee Namespace で Pod を取得します。
kubectl get pods -o wide -n apigee
- このリージョン内の Cassandra のマルチリージョン シードホスト アドレス(たとえば、
10.0.0.11
)を特定します。 -
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 の値を指定する必要があります。この値はすべてのリージョンで同じである必要があります。
- SEED_HOST_IP_ADDRESS と、シードホスト IP アドレス(例:
2 番目のリージョンを構成する
新しいリージョンを設定するには:
-
リージョン 2 に
cert-manager
をインストールします。kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
- 証明書を既存のクラスタから新しいクラスタにコピーします。新しい CA ルートは、Cassandra などのハイブリッド コンポーネントによって mTLS に使用されます。したがって、クラスタ全体で一貫した証明書を使用することが不可欠です。
-
コンテキストを元の Namespace に設定します。
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
現在の Namespace の構成をファイルにエクスポートします。
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
apigee-ca
Secret をファイルにエクスポートします。kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
コンテキストを新しいリージョンのクラスタ名に設定します。
kubectl config use-context NEW_CLUSTER_NAME
-
新しいクラスタに Namespace の構成をインポートします。新しいリージョンで別の Namespace を使用する場合は、ファイル内の Namespace を必ず更新してください。
kubectl apply -f apigee-namespace.yaml
-
新しいクラスタに Secret をインポートします。
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
ここで、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 overrideshelm 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 overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- すべてのコンポーネントをインストールしたら、新しいデータセンターのすべての Pod で Cassandra を設定します。手順については、マルチリージョン用の Apigee ハイブリッドを構成するを参照し、プラットフォームを選択し、新しいリージョンの設定までスクロールしてから、手順 5. を参照します。
- データ レプリケーションが完了し、検証されたら、シードホストを更新します。
-
multiRegionSeedHost: 10.0.0.11
をoverrides-DATACENTER_NAME.yaml
から削除してください。データ レプリケーションが確立された後、
multiRegionSeedHost
エントリは不要になり、Pod IP は時間の経過とともに変更されることが想定されます。 -
変更を再適用して、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 ハイブリッドを完全にアンインストールする手順は次のとおりです。
- virtualhosts を削除します。各 virtualhosts に対して次のコマンドを実行します。
helm -n apigee delete VIRTUALHOST_RELEASE-NAME
- 環境を削除します。環境ごとに次のコマンドを実行します。
helm -n apigee delete ENV_RELEASE-NAME
- Apigee 組織を削除します。
helm -n apigee delete ORG_RELEASE-NAME
- テレメトリーを削除します。
helm -n apigee delete TELEMETRY_RELEASE-NAME
- redis を削除します。
helm -n apigee delete REDIS_RELEASE-NAME
- Ingress マネージャーを削除します。
helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
- データストアを削除します。
helm -n apigee delete DATASTORE_RELEASE-NAME
- オペレーターを削除します。
- 次の操作を行う前に、すべての CR が削除されていることを確認します。
kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
- Apigee オペレーターを削除します。
helm -n apigee-system delete OPERATOR_RELEASE-NAME
- 次の操作を行う前に、すべての CR が削除されていることを確認します。
- Apigee ハイブリッド CRD を削除します。
kubectl delete -k apigee-operator/etc/crds/default/