Déployer sur un cluster Google Kubernetes Engine

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce document explique comment déployer vos applications sur des clusters Google Kubernetes Engine.

Google Cloud Deploy vous permet de déployer vos charges de travail basées sur des conteneurs vers n'importe quel cluster Google Kubernetes Engine. Toutes les fonctionnalités Google Cloud Deploy sont compatibles avec les déploiements sur des cibles GKE.

Avant de commencer

Dans ce fichier skaffold.yaml, le bloc deploy inclut kubectl, qui indique que Skaffold effectue le rendu et le déploiement sur Kubernetes (GKE). Les fichiers manifestes que vous utilisez pour cette application sont listés en dessous.

Créez votre configuration cible.

Chaque cible peut être configurée dans le fichier YAML de votre pipeline de livraison ou dans un fichier distinct. Vous pouvez également configurer plusieurs cibles dans le même fichier, mais elles doivent se trouver dans des blocs kind: Target différents.

Dans la définition de la cible, créez un bloc gke pour pointer vers le cluster GKE:

La syntaxe permettant de spécifier un cluster GKE est la suivante:

gke:
 cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

Cet identifiant de ressource GKE utilise les éléments suivants:

  • [project_name] est le nom du projet Google Cloud dans lequel vous exécutez ce cluster.

    Le cluster sur lequel vous déployez ne doit pas nécessairement se trouver dans le même projet que votre pipeline de livraison.

  • [location] est la région dans laquelle le cluster a été créé.

  • [cluster_name] est le nom attribué au cluster lors de sa création.

    Vous trouverez ce nom dans la liste des clusters de votre projet, dans la console Google Cloud.

    Liste des clusters dans la console Google Cloud

Voici un exemple de configuration cible, pointant vers un cluster GKE:

      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
       name: dev
      description: development cluster
      gke:
       cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster

Créer votre configuration Skaffold

Cette section fournit et explique un exemple de configuration Skaffold simple à utiliser lors du déploiement sur un cluster GKE.

Voici un exemple de fichier skaffold.yaml pour le déploiement sur un cluster GKE:

apiVersion: skaffold/v3alpha1
kind: Config
metadata:
  name: gke-application
deploy:
  kubectl:
    manifests:
      - [MANIFEST]

La page Utiliser Skaffold avec Google Cloud Deploy explique plus en détail comment utiliser Skaffold avec votre pipeline de livraison.

Préparer vos fichiers manifestes Kubernetes

Pour déployer votre application sur GKE, vous devez fournir à Google Cloud Deploy un ou plusieurs fichiers manifestes Kubernetes rendu, puis appliqués au ou aux clusters cibles pour le déploiement de votre application.

Si vous n'avez pas ces fichiers manifestes, créez-les avant d'essayer de les déployer à l'aide d'un pipeline de livraison Google Cloud Deploy.

Vous pouvez utiliser Kustomize ou Helm pour vous aider à créer des fichiers manifestes. Vous pouvez également utiliser Kustomize ou Helm si vos fichiers manifestes sont modélisés et doivent être affichés.

Synthèse

Maintenant que vous disposez de vos fichiers manifestes Kubernetes, de votre configuration skaffold.yaml et de vos définitions de cibles Google Cloud Deploy, et que vous avez enregistré vos cibles en tant que ressources Google Cloud Deploy, vous pouvez appeler votre pipeline de livraison pour créer une version et la faire progresser tout au long de la progression des cibles définies dans le pipeline.

Déployer sur un cluster privé

Vous pouvez déployer votre application sur un cluster GKE privé en utilisant l'une des deux options suivantes:

Utiliser un réseau cloud privé virtuel

Vous pouvez configurer une cible à déployer sur un cluster GKE privé connecté à un réseau de cloud privé virtuel:

  1. Créer votre cluster privé

    Un cluster privé est un cluster de VPC natif dont les nœuds et les pods sont isolés par défaut de l'Internet public.

    Si vous prévoyez d'utiliser l'adresse IP interne de la cible de cluster privé, définissez internalIp sur true sous gke dans la configuration de la cible.

  2. Dans Cloud Build, créez un pool de nœuds de calcul privés que vous pouvez utiliser pour déployer sur ce cluster privé.

  3. Configurez l'environnement d'exécution pour utiliser ce pool privé.

    Vous devez utiliser ce pool pour RENDER. Vous pouvez également l'utiliser pour DEPLOY et pour VERIFY. Voici un exemple qui utilise RENDER et DEPLOY:

    executionConfigs:
    - usages:
      - RENDER
      - DEPLOY
      workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
    

Pour en savoir plus, consultez la page Accéder aux clusters GKE privés avec des pools privés Cloud Build.

Remarques concernant les projets et les autorisations

Vous pouvez configurer une cible afin qu'elle utilise un pool de nœuds de calcul privés pouvant être déployé sur un cluster privé. Toutefois, il convient de noter que les ressources se trouvent dans des projets différents.

  • Lorsque Google Cloud Deploy et le pool de nœuds de calcul se trouvent dans des projets distincts

Pour communiquer avec un pool privé qui a accès à un VPC et qui se trouve dans un projet différent de votre cible, l'agent de service Google Cloud Deploy doit disposer d'autorisations suffisantes pour communiquer avec ce projet.

Le compte de service d'exécution a également besoin d'autorisations pour accéder au bucket Cloud Storage.

  • Lorsque le pool de nœuds de calcul et le cluster se trouvent dans des projets distincts

Si le cluster GKE privé se trouve dans un projet différent du pool de nœuds de calcul privé, le compte de service d'exécution nécessite des autorisations suffisantes pour communiquer avec le projet dans lequel se trouve le cluster.

Utiliser des cibles Anthos et connecter la passerelle

Vous pouvez configurer une cible à déployer sur un cluster GKE privé à l'aide des cibles Anthos et de la passerelle de connexion.

Cette approche ne nécessite pas l'utilisation d'un cloud privé virtuel ou de connexions de réseau privé virtuel.

Étapes suivantes