Soluciona problemas de encriptación de Secrets de la capa de aplicación


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

CURRENT_STATE_ENCRYPTED

CURRENT_STATE_DECRYPTED

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.

CURRENT_STATE_ENCRYPTION_PENDING

CURRENT_STATE_DECRYPTION_PENDING

La actualización está en curso.

CURRENT_STATE_ENCRYPTION_ERROR

CURRENT_STATE_DECRYPTION_ERROR

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 LastOperationErrors para obtener más información.

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:

  1. Examina el mensaje de error y soluciona cualquier problema indicado.
  2. 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.