Kubernetes Secret へのサービス アカウント Secret の保存
このページでは、Apigee ハイブリッド サービス アカウント キーを Kubernetes シークレットに保存する方法について説明します。Kubernetes Secret にサービス アカウント キーを保存すると、Kubernetes 環境内のセキュリティが強化され、管理が効率化されます。鍵がシークレットに保存されている場合、ファイル システムに保存する必要はありません。
サービス アカウント
ハイブリッドでは、次のサービス アカウントが使用されます。
本番環境
apigee-cassandra
(Google Cloud Storage での Cassandra のバックアップと復元に必要)apigee-logger
apigee-mart
apigee-metrics
apigee-mint-task-scheduler
(Apigee ハイブリッドの収益化を使用している場合)apigee-runtime
apigee-synchronizer
apigee-udca
apigee-watcher
非本番環境
apigee-non-prod
始める前に
この手順では、$APIGEE_HELM_CHARTS_HOME
と $PROJECT_ID
の 2 つの省略可能な環境変数を使用します。これらの変数を定義しない場合は、コードサンプルの各変数を適切な値で置き換えてください。
$APIGEE_HELM_CHARTS_HOME
ディレクトリにサービス アカウント キーのディレクトリを作成します。mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
create-service-account
ツールを実行できることを確認します。チャートをダウンロードしたばかりの場合は、create-service-account
ファイルが実行可能モードになっていない可能性があります。$APIGEE_HELM_CHARTS_HOME
ディレクトリで、次のコマンドを実行します。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --help
出力に権限拒否エラーが表示された場合は、ファイルを実行可能にします。たとえば、Linux、macOS、UNIX で
chmod
を使用します。chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
サービス アカウント キーを作成する
create-service-account
ツールを使用して、サービス アカウントを作成または更新し、キーファイルをダウンロードします。この操作により、サービス アカウントごとに 1 つの JSON ファイルがダウンロードされます。
サービス アカウント キーのファイル名は次の形式になります。
$PROJECT_ID-apigee-SERVICE_ACCOUNT_NAME.json
本番環境
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
非本番環境
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Kubernetes Secret を作成する
サービス アカウント キーを保存する Kubernetes Secret を作成します。
次のコードサンプルの kubectl create secret
コマンドの構造は次のとおりです。
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=PATH_TO_SERVICE_ACCOUNT_KEY" \ -n APIGEE_NAMESPACE
本番環境
次のコマンドを使用してシークレットを作成します。
-
apigee-cassandra
(Cloud Storage へのバックアップのスケジュール設定の場合)kubectl create secret generic apigee-cassandra-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-cassandra.json" \ -n APIGEE_NAMESPACE
-
apigee-logger
kubectl create secret generic apigee-logger-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-logger.json" \ -n APIGEE_NAMESPACE
-
apigee-mart
kubectl create secret generic apigee-mart-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-mart.json" \ -n APIGEE_NAMESPACE
-
apigee-metrics
kubectl create secret generic apigee-metrics-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-metrics.json" \ -n APIGEE_NAMESPACE
-
apigee-mint-task-scheduler
(Apigee ハイブリッドの収益化を使用している場合)kubectl create secret generic apigee-mint-task-scheduler-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-mint-task-scheduler.json" \ -n APIGEE_NAMESPACE
-
apigee-runtime
kubectl create secret generic apigee-runtime-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-runtime.json" \ -n APIGEE_NAMESPACE
-
apigee-synchronizer
kubectl create secret generic apigee-synchronizer-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-synchronizer.json" \ -n APIGEE_NAMESPACE
-
apigee-udca
kubectl create secret generic apigee-udca-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-udca.json" \ -n APIGEE_NAMESPACE
-
apigee-watcher
kubectl create secret generic apigee-watcher-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-watcher.json" \ -n APIGEE_NAMESPACE
非本番環境
kubectl create secret generic apigee-non-prod-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-non-prod.json" \ -n APIGEE_NAMESPACE
構成でサービス アカウント キーを参照する
サービス アカウント キーを Kubernetes Secret として保存したら、Hybrid overrides.yaml
ファイルを更新して、直接ファイルパスではなくこれらの Secret を参照するようにします。関連する serviceAccountPath
プロパティを変更して serviceAccountSecretRef
を使用します。
overrides.yaml
の適切なセクションで、次の serviceAccountSecretRefs
と serviceAccountRef
の構成を使用します。
本番環境
envs: - name: test serviceAccountSecretRefs: synchronizer: apigee-synchronizer-svc-account runtime: apigee-runtime-svc-account udca: apigee-udca-svc-account mart: serviceAccountRef: apigee-mart-svc-account # Use the same service account for mart.serviceAccountRef and connectAgent.serviceAccountRef connectAgent: serviceAccountRef: apigee-mart-svc-account # Use the same service account for mart.serviceAccountRef and connectAgent.serviceAccountRef logger: serviceAccountRef: apigee-logger-svc-account metrics: serviceAccountRef: apigee-metrics-svc-account udca: serviceAccountRef: apigee-udca-svc-account watcher: serviceAccountRef: apigee-watcher-svc-account # If Scheduling backups in Cloud Storage cassandra: backup: serviceAccountRef: apigee-cassandra-svc-account # If using Monetization for Apigee hybrid mintTaskScheduler: serviceAccountRef: apigee-mint-task-scheduler-svc-account
非本番環境
envs: - name: test-env serviceAccountSecretRefs: synchronizer: apigee-non-prod-svc-account runtime: apigee-non-prod-svc-account udca: apigee-non-prod-svc-account mart: serviceAccountRef: apigee-non-prod-svc-account connectAgent: serviceAccountRef: apigee-non-prod-svc-account logger: serviceAccountRef: apigee-non-prod-svc-account metrics: serviceAccountRef: apigee-non-prod-svc-account udca: serviceAccountRef: apigee-non-prod-svc-account watcher: serviceAccountRef: apigee-non-prod-svc-account # If Scheduling backups in Cloud Storage cassandra: backup: serviceAccountRef: apigee-non-prod-svc-account # If using Monetization for Apigee hybrid mintTaskScheduler: serviceAccountRef: apigee-non-prod-svc-account
構成の変更を適用する
次のコマンドを使用して、変更を apigee-telemetry
、apigee-org
、apigee-env
の各チャートに適用します。
-
Apigee テレメトリーをアップグレードします。
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Apigee 組織をアップグレードします。
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
環境をアップグレードします。
--set env=
ENV_NAME で環境を指定します。環境ごとにこのコマンドを繰り返します。helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
次のステップ
- 詳しくは、ハイブリッド サービス アカウントとロールをご覧ください。
- ハイブリッド インストール ガイドのサービス アカウントを作成するセクションをご覧ください。