Un cluster Google Kubernetes Engine (GKE) se compose 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 un cluster GKE. Les nœuds sont des machines de calcul qui exécutent vos applications en conteneurs et d'autres charges de travail, et 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 des objets Kubernetes dans le 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 section Objects in Kubernetes (Objets dans Kubernetes) et la section API Overview (Présentation de l'API) de la documentation Kubernetes, qui contient des liens vers les pages 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 du service Kubernetes hébergé sur le plan de contrôle d'un cluster. Par exemple, vous pouvez utiliser le connecteur pour créer Déploiements Kubernetes, exécuter des jobs, gérer les pods ou accéder aux applications déployées via un proxy. Pour en savoir plus, consultez les Présentation du connecteur d'API Kubernetes
Avant de commencer
Avant de réaliser les tâches de ce document, assurez-vous d'avoir rempli certaines conditions préalables.
Activer les API
Avant de pouvoir accéder aux objets de l'API Kubernetes à l'aide du connecteur d'API Kubernetes, vous devez activer les API suivantes:
- API Google Kubernetes Engine : permet de créer et de gérer des applications basées sur des conteneurs à l'aide de GKE.
API Workflows: pour gérer les définitions et les workflows executions; l'activation de l'API Workflows active automatiquement API Workflow Executions
Console
Activer les API :
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Activer les API :
gcloud services enable container.googleapis.com workflows.googleapis.com
Créer un compte de service
créer un compte de service géré par l'utilisateur
sert d'identité de votre workflow et lui accorde
Développeur sur Kubernetes Engine
(roles/container.developer
) pour que le workflow puisse accéder à Kubernetes
d'objets API dans des 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. Google Cloud dans la console 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électionnez un rôle, filtrez et sélectionnez le rôle Kubernetes Développeur sur Google 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 utiliser à la fois IAM et Kubernetes le contrôle des accès basé sur les rôles (RBAC) pour contrôler l'accès à vos GKE cluster:
IAM n'est pas spécifique à Kubernetes. elle fournit l'identité pour la gestion de multiples produits Google Cloud, 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 dans le cluster. Si vous utilisez principalement GKE et que vous avez besoin des autorisations précises pour chaque objet et opération de votre Kubernetes RBAC est 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 ne disposent que les adresses IP internes, ce qui signifie que les nœuds et les pods sont isolés Internet par défaut. Pour en savoir plus, consultez la section Clusters privés.
Vous pouvez également spécifier le mode de fonctionnement, qui propose différents niveaux de flexibilité, de responsabilité et de contrôle. Par exemple, vous pouvez créer un cluster Autopilot, qui est un mode de fonctionnement de 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 Choisissez un mode de fonctionnement GKE.
Si vous n'avez pas encore créé de cluster GKE, vous pouvez Déployer une application conteneurisée sur un serveur Web à un cluster GKE. Pour suivre 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é à sélectionner 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 Suivant : Mise en réseau.
Dans la section Accès au réseau IPv4, vous pouvez créer un cluster avec un point de terminaison accessible, choisissez Cluster public.
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 GKE cluster, tel quehello-cluster
LOCATION
: région de votre cluster, par exempleus-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 à
le plan de contrôle du 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, pour exécuter
les pods avec l'image nginx:1.14.2
et exposent leur service sur le port 80. (Si aucune valeur n'est spécifiée, project
et location
sont définis par défaut sur ceux du workflow.)
Pour en savoir plus, consultez la page de référence de la fonction de connecteur d'API Kubernetes, gke.request.
Veuillez noter les points suivants :
- Le champ
path
correspond au chemin d'accès à la méthode de l'API Kubernetes. Pour en savoir plus, consultez la présentation de l'API dans la documentation Kubernetes, qui contient des liens vers les pages de référence de l'API Kubernetes. - Vous pouvez intercepter et gérer les erreurs de requête HTTP dans votre flux de travail. Pour en savoir plus, consultez 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 GKE cluster, tel quehello-cluster
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: région de votre cluster, par exempleus-central1
Cliquez sur Déployer.
gcloud
Créez un fichier de code source pour votre workflow:
touch kubernetes-api-request.JSON_OR_YAML
Remplacer
JSON_OR_YAML
paryaml
oujson
en fonction du format de votre flux de travail.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 GKE cluster, tel quehello-cluster
LOCATION
: région de votre cluster, par exempleus-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
Après avoir déployé votre workflow, vous pouvez l'exécuter. L'exécution d'un workflow exécute la définition actuelle du workflow associé au workflow.
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 un job 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 un job Kubernetes qui exécute un script Bash qui itère sur une séquence de nombres. Le workflow attend jusqu'à 90 secondes que la tâche Kubernetes se termine ; Sinon, une 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 une condition.
Type de 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 de l'API Kubernetes suivante Fonctions du connecteur:
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, par exempleus-central1
CLUSTER_NAME
: nom de votre cluster GKE, par exemplehello-cluster
JOB_NAME
: nom de la tâche Kubernetes, tel que en tant quehello-job
Cliquez sur Déployer.
gcloud
Créez un fichier de code source pour votre workflow:
touch kubernetes-api-job.JSON_OR_YAML
Remplacer
JSON_OR_YAML
paryaml
oujson
en fonction du format de votre flux de travail.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, par exempleus-central1
CLUSTER_NAME
: nom de votre cluster GKE, par exemplehello-cluster
JOB_NAME
: nom de la tâche Kubernetes, tel que en tant quehello-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
Après avoir déployé votre workflow, vous pouvez l'exécuter. L'exécution d'un workflow exécute la définition actuelle du workflow associé au workflow.
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 à ceci :
{
...
},
"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": {}
}
}