Menyimpan secret akun layanan di secret Kubernetes
Halaman ini menjelaskan cara menyimpan kunci akun layanan Apigee Hybrid di secret Kubernetes. Menyimpan kunci akun layanan di secret Kubernetes meningkatkan keamanan dan menyederhanakan pengelolaan dalam lingkungan Kubernetes Anda. Dengan kunci yang disimpan dalam rahasia, Anda tidak perlu menyimpannya di sistem file.
Akun layanan
Hybrid menggunakan akun layanan berikut:
Produksi
apigee-cassandra
(diperlukan untuk pencadangan dan pemulihan Cassandra di Google Cloud Storage)apigee-logger
apigee-mart
apigee-metrics
apigee-mint-task-scheduler
(jika Anda menggunakan Monetisasi untuk Apigee Hybrid)apigee-runtime
apigee-synchronizer
apigee-udca
apigee-watcher
Non-prod
apigee-non-prod
Sebelum memulai
Prosedur ini menggunakan dua variabel lingkungan opsional:
$APIGEE_HELM_CHARTS_HOME
dan $PROJECT_ID
. Jika Anda tidak menentukan variabel ini, ganti nilai yang sesuai untuk setiap variabel dalam contoh kode.
- Buat direktori untuk kunci akun layanan di direktori
$APIGEE_HELM_CHARTS_HOME
:mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
- Pastikan Anda dapat menjalankan alat
create-service-account
. Jika Anda baru saja mendownload diagram, filecreate-service-account
mungkin tidak dalam mode yang dapat dieksekusi. Di direktori$APIGEE_HELM_CHARTS_HOME
, jalankan perintah berikut:$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --help
Jika output menunjukkan error izin ditolak, buat file dapat dieksekusi. Misalnya, gunakan
chmod
di Linux, macOS, atau UNIX:chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
Membuat kunci akun layanan
Buat atau perbarui akun layanan dan download file kunci menggunakan alat create-service-account
. Tindakan ini mendownload satu file JSON
untuk setiap akun layanan.
Nama file kunci akun layanan akan memiliki format berikut:
$PROJECT_ID-apigee-SERVICE_ACCOUNT_NAME.json
Produksi
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Non-prod
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Membuat secret Kubernetes
Buat secret Kubernetes untuk menyimpan kunci akun layanan.
Perintah kubectl create secret
dalam contoh kode berikut memiliki struktur:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=PATH_TO_SERVICE_ACCOUNT_KEY" \ -n APIGEE_NAMESPACE
Produksi
Buat secret dengan perintah berikut:
-
apigee-cassandra
(jika menjadwalkan pencadangan di 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
(jika Anda menggunakan Monetisasi untuk Apigee Hybrid)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
Non-prod
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
Mereferensikan kunci akun layanan dalam konfigurasi
Setelah menyimpan kunci akun layanan sebagai secret Kubernetes, perbarui file overrides.yaml
Hybrid Anda untuk mereferensikan secret ini, bukan jalur file langsung. Ubah properti serviceAccountPath
yang relevan untuk menggunakan serviceAccountSecretRef
.
Gunakan konfigurasi serviceAccountSecretRefs
dan serviceAccountRef
berikut di bagian yang sesuai dioverrides.yaml
Anda:
Produksi
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
Non-prod
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
Menerapkan perubahan konfigurasi
Terapkan perubahan pada diagram apigee-telemetry
, apigee-org
, dan apigee-env
dengan perintah berikut:
-
Upgrade telemetri Apigee:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Upgrade organisasi Apigee:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Upgrade lingkungan.
Tentukan lingkungan dengan
--set env=
ENV_NAME. Ulangi perintah ini untuk setiap lingkungan.helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Langkah berikutnya
- Pelajari lebih lanjut Akun layanan dan peran hybrid.
- Lihat bagian Membuat akun layanan dalam panduan penginstalan Hybrid.