Rotazione dei secret di Cassandra nei secret di Kubernetes
Questa procedura descrive la rotazione delle credenziali Cassandra nei secret di Kubernetes nel tuo cluster. Per la rotazione delle credenziali in Hashicorp Vault, consulta Rotazione delle credenziali Cassandra in Hashicorp Vault.
Questa procedura ti consentirà di ruotare le credenziali Cassandra utilizzate per i servizi Apigee Hybrid di produzione senza causare tempi di inattività automatizzando e attivando tre attività:
- Rotazione delle credenziali utente
- Rollback della rotazione
- Pulizia delle credenziali vecchie e nuove
Ruota i secret di Cassandra nei secret di Kubernetes
È possibile ruotare sei coppie di credenziali Cassandra (nome utente + password):
- Predefinito*
- Amministratore
- DDL
- DML
- JMX
- Jolokia
Prepararsi per la rotazione delle credenziali
Per eseguire questi passaggi, devi disporre dell'autorizzazione per eseguire kubectl apply -f
all'interno del cluster.
- Esegui il backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali pre-rotazione. Consulta la panoramica del backup di Cassandra.
- Assicurati che il cluster sia integro, che tutte le risorse Apigee siano in esecuzione e che non siano in attesa modifiche dello stato.
Rotazione delle credenziali in una singola regione
- Crea un nuovo secret Kubernetes nello spazio dei nomi Apigee che contenga le credenziali utente Cassandra che vuoi ruotare, seguendo la procedura descritta in Impostare nomi utente e password in un secret Kubernetes.
- Esegui il controllo preliminare della rotazione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# rotation-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID timeoutMinutes: TIMEOUT_MINUTES # optional. 480 recommended. precheck: true cassandra: oldSecretRef: OLD_SECRET_REF newSecretRef: NEW_SECRET_REF jobType: ROTATE
Dove:
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
sr-1-precheck
. - APIGEE_NAMESPACE: il tuo spazio dei nomi Apigee.
- APIGEE_ORG: l'ID organizzazione Apigee.
- ROTATION_ID: un identificatore personalizzato, ad esempio:
rot-1-precheck
. - TIMEOUT_MINUTES: (Facoltativo) Esegue l'override del valore predefinito (480 m = 8 ore). <=0 significa timeout infinito.
- PRECHECK : attiva l'esecuzione della prova. Se impostato su true, il processo di rotazione esegue tutti i passaggi tranne l'applicazione effettiva delle nuove credenziali.
- OLD_SECRET_REF: il nome del secret attualmente utilizzato da
apigeedatastore
. Puoi trovarlo utilizzando il seguente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: il nome del secret creato nel passaggio precedente.
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
-
Attiva il job di pre-controllo della rotazione applicando il file YAML di rotazione:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job, l'output conterrà:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
-
Al termine del job di pre-controllo della rotazione, esegui la rotazione:
- Apporta le seguenti modifiche al file YAML di rotazione:
- Modifica
metadata.name
con un nome che indichi che non si tratta di un controllo preliminare, ad esempiosr-1
. - Imposta
spec.precheck
sufalse
. - Modifica
spec.rotationId
con un nuovo identificatore, ad esempiorot-1
.
- Modifica
- Applica di nuovo il file per eseguire la rotazione.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Apporta le seguenti modifiche al file YAML di rotazione:
- Una volta completato il job di rotazione, verifica che il traffico continui a fluire correttamente.
- Dopo aver convalidato il traffico, esegui la pulizia dei vecchi secret.
-
Apporta le seguenti modifiche al file YAML di rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup
. - Imposta
spec.cassandra.jobType
suCLEANUP
. - Assicurati che
spec.precheck
sia impostato sufalse
.
- Modifica
- Applica di nuovo il file per eseguire la pulizia.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job di pulizia, il processo di rotazione è completato.
-
Apporta le seguenti modifiche al file YAML di rotazione:
-
Aggiorna il file di override e imposta
cassandra.auth.secret
sul nuovo nome del secret (newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Esegui un backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali post-rotazione.
- Elimina il vecchio secret delle credenziali Cassandra.
Rotazione delle credenziali multiregionale
-
In ogni regione, crea un nuovo secret Kubernetes nello spazio dei nomi Apigee che contenga le credenziali utente Cassandra che vuoi ruotare, seguendo la procedura descritta in Impostare nomi utente e password in un secret Kubernetes.
Le credenziali devono essere le stesse in ogni regione.
- Esegui il controllo preliminare della rotazione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# rotation-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID timeoutMinutes: TIMEOUT_MINUTES # optional. 480 recommended. precheck: true cassandra: oldSecretRef: OLD_SECRET_REF newSecretRef: NEW_SECRET_REF jobType: ROTATE
Dove:
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
sr-1-precheck
. - APIGEE_NAMESPACE: il tuo spazio dei nomi Apigee.
- APIGEE_ORG: l'ID organizzazione Apigee.
- ROTATION_ID: un identificatore personalizzato, ad esempio:
rot-1-precheck
. - TIMEOUT_MINUTES: (Facoltativo) Esegue l'override del valore predefinito (480 m = 8 ore). <=0 significa timeout infinito.
- PRECHECK : attiva l'esecuzione della prova. Se impostato su true, il processo di rotazione esegue tutti i passaggi tranne l'applicazione effettiva delle nuove credenziali.
- OLD_SECRET_REF: il nome del secret attualmente utilizzato da
apigeedatastore
. Puoi trovarlo utilizzando il seguente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: il nome del secret creato nel passaggio precedente.
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
-
Nella prima regione, attiva il job di controllo preliminare della rotazione applicando il file YAML di rotazione:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job, l'output conterrà:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
-
Al termine del job di controllo preliminare della rotazione, esegui la rotazione nella stessa regione:
- Apporta le seguenti modifiche al file YAML di rotazione:
- Modifica
metadata.name
con un nome che indichi che non si tratta di un controllo preliminare, ad esempiosr-1
. - Imposta
spec.precheck
sufalse
. - Modifica
spec.rotationId
con un nuovo identificatore, ad esempiorot-1
.
- Modifica
- Applica di nuovo il file per eseguire la rotazione.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Apporta le seguenti modifiche al file YAML di rotazione:
- Una volta completato il job di rotazione, verifica che il traffico continui a fluire correttamente.
- Ripeti i passaggi di rotazione per le regioni rimanenti.
- Dopo aver convalidato il traffico, esegui la pulizia dei vecchi secret. Devi eseguire la pulizia in una sola regione. Non importa quale regione scegli.
-
Apporta le seguenti modifiche al file YAML di rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup
. - Imposta
spec.cassandra.jobType
suCLEANUP
. - Assicurati che
spec.precheck
sia impostato sufalse
.
- Modifica
- Applica di nuovo il file per eseguire la pulizia.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job di pulizia, il processo di rotazione è completato.
-
Apporta le seguenti modifiche al file YAML di rotazione:
-
Aggiorna il file di override e imposta
cassandra.auth.secret
sul nuovo nome del secret (newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Esegui un backup del database Cassandra. Questo backup serve a garantire che il recupero sia possibile con le credenziali post-rotazione.
- Elimina il vecchio secret delle credenziali Cassandra.
Rollback di una rotazione
Esegui i seguenti passaggi in ogni regione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# rollback-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROLLBACK_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID # match the current rotation. timeoutMinutes: TIMEOUT_MINUTES # optional. precheck: false cassandra: oldSecretRef: OLD_SECRET_REF # Must match the previous oldSecretRef. newSecretRef: NEW_SECRET_REF # Must match the previous newSecretRef. jobType: ROLLBACK
Dove:
- ROLLBACK_NAME: un nome per il job di rollback, ad esempio
sr-1-rollback
. - APIGEE_NAMESPACE: il tuo spazio dei nomi Apigee.
- APIGEE_ORG: l'ID organizzazione Apigee.
- ROTATION_ID: l'ID della rotazione corrente di cui stai eseguendo il rollback, ad esempio
rot-1
. - TIMEOUT_MINUTES: (Facoltativo) Esegue l'override del valore predefinito (480 m = 8 ore). <=0 significa timeout infinito.
- OLD_SECRET_REF: deve corrispondere al nome del secret per
oldSecretRef:
nel file YAML di rotazione utilizzato nella procedura di rotazione a singola regione o rotazione multiregionale. - NEW_SECRET_REF: deve corrispondere al nome del secret per
newSecretRef:
nel file YAML di rotazione utilizzato nella procedura di rotazione a singola regione o rotazione multiregionale.
- ROLLBACK_NAME: un nome per il job di rollback, ad esempio
-
Applica il rollback:
kubectl -n APIGEE_NAMESPACE apply -f ROLLBACK_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
- Al termine del rollback, verifica che il traffico continui a fluire correttamente.
- Quando il flusso di traffico è corretto, ripeti la procedura di rollback in ogni regione rimanente.
-
Una volta completato il rollback e verificato che il traffico continui a fluire correttamente, avvia la procedura di pulizia. Devi eseguire la pulizia in una sola regione. Non importa quale regione scegli.
Apporta le seguenti modifiche al file YAML di rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup-rollback
. - Modifica
spec.cassandra.jobType
inCLEANUP_ROLLBACK
.
- Modifica
-
Applica il file per attivare il job di pulizia:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job di pulizia, il processo di rollback è completato.
-
Aggiorna il file di override e imposta
cassandra.auth.secret
sul vecchio nome del secret (oldSecretRef
).cassandra: auth: secret: OLD_SECRET_REF