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-loggerapigee-martapigee-metricsapigee-mint-task-scheduler(se utilizzi Monetizzazione per Apigee hybrid)apigee-runtimeapigee-synchronizerapigee-udcaapigee-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-accountpotrebbe 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
chmodin 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-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(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-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 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.