Desplegar contenedores (GKE, Distributed Cloud)

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:

  1. 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

      Para saber cómo obtener el digest de una imagen en Artifact Registry, consulta Gestión de imágenes.

  2. Despliega la imagen con el comando kubectl run.

    Debe desplegar la imagen mediante el digest en lugar de una etiqueta como 1.0 o latest, 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