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-loggerapigee-martapigee-metricsapigee-mint-task-scheduler(jika Anda menggunakan Monetisasi untuk Apigee Hybrid)apigee-runtimeapigee-synchronizerapigee-udcaapigee-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-accountmungkin 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
chmoddi 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-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(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-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
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.