Un cluster Google Kubernetes Engine (GKE) est composé d'un plan de contrôle et de machines de calcul appelées nœuds. Vous pouvez exécuter vos charges de travail Kubernetes conteneurisées dans un cluster GKE. Les nœuds sont les machines de calcul qui exécutent vos applications conteneurisées et d'autres charges de travail, tandis que le plan de contrôle est le point de terminaison unifié de votre cluster. Pour en savoir plus, consultez la page Architecture d'un cluster GKE.
Le serveur d'API Kubernetes s'exécute sur le plan de contrôle, ce qui vous permet d'interagir avec les objets Kubernetes du cluster via des appels d'API Kubernetes. Les objets sont des entités persistantes dans le système Kubernetes et représentent l'état de votre cluster. Pour en savoir plus, consultez la page Objets dans Kubernetes dans la documentation Kubernetes et la présentation de l'API qui renvoie vers les pages de la documentation de référence de l'API Kubernetes.
Ce document explique comment utiliser le connecteur d'API Kubernetes dans un workflow pour envoyer des requêtes au point de terminaison de service Kubernetes hébergé sur le plan de contrôle d'un cluster GKE. Par exemple, vous pouvez utiliser le connecteur pour créer des déploiements Kubernetes, exécuter des tâches, gérer des pods ou accéder aux applications déployées via un proxy. Pour en savoir plus, consultez la présentation du connecteur d'API Kubernetes.
Avant de commencer
Avant de poursuivre les tâches de ce document, assurez-vous d'avoir rempli certaines conditions préalables.
Activer les API
Pour pouvoir accéder aux objets d'API Kubernetes à l'aide du connecteur d'API Kubernetes, vous devez activer les API suivantes:
- API Google Kubernetes Engine: pour créer et gérer des applications basées sur des conteneurs à l'aide de GKE
API Workflows: pour gérer les définitions et les exécutions des workflows. L'activation de l'API Workflows active automatiquement l'API Workflow Executions.
Console
Activer les API :
gcloud
Dans la console Google Cloud, activez Cloud Shell.
En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Activer les API :
gcloud services enable container.googleapis.com workflows.googleapis.com
Créer un compte de service
Créez un compte de service géré par l'utilisateur qui constitue l'identité de votre workflow, puis attribuez-lui le rôle Développeur sur Kubernetes Engine (roles/container.developer
) afin que le workflow puisse accéder aux objets d'API Kubernetes dans les clusters.
Console
Dans Google Cloud Console, accédez à la page Comptes de service.
Sélectionnez un projet, puis cliquez sur Créer un compte de service.
Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID de compte de service à partir de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for Kubernetes API
.Cliquez sur Créer et continuer.
Dans la liste Sélectionner un rôle, filtrez et sélectionnez le rôle Développeur sur Kubernetes Engine.
Cliquez sur Continuer.
Pour terminer la création du compte, cliquez sur OK.
gcloud
Créez le compte de service :
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Remplacez
SERVICE_ACCOUNT_NAME
par le nom du compte de service.Attribuez le rôle
container.developer
à votre compte de service :gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/container.developer
Remplacez
PROJECT_ID
par l'ID de votre projet Google Cloud.
Notez que vous pouvez contrôler l'accès à votre cluster GKE à l'aide d'IAM et du contrôle des accès basé sur les rôles Kubernetes (RBAC) :
IAM n'est pas spécifique à Kubernetes. Il fournit des fonctionnalités de gestion des identités pour plusieurs produits Google Cloud et fonctionne principalement au niveau du projet Google Cloud.
Kubernetes RBAC est un composant essentiel de Kubernetes. Il vous permet de créer et d'attribuer des rôles (ensembles d'autorisations) pour tout objet ou type d'objet au sein du cluster. Si vous utilisez principalement GKE et que vous avez besoin d'autorisations précises pour chaque objet et opération de votre cluster, Kubernetes RBAC constitue le meilleur choix.
Pour en savoir plus, consultez la page Contrôle des accès.
Créer un cluster GKE
Pour utiliser le connecteur d'API Kubernetes, vous devez déjà avoir créé un cluster GKE public ou privé. Dans un cluster privé, les nœuds n'ont que des adresses IP internes, ce qui signifie que les nœuds et les pods sont isolés par défaut d'Internet. Pour en savoir plus, consultez la page Clusters privés.
Vous pouvez également spécifier le mode de fonctionnement, qui offre différents niveaux de flexibilité, de responsabilité et de contrôle. Par exemple, vous pouvez créer un cluster Autopilot. Il s'agit d'un mode de fonctionnement dans GKE dans lequel Google gère la configuration de votre cluster, y compris vos nœuds, le scaling, la sécurité et d'autres paramètres préconfigurés. Pour en savoir plus, consultez la page Choisir un mode de fonctionnement GKE.
Si vous n'avez pas encore créé de cluster GKE, vous pouvez déployer une application conteneurisée de serveur Web sur un cluster GKE. Pour essayer les instructions de ce document, vous pouvez également créer un cluster Autopilot en procédant comme suit.
Console
Dans Cloud Console, accédez à la page des clusters Kubernetes.
Cliquez sur add_box Créer.
Si vous êtes invité à choisir un mode de cluster, sélectionnez Autopilot.
Dans la section Paramètres de base du cluster, procédez comme suit :
- Saisissez le nom de votre cluster (par exemple,
hello-cluster
). - Sélectionnez une région pour votre cluster, par exemple
us-central1
.
- Saisissez le nom de votre cluster (par exemple,
Cliquez sur Next: Networking (Suivant : Mise en réseau).
Dans la section Accès au réseau IPv4, choisissez Cluster public pour créer un cluster avec un point de terminaison accessible publiquement.
Pour tous les autres paramètres, acceptez les valeurs par défaut.
Cliquez sur Créer.
La création du cluster peut prendre plusieurs minutes. Une fois le cluster créé, une coche
indique qu'il est en cours d'exécution.gcloud
Exécutez la commande ci-dessous.
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster GKE, tel quehello-cluster
LOCATION
: région de votre cluster, telle queus-central1
PROJECT_ID
: ID de votre projet Google Cloud
La création du cluster peut prendre plusieurs minutes. Une fois le cluster créé, le résultat doit ressembler à ce qui suit :
Creating cluster hello-cluster...done.
Created [https://container.googleapis.com/v1/projects/MY_PROJECT
/zones/us-central1/clusters/hello-cluster].
[...]
STATUS: RUNNING
Utiliser le connecteur pour envoyer une requête HTTP
Vous pouvez utiliser le connecteur d'API Kubernetes pour envoyer une requête HTTP au plan de contrôle d'un cluster GKE. Par exemple, le workflow suivant crée un déploiement nommé nginx-deployment
dans le cluster Kubernetes spécifié. Le déploiement décrit un état requis. Dans ce cas, il s'agit d'exécuter trois pods avec l'image nginx:1.14.2
et d'exposer leur service sur le port 80. (Si aucune valeur n'est spécifiée, les champs project
et location
sont définis par défaut sur ceux du workflow.)
Pour en savoir plus, consultez la page de référence sur la fonction du connecteur d'API Kubernetes, gke.request.
Veuillez noter les points suivants :
- Le champ
path
correspond au chemin d'accès de la méthode API Kubernetes. Pour plus d'informations, dans la documentation de Kubernetes, consultez la présentation de l'API qui renvoie vers les pages de documentation de référence de l'API Kubernetes. - Vous pouvez identifier et gérer les erreurs de requête HTTP dans votre workflow. Pour en savoir plus, consultez la section Erreurs de workflow.
Déployer votre workflow
Avant d'exécuter un workflow, vous devez le créer et le déployer.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Cliquez sur
Créer.Saisissez un nom pour le nouveau workflow, par exemple
kubernetes-api-request
.Dans la liste Région, sélectionnez us-central1.
Sélectionnez le compte de service que vous avez créé précédemment.
Cliquez sur Suivant.
Dans l'éditeur de workflow, saisissez la définition suivante pour votre workflow:
YAML
JSON
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster GKE, tel quehello-cluster
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: région de votre cluster, telle queus-central1
Cliquez sur Deploy (Déployer).
gcloud
Créez un fichier de code source pour votre workflow:
touch kubernetes-api-request.JSON_OR_YAML
Remplacez
JSON_OR_YAML
paryaml
oujson
selon le format de votre workflow.Dans un éditeur de texte, copiez le workflow suivant dans votre fichier de code source:
YAML
JSON
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster GKE, tel quehello-cluster
LOCATION
: région de votre cluster, telle queus-central1
Déployez le workflow :
gcloud workflows deploy kubernetes-api-request \ --source=kubernetes-api-request.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Exécuter votre workflow
Une fois votre workflow déployé, vous pouvez l'exécuter. L'exécution d'un workflow exécute la définition du workflow actuel qui lui est associé.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Sur la page Workflows, sélectionnez votre workflow pour accéder à sa page d'informations.
Sur la page Détails du workflow, cliquez sur play_arrow Exécuter.
Cliquez à nouveau sur Exécuter.
Affichez les résultats du workflow dans le volet Output (Résultat).
Si la requête aboutit, l'état d'exécution doit être
Succeeded
, et le corps de la réponse est renvoyé.
gcloud
Exécutez le workflow :
gcloud workflows run kubernetes-api-request \ --location=LOCATION
Si la requête aboutit, l'état doit être SUCCEEDED
et le corps de la réponse est renvoyé.
Utiliser le connecteur pour exécuter une tâche Kubernetes
Vous pouvez utiliser le connecteur d'API Kubernetes pour déployer et exécuter une tâche Kubernetes dans un cluster GKE. Le workflow suivant crée une tâche Kubernetes qui exécute un script Bash qui parcourt une séquence de nombres. Le workflow attend jusqu'à 90 secondes que la tâche Kubernetes se termine. Sinon, une erreur est générée. Si la tâche est terminée, elle est supprimée.
Notez qu'une tâche est considérée comme terminée si son état inclut un type de condition Complete
. Exemple :
"status": { "conditions": [ { "type": "Complete", "status": "True" } ] }
Si la tâche échoue, une balise FailedJobError
est renvoyée. Exemple :
{ "tags": ["FailedJobError"] "job": {...} "message":"Kubernetes job failed" }
Pour en savoir plus, consultez les pages de référence sur les fonctions suivantes du connecteur d'API Kubernetes:
Déployer votre workflow
Avant d'exécuter un workflow, vous devez le créer et le déployer.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Cliquez sur
Créer.Saisissez un nom pour le nouveau workflow, par exemple
kubernetes-api-job
.Dans la liste Région, sélectionnez us-central1.
Sélectionnez le compte de service que vous avez créé précédemment.
Cliquez sur Suivant.
Dans l'éditeur de workflow, saisissez la définition suivante pour votre workflow:
YAML
JSON
Remplacez les éléments suivants :
LOCATION
: région de votre cluster, telle queus-central1
CLUSTER_NAME
: nom de votre cluster GKE, tel quehello-cluster
JOB_NAME
: nom de la tâche Kubernetes, par exemplehello-job
Cliquez sur Deploy (Déployer).
gcloud
Créez un fichier de code source pour votre workflow:
touch kubernetes-api-job.JSON_OR_YAML
Remplacez
JSON_OR_YAML
paryaml
oujson
selon le format de votre workflow.Dans un éditeur de texte, copiez le workflow suivant dans votre fichier de code source:
YAML
JSON
Remplacez les éléments suivants :
LOCATION
: région de votre cluster, telle queus-central1
CLUSTER_NAME
: nom de votre cluster GKE, tel quehello-cluster
JOB_NAME
: nom de la tâche Kubernetes, par exemplehello-job
Déployez le workflow :
gcloud workflows deploy kubernetes-api-job \ --source=kubernetes-api-job.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Exécuter votre workflow
Une fois votre workflow déployé, vous pouvez l'exécuter. L'exécution d'un workflow exécute la définition du workflow actuel qui lui est associé.
Console
Dans la console Google Cloud, accédez à la page Workflows.
Sur la page Workflows, sélectionnez votre workflow pour accéder à sa page d'informations.
Sur la page Détails du workflow, cliquez sur play_arrow Exécuter.
Cliquez à nouveau sur Exécuter.
L'exécution du workflow peut prendre quelques minutes.
Affichez les résultats du workflow dans le volet Output (Résultat).
Les résultats doivent ressembler à ce qui suit:
{ ... }, "status": { "completionTime": "2023-10-31T17:04:32Z", "conditions": [ { "lastProbeTime": "2023-10-31T17:04:33Z", "lastTransitionTime": "2023-10-31T17:04:33Z", "status": "True", "type": "Complete" } ], "ready": 0, "startTime": "2023-10-31T17:04:28Z", "succeeded": 1, "uncountedTerminatedPods": {} } }
gcloud
Exécutez le workflow :
gcloud workflows run kubernetes-api-job \ --location=LOCATION
L'exécution du workflow peut prendre quelques minutes. Les résultats doivent ressembler à ce qui suit:
{
...
},
"status": {
"completionTime": "2023-10-31T17:04:32Z",
"conditions": [
{
"lastProbeTime": "2023-10-31T17:04:33Z",
"lastTransitionTime": "2023-10-31T17:04:33Z",
"status": "True",
"type": "Complete"
}
],
"ready": 0,
"startTime": "2023-10-31T17:04:28Z",
"succeeded": 1,
"uncountedTerminatedPods": {}
}
}