- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
Rotar secretos de Cassandra en secretos de Kubernetes
En este procedimiento se describe cómo rotar las credenciales de Cassandra en los secretos de Kubernetes de tu clúster. Para rotar las credenciales en HashiCorp Vault, consulta el artículo Rotar las credenciales de Cassandra en HashiCorp Vault.
Este procedimiento te permitirá rotar las credenciales de Cassandra que se usan en los servicios de producción de Apigee Hybrid sin provocar tiempos de inactividad. Para ello, se automatizarán y activarán tres tareas:
- Rotación de credenciales de usuario
- Restauración de la rotación
- Limpieza de credenciales antiguas y nuevas
Rotar secretos de Cassandra en secretos de Kubernetes
Se pueden rotar seis pares de credenciales de Cassandra (nombre de usuario y contraseña):
- Predeterminado*
- Administrador
- DDL
- DML
- JMX
- Jolokia
Prepararse para la rotación de credenciales
Para llevar a cabo estos pasos, debes tener permiso para ejecutar kubectl apply -f
en el clúster.
- Crea una copia de seguridad de la base de datos de Cassandra. Esta copia de seguridad se realiza para asegurar que se puedan recuperar las credenciales anteriores a la rotación. Consulta la información general sobre las copias de seguridad de Cassandra.
- Asegúrate de que el clúster esté en buen estado, de que todos los recursos de Apigee estén en ejecución y de que no haya cambios de estado pendientes.
Rotación de credenciales de una sola región
- Crea un secreto de Kubernetes en tu espacio de nombres de Apigee que contenga las credenciales de usuario de Cassandra que quieras rotar. Para ello, sigue las instrucciones de Definir nombres de usuario y contraseñas en un secreto de Kubernetes.
- Realiza la comprobación previa a la rotación.
-
Crea un recurso personalizado SecretRotation con la siguiente plantilla:
# 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
Donde:
- ROTATION_NAME: nombre del trabajo de rotación. Por ejemplo,
sr-1-precheck
. - APIGEE_NAMESPACE: tu espacio de nombres de Apigee.
- APIGEE_ORG: tu ID de organización de Apigee.
- ROTATION_ID: un identificador personalizado, por ejemplo,
rot-1-precheck
. - TIMEOUT_MINUTES: opcional. Anula el valor predeterminado (480 min == 8 horas). <=0 significa tiempo de espera infinito.
- PRECHECK : activa la ejecución de una prueba. Si se define como true, el proceso de rotación pasa por todos los pasos, excepto por la aplicación de las nuevas credenciales.
- OLD_SECRET_REF: nombre del secreto que usa actualmente el
apigeedatastore
. Puedes encontrarlo con el siguiente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: el nombre del secreto creado en el paso anterior.
- ROTATION_NAME: nombre del trabajo de rotación. Por ejemplo,
-
Activa el trabajo de comprobación previa de la rotación aplicando el archivo YAML de rotación:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Cuando se complete el trabajo, la salida contendrá lo siguiente:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea un recurso personalizado SecretRotation con la siguiente plantilla:
-
Cuando se complete la tarea de comprobación previa de la rotación, realiza la rotación:
- Haz los siguientes cambios en el archivo YAML de rotación:
- Cambia
metadata.name
por un nombre que indique que no es una comprobación previa, comosr-1
. - Asigna el valor
false
aspec.precheck
. - Cambia
spec.rotationId
por un identificador nuevo, por ejemplo,rot-1
.
- Cambia
- Vuelve a aplicar el archivo para realizar la rotación.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Haz los siguientes cambios en el archivo YAML de rotación:
- Una vez que se haya completado el trabajo de rotación, comprueba que el tráfico sigue fluyendo correctamente.
- Después de validar el tráfico, limpia los secretos antiguos.
-
Haz los siguientes cambios en el archivo YAML de rotación:
- Cambia
metadata.name
por un nombre que indique que se trata de un trabajo de limpieza. Por ejemplo,sr-1-cleanup
. - Asigna el valor
CLEANUP
aspec.cassandra.jobType
. - Comprueba que
spec.precheck
esté configurado comofalse
.
- Cambia
- Vuelve a aplicar el archivo para realizar la limpieza.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Cuando se complete el trabajo de limpieza, se habrá completado el proceso de rotación.
-
Haz los siguientes cambios en el archivo YAML de rotación:
-
Actualiza el archivo de anulaciones y asigna el nuevo nombre del secreto a
cassandra.auth.secret
(newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Crea una copia de seguridad de la base de datos de Cassandra. Esta copia de seguridad se hace para asegurar que se puedan recuperar las credenciales después de la rotación.
- Elimina el secreto de credenciales de Cassandra antiguo.
Rotación de credenciales multirregional
-
En cada región, cree un secreto de Kubernetes en su espacio de nombres de Apigee que contenga las credenciales de usuario de Cassandra que quiera rotar. Para ello, siga las instrucciones de Configurar nombres de usuario y contraseñas en un secreto de Kubernetes.
Las credenciales deben ser las mismas en todas las regiones.
- Realiza la comprobación previa a la rotación.
-
Crea un recurso personalizado SecretRotation con la siguiente plantilla:
# 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
Donde:
- ROTATION_NAME: nombre del trabajo de rotación. Por ejemplo,
sr-1-precheck
. - APIGEE_NAMESPACE: tu espacio de nombres de Apigee.
- APIGEE_ORG: tu ID de organización de Apigee.
- ROTATION_ID: un identificador personalizado, por ejemplo,
rot-1-precheck
. - TIMEOUT_MINUTES: opcional. Anula el valor predeterminado (480 min == 8 horas). <=0 significa tiempo de espera infinito.
- PRECHECK : activa la ejecución de una prueba. Si se define como true, el proceso de rotación pasa por todos los pasos, excepto por la aplicación de las nuevas credenciales.
- OLD_SECRET_REF: nombre del secreto que usa actualmente el
apigeedatastore
. Puedes encontrarlo con el siguiente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: el nombre del secreto creado en el paso anterior.
- ROTATION_NAME: nombre del trabajo de rotación. Por ejemplo,
-
En la primera región, activa el trabajo de comprobación previa de la rotación aplicando el archivo YAML de rotación:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Cuando se complete el trabajo, la salida contendrá lo siguiente:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea un recurso personalizado SecretRotation con la siguiente plantilla:
-
Cuando se complete la tarea de comprobación previa de la rotación, realiza la rotación en la misma región:
- Haz los siguientes cambios en el archivo YAML de rotación:
- Cambia
metadata.name
por un nombre que indique que no es una comprobación previa, comosr-1
. - Asigna el valor
false
aspec.precheck
. - Cambia
spec.rotationId
por un identificador nuevo, por ejemplo,rot-1
.
- Cambia
- Vuelve a aplicar el archivo para realizar la rotación.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Haz los siguientes cambios en el archivo YAML de rotación:
- Una vez que se haya completado el trabajo de rotación, comprueba que el tráfico sigue fluyendo correctamente.
- Repite los pasos de rotación con las regiones restantes.
- Después de validar el tráfico, limpia los secretos antiguos. Solo tiene que realizar la limpieza en una región. No importa qué región elijas.
-
Haz los siguientes cambios en el archivo YAML de rotación:
- Cambia
metadata.name
por un nombre que indique que se trata de un trabajo de limpieza. Por ejemplo,sr-1-cleanup
. - Asigna el valor
CLEANUP
aspec.cassandra.jobType
. - Comprueba que
spec.precheck
esté configurado comofalse
.
- Cambia
- Vuelve a aplicar el archivo para realizar la limpieza.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Cuando se complete el trabajo de limpieza, se habrá completado el proceso de rotación.
-
Haz los siguientes cambios en el archivo YAML de rotación:
-
Actualiza el archivo de anulaciones y asigna el nuevo nombre del secreto a
cassandra.auth.secret
(newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Crea una copia de seguridad de la base de datos de Cassandra. Esta copia de seguridad se hace para asegurar que se puedan recuperar las credenciales después de la rotación.
- Elimina el secreto de credenciales de Cassandra antiguo.
Restaurar una rotación
Sigue estos pasos en cada región.
-
Crea un recurso personalizado SecretRotation con la siguiente plantilla:
# 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
Donde:
- ROLLBACK_NAME: nombre del trabajo de reversión. Por ejemplo,
sr-1-rollback
. - APIGEE_NAMESPACE: tu espacio de nombres de Apigee.
- APIGEE_ORG: tu ID de organización de Apigee.
- ROTATION_ID: el ID de la rotación actual a la que vas a volver, por ejemplo,
rot-1
. - TIMEOUT_MINUTES: opcional. Anula el valor predeterminado (480 min == 8 horas). <=0 significa tiempo de espera infinito.
- OLD_SECRET_REF: debe coincidir con el nombre del secreto de
oldSecretRef:
en el archivo YAML de rotación que has usado en el procedimiento Rotación en una sola región o Rotación en varias regiones. - NEW_SECRET_REF: debe coincidir con el nombre del secreto de
newSecretRef:
en el archivo YAML de rotación que has usado en el procedimiento Rotación en una sola región o Rotación en varias regiones.
- ROLLBACK_NAME: nombre del trabajo de reversión. Por ejemplo,
-
Aplica la restauración:
kubectl -n APIGEE_NAMESPACE apply -f ROLLBACK_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
- Cuando se completen las restauraciones, comprueba que el tráfico sigue fluyendo correctamente.
- Cuando el tráfico fluya correctamente, repite el proceso de reversión en cada una de las regiones restantes.
-
Una vez que hayas completado la reversión y verificado que el tráfico sigue fluyendo correctamente, inicia el proceso de limpieza. Solo tiene que realizar la limpieza en una región. No importa qué región elijas.
Haz los siguientes cambios en el archivo YAML de rotación:
- Cambia
metadata.name
por un nombre que indique que se trata de un trabajo de limpieza. Por ejemplo,sr-1-cleanup-rollback
. - Cambia
spec.cassandra.jobType
porCLEANUP_ROLLBACK
.
- Cambia
-
Aplica el archivo para activar el trabajo de limpieza:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Comprueba el estado del trabajo y espera a que se complete.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Cuando se complete el trabajo de limpieza, se habrá completado el proceso de reversión.
-
Actualiza el archivo de anulaciones y asigna a
cassandra.auth.secret
el nombre del antiguo secreto (oldSecretRef
).cassandra: auth: secret: OLD_SECRET_REF