Déployer des conteneurs (GKE, clusters GKE)

Cette page explique comment déployer une image de conteneur sur un cluster Google Kubernetes Engine (GKE) ou un cluster GKE où l'autorisation binaire est activée. Les commandes kubectl que vous utilisez pour déployer l'image sont identiques à celles que vous utilisez pour déployer des images sur des clusters qui n'utilisent pas l'autorisation binaire.

Avant de commencer

Assurez-vous que l'API d'autorisation binaire est activée dans votre projet et qu'un cluster GKE avec l'autorisation binaire est activé. Consultez la page Configurer sur Google Kubernetes Engine ou Configurer sur des clusters GKE.

Installez kubectl pour interagir avec GKE.

Configurer kubectl

Vous devez mettre à jour le fichier kubeconfig local pour votre installation kubectl. Cela fournit les identifiants et les informations de point de terminaison requis pour accéder au cluster dans GKE ou les clusters GKE.

Pour configurer kubectl, exécutez la commande gcloud suivante :

GKE

gcloud container clusters get-credentials \
    --zone ZONE \
    CLUSTER_NAME

Remplacez les éléments suivants :

  • ZONE : nom de la zone GKE dans laquelle s'exécute le cluster, par exemple, us-central1-a
  • CLUSTER_NAME : nom du cluster

Clusters GKE

gcloud container fleet memberships get-credentials \
    --location LOCATION \
    MEMBERSHIP_NAME

Remplacez les éléments suivants :

  • LOCATION: emplacement de l'appartenance au parc du cluster GKE, par exemple global
  • MEMBERSHIP_NAME: nom de l'appartenance au parc du cluster GKE

Déployer l'image de conteneur

Déployez votre image de conteneur comme suit :

  1. Configurer les variables d'environnement :

    POD_NAME=POD_NAME
    IMAGE_PATH=IMAGE_PATH
    IMAGE_DIGEST=IMAGE_DIGEST
    

    Remplacez les éléments suivants :

    • POD_NAME : nom que vous souhaitez utiliser pour la charge de travail GKE.
    • IMAGE_PATH : chemin d'accès à l'image dans Artifact Registry, Container Registry ou un autre registre.
    • IMAGE_DIGEST : condensé du fichier manifeste de l'image. Les exemples sont les suivants :

      • Artifact Registry :
        • Chemin d'accès : us-docker.pkg.dev/google-samples/containers/gke/hello-app
        • Condensé : sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
      • Container Registry :
        • Chemin d'accès : gcr.io/google-samples/hello-app
        • Condensé : sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4

      Pour savoir comment obtenir le condensé d'une image dans Artifact Registry, consultez la section Gérer les images. Pour obtenir une image dans Container Registry, consultez la section Répertorier les versions d'une image

  2. Déployez votre image à l'aide de la commande kubectl run.

    Vous devez déployer l'image à l'aide du condensé au lieu d'un tag tel que 1.0 ou latest, car l'autorisation binaire utilise à la fois le chemin d'accès de l'image et le condensé afin de rechercher les attestations.

    Pour déployer l'image, exécutez la commande kubectl suivante :

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    Maintenant, vérifiez que le déploiement a été bloqué par l'autorisation binaire.

    kubectl get pods
    

    Votre pod est répertorié.

Configuration ouverte ("fail open")

Le processus d'application échoue si GKE ou les clusters GKE ne parviennent pas à atteindre le serveur d'autorisation binaire pour une raison quelconque. Par exemple, si vous déployez une image de conteneur et que l'outil d'application de l'autorisation binaire est inaccessible en raison d'une panne du réseau, l'image est déployée, même si l'outil d'application l'aurait bloquée. Si Cloud Audit Logs est activé, l'entrée de journal indique l'image déployée avec une condition d'échec ouvert.

Déployer des images qui ne respectent pas la stratégie

L'autorisation binaire est compatible avec une fonctionnalité appelée bris de glace, qui permet de déployer une image, même si elle ne respecte pas la stratégie.

Pour en savoir plus, consultez la page Utiliser le mode "bris de glace".

Effectuer un nettoyage

Pour le nettoyage, supprimez le pod en exécutant la commande suivante :

  kubectl delete pod ${POD_NAME}
  

Étape suivante