Back to Gitlabhq

API de l'agent Kubernetes

doc-locale/fr-fr/api/cluster_agents.md

19.1.032.9 KB
Original Source

{{< details >}}

  • Édition : Gratuite, GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

  • API des jetons d'agent introduite dans GitLab 15.0.

{{< /history >}}

Utilisez cette API pour interagir avec l'agent GitLab pour Kubernetes.

Lister tous les agents {#list-all-agents}

Liste tous les agents enregistrés pour le projet.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
GET /projects/:id/cluster_agents

Paramètres :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié

Réponse :

La réponse est une liste d'agents avec les champs suivants :

AttributTypeDescription
identierID de l'agent
namestringNom de l'agent
config_projectobjetObjet représentant le projet auquel appartient l'agent
config_project.identierID du projet
config_project.descriptionstringDescription du projet
config_project.namestringNom du projet
config_project.name_with_namespacestringNom complet avec l'espace de nommage du projet
config_project.pathstringChemin vers le projet
config_project.path_with_namespacestringChemin complet avec l'espace de nommage vers le projet
config_project.created_atstringDate et heure ISO8601 de création du projet
created_atstringDate et heure ISO8601 de création de l'agent
created_by_user_identierID de l'utilisateur qui a créé l'agent

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents"

Exemple de réponse :

json
[
  {
    "id": 1,
    "name": "agent-1",
    "config_project": {
      "id": 20,
      "description": "",
      "name": "test",
      "name_with_namespace": "Administrator / test",
      "path": "test",
      "path_with_namespace": "root/test",
      "created_at": "2022-03-20T20:42:40.221Z"
    },
    "created_at": "2022-04-20T20:42:40.221Z",
    "created_by_user_id": 42
  },
  {
    "id": 2,
    "name": "agent-2",
    "config_project": {
      "id": 20,
      "description": "",
      "name": "test",
      "name_with_namespace": "Administrator / test",
      "path": "test",
      "path_with_namespace": "root/test",
      "created_at": "2022-03-20T20:42:40.221Z"
    },
    "created_at": "2022-04-20T20:42:40.221Z",
    "created_by_user_id": 42
  }
]

Récupérer un agent {#retrieve-an-agent}

Récupère les détails d'un agent unique.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
GET /projects/:id/cluster_agents/:agent_id

Paramètres :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié
agent_identierouiID de l'agent

Réponse :

La réponse est un agent unique avec les champs suivants :

AttributTypeDescription
identierID de l'agent
namestringNom de l'agent
config_projectobjetObjet représentant le projet auquel appartient l'agent
config_project.identierID du projet
config_project.descriptionstringDescription du projet
config_project.namestringNom du projet
config_project.name_with_namespacestringNom complet avec l'espace de nommage du projet
config_project.pathstringChemin vers le projet
config_project.path_with_namespacestringChemin complet avec l'espace de nommage vers le projet
config_project.created_atstringDate et heure ISO8601 de création du projet
created_atstringDate et heure ISO8601 de création de l'agent
created_by_user_identierID de l'utilisateur qui a créé l'agent

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"

Exemple de réponse :

json
{
  "id": 1,
  "name": "agent-1",
  "config_project": {
    "id": 20,
    "description": "",
    "name": "test",
    "name_with_namespace": "Administrator / test",
    "path": "test",
    "path_with_namespace": "root/test",
    "created_at": "2022-03-20T20:42:40.221Z"
  },
  "created_at": "2022-04-20T20:42:40.221Z",
  "created_by_user_id": 42
}

Créer un agent {#create-an-agent}

Crée un nouvel agent pour le projet.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
POST /projects/:id/cluster_agents

Paramètres :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié
namestringouiNom de l'agent

Réponse :

La réponse est le nouvel agent avec les champs suivants :

AttributTypeDescription
identierID de l'agent
namestringNom de l'agent
config_projectobjetObjet représentant le projet auquel appartient l'agent
config_project.identierID du projet
config_project.descriptionstringDescription du projet
config_project.namestringNom du projet
config_project.name_with_namespacestringNom complet avec l'espace de nommage du projet
config_project.pathstringChemin vers le projet
config_project.path_with_namespacestringChemin complet avec l'espace de nommage vers le projet
config_project.created_atstringDate et heure ISO8601 de création du projet
created_atstringDate et heure ISO8601 de création de l'agent
created_by_user_identierID de l'utilisateur qui a créé l'agent

Exemple de requête :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents" \
  --data '{"name":"some-agent"}'

Exemple de réponse :

json
{
  "id": 1,
  "name": "agent-1",
  "config_project": {
    "id": 20,
    "description": "",
    "name": "test",
    "name_with_namespace": "Administrator / test",
    "path": "test",
    "path_with_namespace": "root/test",
    "created_at": "2022-03-20T20:42:40.221Z"
  },
  "created_at": "2022-04-20T20:42:40.221Z",
  "created_by_user_id": 42
}

Supprimer un agent {#delete-an-agent}

Supprime un enregistrement d'agent existant.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
DELETE /projects/:id/cluster_agents/:agent_id

Paramètres :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié
agent_identierouiID de l'agent

Exemple de requête :

shell
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"

Lister tous les jetons d'agent {#list-all-agent-tokens}

{{< history >}}

{{< /history >}}

Liste tous les jetons actifs d'un agent.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
GET /projects/:id/cluster_agents/:agent_id/tokens

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identier ou chaîneouiID de l'agent.

Réponse :

La réponse est une liste de jetons avec les champs suivants :

AttributTypeDescription
identierID du jeton.
namestringNom du jeton.
descriptionchaîne ou nullDescription du jeton.
agent_identierID de l'agent auquel appartient le jeton.
statusstringLe statut du jeton. Les valeurs valides sont active et revoked.
created_atstringDate et heure ISO8601 de création du jeton.
created_by_user_idstringID utilisateur de l'utilisateur qui a créé le jeton.

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens"

Exemple de réponse :

json
[
  {
    "id": 1,
    "name": "abcd",
    "description": "Some token",
    "agent_id": 5,
    "status": "active",
    "created_at": "2022-03-25T14:12:11.497Z",
    "created_by_user_id": 1
  },
  {
    "id": 2,
    "name": "foobar",
    "description": null,
    "agent_id": 5,
    "status": "active",
    "created_at": "2022-03-25T14:12:11.497Z",
    "created_by_user_id": 1
  }
]

[!note] Le champ last_used_at d'un jeton n'est retourné que lors de la récupération d'un seul jeton d'agent.

Récupérer un jeton d'agent {#retrieve-an-agent-token}

{{< history >}}

{{< /history >}}

Récupère un seul jeton d'agent.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

Retourne un 404 si le jeton d'agent a été révoqué.

plaintext
GET /projects/:id/cluster_agents/:agent_id/tokens/:token_id

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identierouiID de l'agent.
token_identierouiID du jeton.

Réponse :

La réponse est un seul jeton avec les champs suivants :

AttributTypeDescription
identierID du jeton.
namestringNom du jeton.
descriptionchaîne ou nullDescription du jeton.
agent_identierID de l'agent auquel appartient le jeton.
statusstringLe statut du jeton. Les valeurs valides sont active et revoked.
created_atstringDate et heure ISO8601 de création du jeton.
created_by_user_idstringID utilisateur de l'utilisateur qui a créé le jeton.
last_used_atchaîne ou nullDate et heure ISO8601 de la dernière utilisation du jeton.

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/token/1"

Exemple de réponse :

json
{
  "id": 1,
  "name": "abcd",
  "description": "Some token",
  "agent_id": 5,
  "status": "active",
  "created_at": "2022-03-25T14:12:11.497Z",
  "created_by_user_id": 1,
  "last_used_at": null
}

Créer un jeton d'agent {#create-an-agent-token}

{{< history >}}

  • Introduit dans GitLab 15.0.
  • La limite de deux jetons a été introduite dans GitLab 16.1 avec un indicateur nommé cluster_agents_limit_tokens_created.
  • La limite de deux jetons est généralement disponible dans GitLab 16.2. L'indicateur de fonctionnalité cluster_agents_limit_tokens_created a été supprimé.

{{< /history >}}

Crée un nouveau jeton pour un agent.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

Un agent ne peut avoir que deux jetons actifs à la fois.

plaintext
POST /projects/:id/cluster_agents/:agent_id/tokens

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identierouiID de l'agent.
namestringouiNom du jeton.
descriptionstringnonDescription du jeton.

Réponse :

La réponse est le nouveau jeton avec les champs suivants :

AttributTypeDescription
identierID du jeton.
namestringNom du jeton.
descriptionchaîne ou nullDescription du jeton.
agent_identierID de l'agent auquel appartient le jeton.
statusstringLe statut du jeton. Les valeurs valides sont active et revoked.
created_atstringDate et heure ISO8601 de création du jeton.
created_by_user_idstringID utilisateur de l'utilisateur qui a créé le jeton.
last_used_atchaîne ou nullDate et heure ISO8601 de la dernière utilisation du jeton.
tokenstringLa valeur secrète du jeton.

[!note] Le token n'est retourné que dans la réponse du point de terminaison POST et ne peut pas être récupéré ultérieurement.

Exemple de requête :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens" \
  --data '{"name":"some-token"}'

Exemple de réponse :

json
{
  "id": 1,
  "name": "abcd",
  "description": "Some token",
  "agent_id": 5,
  "status": "active",
  "created_at": "2022-03-25T14:12:11.497Z",
  "created_by_user_id": 1,
  "last_used_at": null,
  "token": "qeY8UVRisx9y3Loxo1scLxFuRxYcgeX3sxsdrpP_fR3Loq4xyg"
}

Révoquer un jeton d'agent {#revoke-an-agent-token}

{{< history >}}

{{< /history >}}

Révoque un jeton d'agent.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
DELETE /projects/:id/cluster_agents/:agent_id/tokens/:token_id

Attributs pris en charge :

| Attribut | Type | Requis | Description | |------------|-------------------|----------|---------------------------------------------------------------------------------------------------------------- -| | id | entier ou chaîne | oui | ID ou chemin encodé URL du projet géré par l'utilisateur authentifié. | | agent_id | entier | oui | ID de l'agent. | | token_id | entier | oui | ID du jeton. |

Exemple de requête :

shell
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens/1"

Agents réceptifs {#receptive-agents}

{{< details >}}

  • Édition : Ultimate
  • Offre : GitLab Self-Managed

{{< /details >}}

{{< history >}}

{{< /history >}}

Les agents réceptifs permettent à GitLab de s'intégrer aux clusters Kubernetes qui ne peuvent pas établir de connexion réseau avec l'instance GitLab, mais auxquels GitLab peut se connecter.

Lister toutes les configurations d'URL {#list-all-url-configurations}

Liste toutes les configurations d'URL pour un agent spécifié.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
GET /projects/:id/cluster_agents/:agent_id/url_configurations

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identier ou chaîneouiID de l'agent.

Réponse :

La réponse est une liste de configurations d'URL avec les champs suivants :

AttributTypeDescription
identierID de la configuration d'URL.
agent_identierID de l'agent auquel appartient la configuration d'URL.
urlstringURL pour cette configuration d'URL.
public_keystring(facultatif) Clé publique encodée en Base64 si l'authentification JWT est utilisée.
client_certstring(facultatif) Certificat client au format PEM si l'authentification mTLS est utilisée.
ca_certstring(facultatif) Certificat CA au format PEM pour vérifier le point de terminaison de l'agent.
tls_hoststring(facultatif) Nom d'hôte TLS pour vérifier le nom du serveur dans le point de terminaison de l'agent.

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations"

Exemple de réponse :

json
[
  {
    "id": 1,
    "agent_id": 5,
    "url": "grpcs://agent.example.com:4242",
    "public_key": "..."
  }
]

[!note] Soit public_key soit client_cert est défini, mais jamais les deux.

Récupérer une configuration d'URL {#retrieve-a-url-configuration}

Récupère une configuration d'URL d'agent unique.

Vous devez disposer du rôle Developer, Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
GET /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identierouiID de l'agent.
url_configuration_identierouiID de la configuration d'URL.

Réponse :

La réponse est une configuration d'URL unique avec les champs suivants :

AttributTypeDescription
identierID de la configuration d'URL.
agent_identierID de l'agent auquel appartient la configuration d'URL.
urlstringURL de l'agent pour cette configuration d'URL.
public_keystring(facultatif) Clé publique encodée en Base64 si l'authentification JWT est utilisée.
client_certstring(facultatif) Certificat client au format PEM si l'authentification mTLS est utilisée.
ca_certstring(facultatif) Certificat CA au format PEM pour vérifier le point de terminaison de l'agent.
tls_hoststring(facultatif) Nom d'hôte TLS pour vérifier le nom du serveur dans le point de terminaison de l'agent.

Exemple de requête :

shell
curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1"

Exemple de réponse :

json
{
  "id": 1,
  "agent_id": 5,
  "url": "grpcs://agent.example.com:4242",
  "public_key": "..."
}

[!note] Soit public_key soit client_cert est défini, mais jamais les deux.

Créer une configuration d'URL {#create-a-url-configuration}

Crée une nouvelle configuration d'URL pour un agent.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

Un agent ne peut avoir qu'une seule configuration d'URL à la fois.

plaintext
POST /projects/:id/cluster_agents/:agent_id/url_configurations

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identierouiID de l'agent.
urlstringouiURL de l'agent pour cette configuration d'URL.
client_certstringnonCertificat client au format PEM si l'authentification mTLS doit être utilisée. Doit être fourni avec client_key.
client_keystringnonClé client au format PEM si l'authentification mTLS doit être utilisée. Doit être fourni avec client_cert.
ca_certstringnonCertificat CA au format PEM pour vérifier le point de terminaison de l'agent.
tls_hoststringnonNom d'hôte TLS pour vérifier le nom du serveur dans le point de terminaison de l'agent.

Réponse :

La réponse est la nouvelle configuration d'URL avec les champs suivants :

AttributTypeDescription
identierID de la configuration d'URL.
agent_identierID de l'agent auquel appartient la configuration d'URL.
urlstringURL de l'agent pour cette configuration d'URL.
public_keystring(facultatif) Clé publique encodée en Base64 si l'authentification JWT est utilisée.
client_certstring(facultatif) Certificat client au format PEM si l'authentification mTLS est utilisée.
ca_certstring(facultatif) Certificat CA au format PEM pour vérifier le point de terminaison de l'agent.
tls_hoststring(facultatif) Nom d'hôte TLS pour vérifier le nom du serveur dans le point de terminaison de l'agent.

Exemple de requête pour créer une configuration d'URL avec un jeton JWT :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
  --data '{"url":"grpcs://agent.example.com:4242"}'

Exemple de réponse pour l'authentification JWT :

json
{
  "id": 1,
  "agent_id": 5,
  "url": "grpcs://agent.example.com:4242",
  "public_key": "..."
}

Exemple de requête pour créer une configuration d'URL avec mTLS à l'aide d'un certificat client et d'une clé provenant des fichiers client.pem et client-key.pem :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
  --data '{"url":"grpcs://agent.example.com:4242", \
           "client_cert":"'"$(awk -v ORS='\\n' '1' client.pem)"'", \
           "client_key":"'"$(awk -v ORS='\\n' '1' client-key.pem)"'"}'

Exemple de réponse pour mTLS :

json
{
  "id": 1,
  "agent_id": 5,
  "url": "grpcs://agent.example.com:4242",
  "client_cert": "..."
}

[!note] Si client_cert et client_key ne sont pas fournis, une paire de clés privée-publique est générée et l'authentification JWT est utilisée à la place de mTLS.

Supprimer une configuration d'URL {#delete-a-url-configuration}

Supprime une configuration d'URL d'agent.

Vous devez disposer du rôle Maintainer ou Owner pour utiliser ce point de terminaison.

plaintext
DELETE /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id

Attributs pris en charge :

AttributTypeObligatoireDescription
identier ou chaîneouiID ou chemin encodé URL du projet géré par l'utilisateur authentifié.
agent_identierouiID de l'agent.
url_configuration_identierouiID de la configuration d'URL.

Exemple de requête :

shell
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1