Stocker des secrets de compte de service dans des secrets Kubernetes
Cette page explique comment stocker les clés de compte de service Apigee hybrid dans des secrets Kubernetes. Le stockage des clés de compte de service dans les secrets Kubernetes renforce la sécurité et simplifie la gestion dans votre environnement Kubernetes. Avec les clés stockées dans les secrets, vous n'avez pas besoin de les stocker dans le système de fichiers.
Comptes de service
Apigee hybrid utilise les comptes de service suivants :
Production
apigee-cassandra
(obligatoire pour Sauvegarder et restaurer les bases de données Cassandra avec Cloud Storage)apigee-logger
apigee-mart
apigee-metrics
apigee-mint-task-scheduler
(si vous utilisez Monétisation pour Apigee hybrid)apigee-runtime
apigee-synchronizer
apigee-udca
apigee-watcher
Hors production
apigee-non-prod
Avant de commencer
Cette procédure utilise deux variables d'environnement facultatives : $APIGEE_HELM_CHARTS_HOME
et $PROJECT_ID
. Si vous ne définissez pas ces variables, remplacez la valeur appropriée pour chaque variable dans les exemples de code.
- Créez un répertoire pour les clés de compte de service dans le répertoire
$APIGEE_HELM_CHARTS_HOME
:mkdir -p $APIGEE_HELM_CHARTS_HOME/service-accounts
- Vérifiez que vous pouvez exécuter l'outil
create-service-account
. Si vous avez récemment téléchargé les graphiques, il est possible que le fichiercreate-service-account
ne soit pas en mode exécutable. Exécutez la commande suivante dans votre répertoire$APIGEE_HELM_CHARTS_HOME
:$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --help
Si le résultat indique une erreur d'autorisation refusée, rendez le fichier exécutable. Par exemple, utilisez
chmod
sous Linux, macOS ou UNIX :chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
Créez des clés de compte de service.
Créez ou mettez à jour les comptes de service, puis téléchargez les fichiers de clé à l'aide de l'outil create-service-account
. Cette action télécharge un fichier JSON pour chaque compte de service.
Les noms de fichiers des clés de compte de service auront le format suivant :
$PROJECT_ID-apigee-SERVICE_ACCOUNT_NAME.json
Production
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Hors production
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \ --env non-prod \ --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
Créer des secrets Kubernetes
Créez les secrets Kubernetes pour stocker les clés du compte de service.
La commande kubectl create secret
dans les exemples de code suivants a la structure suivante :
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=PATH_TO_SERVICE_ACCOUNT_KEY" \ -n APIGEE_NAMESPACE
Production
Créez les secrets à l'aide des commandes suivantes :
-
apigee-cassandra
(si planifier des sauvegardes dans 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
(si vous utilisez Monétisation pour 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
Hors production
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
Faire référence aux clés de compte de service dans la configuration
Après avoir stocké les clés de compte de service en tant que secrets Kubernetes, mettez à jour votre fichier overrides.yaml
hybride pour référencer ces secrets au lieu des chemins d'accès directs aux fichiers. Modifiez les propriétés serviceAccountPath
concernées pour utiliser serviceAccountSecretRef
.
Utilisez les configurations serviceAccountSecretRefs
et serviceAccountRef
suivantes dans les sections appropriées de votre overrides.yaml
:
Production
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
Hors production
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
Appliquer les modifications de configuration
Appliquez les modifications aux charts apigee-telemetry
, apigee-org
et apigee-env
à l'aide des commandes suivantes :
-
Mettez à niveau la télémétrie Apigee :
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Mettez à niveau l'organisation Apigee :
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
-
Mettez à niveau l'environnement.
Spécifiez l'environnement avec
--set env=
ENV_NAME. Répétez cette commande pour chaque environnement.helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Étapes suivantes
- En savoir plus sur les comptes de service et les rôles hybrides
- Consultez la section Créer des comptes de service du guide d'installation hybride.