En esta página se explica cómo desplegar una imagen de contenedor en un clúster de GKE (enGoogle Cloud o Google Distributed Cloud) en el que esté habilitada la autorización binaria.
Los comandos kubectl
que usas para desplegar la imagen son los mismos que los que usas para desplegar imágenes en clústeres que no usan la autorización binaria.
Antes de empezar
Asegúrate de que la API de autorización binaria esté habilitada en tu proyecto y de que tengas un clúster de GKE con la autorización binaria habilitada. Consulta cómo configurarlo en Google Kubernetes Engine o configurarlo en Distributed Cloud.
Instala kubectl
para interactuar con GKE.
Configurar kubectl
Debes actualizar el archivo kubeconfig
local de tu instalación de kubectl
.
De esta forma, se proporcionan las credenciales y la información del endpoint necesarias para acceder al clúster en GKE o Distributed Cloud.
Para configurar kubectl
, ejecuta el siguiente comando gcloud
:
GKE
gcloud container clusters get-credentials \ --zone ZONE \ CLUSTER_NAME
Haz los cambios siguientes:
- ZONE: el nombre de la zona de GKE en la que se ejecuta el clúster. Por ejemplo,
us-central1-a
. - CLUSTER_NAME: el nombre del clúster
Nube distribuida
gcloud container fleet memberships get-credentials \ --location LOCATION \ MEMBERSHIP_NAME
Haz los cambios siguientes:
- LOCATION: la ubicación de la pertenencia a la flota del clúster de GKE. Por ejemplo,
global
. - MEMBERSHIP_NAME: el nombre de la suscripción a la flota del clúster de GKE
Desplegar la imagen de contenedor
Despliega la imagen de contenedor de la siguiente manera:
Configura las variables de entorno:
POD_NAME=POD_NAME IMAGE_PATH=IMAGE_PATH IMAGE_DIGEST=IMAGE_DIGEST
Haz los cambios siguientes:
- POD_NAME: el nombre que quieras usar para la carga de trabajo de GKE
- IMAGE_PATH: ruta de la imagen en Artifact Registry u otro registro.
IMAGE_DIGEST: el resumen del manifiesto de la imagen. Por ejemplo:
- Artifact Registry:
- Ruta:
us-docker.pkg.dev/google-samples/containers/gke/hello-app
- Resumen:
sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
- Ruta:
Para saber cómo obtener el digest de una imagen en Artifact Registry, consulta Gestión de imágenes.
- Artifact Registry:
Despliega la imagen con el comando
kubectl run
.Debe desplegar la imagen mediante el digest en lugar de una etiqueta como
1.0
olatest
, ya que la autorización binaria usa el digest para buscar atestaciones.Para desplegar la imagen, ejecuta el siguiente comando
kubectl
:kubectl run ${POD_NAME} \ --image ${IMAGE_PATH}@${IMAGE_DIGEST}
Ahora, comprueba que la autorización binaria ha bloqueado el despliegue:
kubectl get pods
Verás tu Pod en la lista.
Apertura en caso de fallo
Si GKE no puede acceder al servidor de Autorización binaria por algún motivo o si el servidor devuelve un error, GKE no puede determinar si Autorización binaria permitiría o denegaría la imagen. En este caso, GKE falla abierto: de forma predeterminada, permite que se despliegue la imagen, pero crea una entrada de registro en Cloud Audit Logs para registrar por qué se ha permitido la imagen.
La aplicación de GKE falla porque hay un equilibrio entre fiabilidad y seguridad. GKE envía una solicitud a la autorización binaria cada vez que se crea o actualiza un pod. Esto incluye situaciones en las que los pods se crean o actualizan automáticamente mediante controladores de cargas de trabajo de Kubernetes de nivel superior, como ReplicaSets y StatefulSets. Si GKE falla y se cierra en lugar de abrirse, cualquier interrupción de Binary Authorization impediría que se ejecutaran estos pods. Además, si se deniega el acceso a los pods, la conmutación por error puede provocar fallos en cascada, ya que el tráfico redirigido sobrecarga los pods que siguen en ejecución. Cualquier interrupción de la autorización binaria podría provocar una interrupción completa de tu clúster, incluso sin desplegar ninguna imagen nueva.
Desplegar imágenes que infrinjan la política
La autorización binaria admite una función denominada Breakglass, que permite desplegar una imagen aunque infrinja la política.
Para obtener más información, consulta Usar el acceso de emergencia.
Limpieza
Para limpiar, elimina el pod ejecutando el siguiente comando:
kubectl delete pod ${POD_NAME}
Siguientes pasos
- Consulta información sobre el modo de prueba.
- Consulta cómo usar el CV.
- Consulta cómo usar la validación continua antigua (obsoleta).
- Consulta cómo usar resúmenes de imágenes en manifiestos de Kubernetes.