Archiviazione dei secret degli account di servizio nei secret Kubernetes
Questa pagina descrive come archiviare le chiavi del service account ibrido Apigee nei secret Kubernetes. L'archiviazione delle chiavi del account di servizio nei secret di Kubernetes migliora la sicurezza e semplifica la gestione all'interno dell'ambiente Kubernetes. Con le chiavi archiviate nei secret, non è necessario memorizzarle nel file system.
Account di servizio
Hybrid utilizza i seguenti service account:
Produzione
apigee-cassandra
(obbligatorio per Cassandra backup and restore in Google Cloud Storage)apigee-logger
apigee-mart
apigee-metrics
apigee-mint-task-scheduler
(se utilizzi Monetizzazione per Apigee hybrid)apigee-runtime
apigee-synchronizer
apigee-udca
apigee-watcher
Non di produzione
apigee-non-prod
Prima di iniziare
Questa procedura utilizza due variabili di ambiente facoltative:
$APIGEE_HELM_CHARTS_HOME
e $PROJECT_ID
. Se non definisci queste variabili, sostituisci il valore appropriato per ciascuna variabile negli esempi di codice.
- Crea una directory per le chiavi del account di servizio nella
directory
$APIGEE_HELM_CHARTS_HOME
:mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
- Verifica di poter eseguire lo strumento
create-service-account
. Se hai scaricato di recente i grafici, il filecreate-service-account
potrebbe non essere in modalità eseguibile. Nella directory$APIGEE_HELM_CHARTS_HOME
, esegui questo comando:$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --help
Se l'output indica un errore di autorizzazione negata, rendi eseguibile il file. Ad esempio, utilizza
chmod
in Linux, macOS o UNIX:chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
Crea le chiavi degli account di servizio
Crea o aggiorna i service account e scarica i file delle chiavi utilizzando lo strumento
create-service-account
. Questa azione scarica un file JSON
per ogni account di servizio.
I nomi dei file delle chiavi del account di servizio avranno il seguente formato:
$PROJECT_ID-apigee-SERVICE_ACCOUNT_NAME.json
Produzione
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Non di produzione
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Crea secret Kubernetes
Crea i secret di Kubernetes per archiviare le chiavi del account di servizio.
Il comando kubectl create secret
nei seguenti esempi di codice ha la struttura:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=PATH_TO_SERVICE_ACCOUNT_KEY" \ -n APIGEE_NAMESPACE
Produzione
Crea i secret con i seguenti comandi:
-
apigee-cassandra
(se pianifichi i backup in 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
(se utilizzi Monetizzazione per 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 di produzione
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
Fare riferimento alle chiavi del account di servizio nella configurazione
Dopo aver archiviato le chiavi del account di servizio come secret Kubernetes, aggiorna il file Hybrid overrides.yaml
in modo che faccia riferimento a questi secret anziché ai percorsi dei file diretti. Modifica le proprietà serviceAccountPath
pertinenti per utilizzare serviceAccountSecretRef
.
Utilizza le seguenti configurazioni serviceAccountSecretRefs
e serviceAccountRef
nelle sezioni appropriate del tuooverrides.yaml
:
Produzione
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 di produzione
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
Applica modifiche alla configurazione
Applica le modifiche ai grafici apigee-telemetry
, apigee-org
e apigee-env
con i seguenti comandi:
-
Esegui l'upgrade della telemetria Apigee:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Esegui l'upgrade dell'organizzazione Apigee:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Esegui l'upgrade dell'ambiente.
Specifica l'ambiente con
--set env=
ENV_NAME. Ripeti questo comando per ogni ambiente.helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Passaggi successivi
- Scopri di più sui ruoli e sui service account ibridi.
- Consulta la sezione Creare service account della guida all'installazione ibrida.