En esta página, se muestra cómo resolver problemas relacionados con la encriptación de Secrets de la capa de aplicación en Google Kubernetes Engine (GKE).
Actualización con errores
Cuando actualizas la configuración de encriptación de la encriptación de Secrets de la capa de aplicación, GKE debe reescribir todos los objetos Secret en el clúster de Kubernetes. GKE hace esto para garantizar que la clave de Cloud KMS nueva encripte todos los Secrets o que se escriban sin encriptación si eso es lo que configuras.
Esta operación de actualización puede fallar debido a cualquiera de las siguientes condiciones:
- El plano de control de Kubernetes no está disponible temporalmente mientras la actualización está en curso.
- Un
AdmissionWebhook
definido por el usuario evita que GKE pueda actualizar los objetos Secret. - La clave de Cloud KMS actualizada o anterior se inhabilita antes de que se complete la operación de actualización.
Hasta que la operación de actualización se realice de forma correcta, no interactúes con las claves de Cloud KMS actualizadas o anteriores.
Campos de depuración
Los clústeres de GKE nuevos que ejecutan la versión 1.29 y posteriores contienen
campos adicionales que te ayudan a realizar un seguimiento de las actualizaciones de Cluster.DatabaseEncryption
y te ayudan a recuperarte de fallas.
Los siguientes pasos solo se aplican a los clústeres en los que el
campo DatabaseEncryption.CurrentState
no está vacío. Si el campo CurrentState
está vacío, la función aún no está habilitada en esta versión del clúster.
Se aplican los siguientes límites a estos campos:
- Son solo de salida, lo que significa que no puedes configurarlos durante las solicitudes de creación o actualización de clústeres.
Campo CurrentState
Para inspeccionar el estado actual de una operación de actualización DatabaseEncryption
,
puedes examinar el campo CurrentState
en Cluster.DatabaseEncryption
.
Valor de CurrentState |
Descripción |
---|---|
|
La última operación de actualización se realizó correctamente. No necesitas realizar ninguna otra acción. Puedes borrar cualquier clave que se haya usado antes. |
|
La actualización está en curso. |
|
Se produjo un error con la actualización más reciente. No inhabilites ni destruyas ninguna clave de Cloud KMS que se haya usado antes, ya que es posible que GKE aún las use.
Consulta el campo |
Campo LastOperationErrors
Cuando falla una operación de actualización, el error subyacente del plano
de control de GKE se muestra en el resultado de gcloud container clusters update
.
Los mensajes de error de las dos operaciones de actualización con errores más recientes también están
disponibles en Cluster.DatabaseEncryption.LastOperationErrors
.
Campo DecryptionKeys
La clave de Cloud KMS que se usa para las operaciones de encriptación nuevas se muestra en
DatabaseEncryption.KeyName
. Por lo general, esta es la única clave que usa el clúster.
Sin embargo, DatabaseEncryption.DecryptionKeys
contiene claves adicionales que el
clúster también usa si hay una actualización en curso o después de una falla.
Recupérate de una actualización con errores
Para recuperarte de una actualización con errores, haz lo siguiente:
- Examina el mensaje de error y soluciona cualquier problema indicado.
- Vuelve a intentar la solicitud de actualización a través de la ejecución del comando con errores, como
gcloud container clusters update ... --database-encryption-key
. Te recomendamos que vuelvas a intentarlo con la misma solicitud de actualización que emitiste originalmente o actualices el clúster al estado anterior. Es posible que GKE no pueda hacer la transición a una clave o un estado de encriptación diferentes si no puede leer uno o más objetos Secret.
En las siguientes secciones, se enumeran los motivos comunes de los errores.
Error de clave de Cloud KMS
Si el mensaje de error contiene una referencia a una o más claves de Cloud KMS, examina la configuración de tu clave de Cloud KMS para asegurarte de que las versiones de clave relevantes se puedan usar.
Por ejemplo, si el error indica que se inhabilitó o destruyó una clave de Cloud KMS, vuelve a habilitar la clave o la versión de clave.
No se pudo actualizar el Secret
El siguiente error puede ocurrir si la API de Kubernetes rechazó la solicitud de actualización debido a un webhook de admisión:
error admission webhook WEBHOOK_NAME denied the request
Para resolver este error, quita el webhook o modifícalo para que GKE pueda actualizar los Secrets en todos los espacios de nombres durante las actualizaciones de claves.