Kubernetes Secret へのサービス アカウント Secret の保存
このページでは、Apigee ハイブリッド サービス アカウント キーを Kubernetes シークレットに保存する方法について説明します。Kubernetes Secret にサービス アカウント キーを保存すると、Kubernetes 環境内のセキュリティが強化され、管理が効率化されます。鍵がシークレットに保存されている場合、ファイル システムに保存する必要はありません。
サービス アカウント
ハイブリッドでは、次のサービス アカウントが使用されます。
本番環境
apigee-cassandra(Google Cloud Storage での Cassandra のバックアップと復元に必要)apigee-loggerapigee-martapigee-metricsapigee-mint-task-scheduler(Apigee ハイブリッドの収益化を使用している場合)apigee-runtimeapigee-synchronizerapigee-udcaapigee-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-loggerkubectl 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-martkubectl 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-metricskubectl 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-runtimekubectl 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-synchronizerkubectl 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-udcakubectl 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-watcherkubectl 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
次のステップ
- 詳しくは、ハイブリッド サービス アカウントとロールをご覧ください。
- ハイブリッド インストール ガイドのサービス アカウントを作成するセクションをご覧ください。