Panoramica
Questa funzionalità consente agli amministratori della piattaforma di:
- Ruota le credenziali di Cassandra in Hashicorp Vault.
- Esegui il rollback alle credenziali Cassandra precedenti in Vault in caso di problemi durante la rotazione della password.
- Ruota la password di Cassandra per una regione alla volta, in modo da garantire un impatto minimo sulla disponibilità del servizio e mantenere il controllo sul processo di rotazione.
- Monitora l'inizio, l'avanzamento e il completamento della rotazione per una singola regione.
Questa funzionalità è disponibile in Apigee Hybrid 1.13.1 e versioni successive.
Prima di iniziare
Prima di configurare la rotazione delle credenziali:
- Esegui il backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali pre-rotazione.
- Assicurati che il cluster sia in stato integro (ovvero che tutte le risorse Apigee siano in esecuzione e che non siano in attesa modifiche dello stato).
Configurazione di una singola regione
-
Crea una nuova risorsa Kubernetes
SecretProviderClassnel tuo spazio dei nomi Apigee per le nuove credenziali Cassandra. Per un modello da utilizzare, consulta Memorizzare i secret di Cassandra in HashiCorp Vault. In questo modo, un ruolo Vault può accedere ai secret all'interno degli spazi dei nomi Kubernetes. -
Crea una nuova risorsa personalizzata
SecretRotationutilizzando il seguente modello:# rotation.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_PROCESS_NAME namespace: APIGEE_NAMESPACE spec: organizationId: ORG_NAME rotationId: ROTATION_ID timeoutMinutes: 480 # optional. overrides the default (480m == 8hr). # less than or equal to 0 means infinite timeout. precheck: true cassandra: oldSecretProviderClass: OLD_SPC_NAME newSecretProviderClass: NEW_SPC_NAME jobType: ROTATE- ROTATION_PROCESS_NAME: un nome univoco per il job di rotazione. Dovrai impostare
metadata.namesu un valore univoco per il job di controllo preliminare della rotazione e di nuovo per il job di rotazione. Ad esempio,sr-1-precheckseguito dasr-1. - ROTATION_ID: imposta
spec.rotationIdsu un identificatore personalizzato, ad esempiorotation-1-precheck. - NEW_SPC_NAME: imposta
spec.cassandra.newSecretProviderClasssul nuovo nome della classe del fornitore di secret che hai creato nel passaggio precedente. - OLD_SPC_NAME: imposta
spec.cassandra.oldSecretProviderClasssul nome dell'SPC attualmente utilizzato daApigeeDatastore.
- ROTATION_PROCESS_NAME: un nome univoco per il job di rotazione. Dovrai impostare
-
Attiva il job di controllo preliminare della rotazione applicando il file
rotation.yaml.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
-
Controlla lo stato del job per verificare quando viene completato il job di pre-controllo.
kubectl -n APIGEE_NAMESPACE get job sr-(rotationId)-(rotate|rollback|cleanup)-job
-
Al termine del job di controllo preliminare della rotazione, modifica il valore di
metadata.namee impostaspec.prechecksufalse. Applica di nuovo il file per eseguire la rotazione.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
-
Una volta completato il job di rotazione e verificato che il traffico continui a fluire correttamente, pulisci la procedura con i due passaggi seguenti:
-
Aggiorna il valore di
metadata.namee impostaspec.cassandra.jobTypesuCLEANUP. -
Attiva il job di pulizia applicando il file.
kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
Al termine del job di pulizia, il processo di rotazione è completato.
-
Aggiorna il valore di
- Esegui il backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali post-rotazione.
- Elimina le vecchie credenziali, il ruolo e la policy di Cassandra da Vault.
Configurazione multiregionale
Le procedure di configurazione multiregionale sono suddivise in due sezioni: configurazione per la prima regione e configurazione per le regioni rimanenti.
- Completa i seguenti passaggi nella prima regione prima di iniziare con le regioni successive.
-
Crea una nuova risorsa Kubernetes
SecretProviderClassnello spazio dei nomiAPIGEE_NAMESPACEper le nuove credenziali Cassandra. Per un modello da utilizzare, consulta Memorizzare i secret di Cassandra in HashiCorp Vault. In questo modo, un ruolo Vault può accedere ai secret all'interno degli spazi dei nomi Kubernetes. -
Crea una nuova risorsa personalizzata
SecretRotationutilizzando il seguente modello:# rotation.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_PROCESS_NAME namespace: APIGEE_NAMESPACE spec: organizationId: ORG_NAME rotationId: ROTATION_ID timeoutMinutes: -1 # this value is required and should not be changed. precheck: true cassandra: oldSecretProviderClass: OLD_SPC_NAME newSecretProviderClass: NEW_SPC_NAME jobType: ROTATE- ROTATION_PROCESS_NAME: un nome univoco per il job di rotazione. Dovrai impostare
metadata.namesu un valore univoco per il job di controllo preliminare della rotazione e di nuovo per il job di rotazione. Ad esempio,sr-1-precheckseguito dasr-1. - ROTATION_ID: imposta
spec.rotationIdsu un identificatore personalizzato, ad esempiorotation-1-precheck. - NEW_SPC_NAME: imposta
spec.cassandra.newSecretProviderClasssul nuovo nome della classe del fornitore di secret che hai creato nel passaggio precedente. - OLD_SPC_NAME: imposta
spec.cassandra.oldSecretProviderClasssul nome dell'SPC attualmente utilizzato daApigeeDatastore.
- ROTATION_PROCESS_NAME: un nome univoco per il job di rotazione. Dovrai impostare
-
Attiva il job di controllo preliminare della rotazione applicando il file
rotation.yaml.kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
-
Controlla lo stato del job per verificare quando viene completato il job di pre-controllo.
kubectl -n APIGEE_NAMESPACE get job sr-(rotationId)-(rotate|rollback|cleanup)-job
-
Al termine del job di controllo preliminare della rotazione:
- Modifica il valore di
metadata.name, ad esempio dasr-1-precheckasr-1. - Imposta
spec.prechecksufalseper disattivare il controllo preliminare ed eseguire la rotazione. - Imposta
spec.rotationIdsu un nuovo identificatore, ad esempiorotation-1.
- Modifica il valore di
-
Applica di nuovo il file per eseguire la rotazione.
kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
-
Controlla lo stato di
SecretRotatione attendi che siacomplete.kubectl -n APIGEE_NAMESPACE get sr SR_NAME
-
Crea una nuova risorsa Kubernetes
-
In ogni regione successiva, completa i seguenti passaggi:
- Crea una nuova risorsa Kubernetes
SecretProviderClassnel tuo spazio dei nomi Apigee per le nuove credenziali Cassandra. Per un modello da utilizzare, consulta Memorizzare i secret di Cassandra in HashiCorp Vault. Deve essere la stessa definizione del passaggio 1a. - Aggiorna
overrides.yamle impostacassandra.auth.secretProviderClassin modo che corrisponda al valore dispec.cassandra.newSecretProviderClassnel filerotation.yaml.cassandra: auth: secretProviderClass: NEW_SPC_NAME - Applica il grafico degli operatori:
helm upgrade operator apigee-operator/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
-
Verrà creato un nuovo
ReplicaSet. Verifica che i nuovi pod controller-manager utilizzino il nuovo SPC:export POD=NEW_CONTROLLER_MANAGER_POD_NAME
kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'Il risultato deve corrispondere al valore impostato per
spec.cassandra.newSecretProviderClassinrotation.yaml, ad esempio:kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc - Applica il grafico del datastore:
helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
- Il datastore passerà allo stato di rilascio. Attendi che il datastore abbia terminato il rilascio e sia in stato di esecuzione.
kubectl -n APIGEE_NAMESPACE get apigeedatastore DATASTORE_NAME
DATASTORE_NAME è
defaultnella maggior parte delle installazioni. - Verifica che i nuovi pod del datastore utilizzino il nuovo SPC:
export POD=NEW_DATASTORE_POD_NAME
kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'Il risultato deve corrispondere al valore impostato per
spec.cassandra.newSecretProviderClassinrotation.yaml, ad esempio:kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc - Attendi che l'organizzazione e gli ambienti vengano rilasciati e tornino allo stato di esecuzione.
kubectl -n APIGEE_NAMESPACE get apigeeorg ORG_NAME
kubectl -n APIGEE_NAMESPACE get apigeeenv ENV_NAME - Verifica che i nuovi pod MART, runtime e sincronizzatore utilizzino il nuovo SPC:
export POD=NEW_MART_POD_NAME
kubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'export POD=NEW_RUNTIME_POD_NAMEkubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'export POD=NEW_SYNCHRONIZER_POD_NAMEkubectl -n APIGEE_NAMESPACE get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'Il risultato deve corrispondere al valore impostato per
spec.cassandra.newSecretProviderClassinrotation.yaml, ad esempio:kubectl -n apigee get pods $POD -o jsonpath='{.spec.volumes[?(@.name=="apigee-external-secrets")].csi.volumeAttributes.secretProviderClass}'my-new-spc
- Crea una nuova risorsa Kubernetes
-
Dopo aver completato i passaggi in ogni regione e verificato che il traffico continui a fluire correttamente, pulisci la procedura nella prima regione con i due passaggi seguenti:
-
Nella prima regione, aggiorna il valore di
metadata.namee impostaspec.cassandra.jobTypesuCLEANUP. -
Attiva il job di pulizia applicando il file.
kubectl -n APIGEE_NAMESPACE apply -f rotation.yaml
- Controlla lo stato del job e i relativi log per verificare quando il job di pulizia è stato completato.
Al termine del job di pulizia, il processo di rotazione è completato.
-
Nella prima regione, aggiorna il valore di
- Esegui il backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali post-rotazione.
- Elimina le vecchie credenziali, il ruolo e la policy di Cassandra da Vault.