Back to Gitlabhq

API des clusters d'instance (basée sur les certificats) (obsolète)

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

19.1.012.0 KB
Original Source

{{< details >}}

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

{{< /details >}}

[!warning] Cette fonctionnalité a été dépréciée dans GitLab 14.5.

Avec les clusters Kubernetes au niveau de l'instance, vous pouvez connecter un cluster Kubernetes à l'instance GitLab et utiliser le même cluster pour tous les projets de votre instance.

Les utilisateurs doivent disposer d'un accès administrateur pour utiliser ces endpoints.

Lister les clusters d'instance {#list-instance-clusters}

Liste tous les clusters d'instance.

plaintext
GET /admin/clusters

Exemple de requête :

shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/clusters"

Exemple de réponse :

json
[
  {
    "id": 9,
    "name": "cluster-1",
    "created_at": "2020-07-14T18:36:10.440Z",
    "managed": true,
    "enabled": true,
    "domain": null,
    "provider_type": "user",
    "platform_type": "kubernetes",
    "environment_scope": "*",
    "cluster_type": "instance_type",
    "user": {
      "id": 1,
      "name": "Administrator",
      "username": "root",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/root"
    },
    "platform_kubernetes": {
      "api_url": "https://example.com",
      "namespace": null,
      "authorization_type": "rbac",
      "ca_cert":"-----BEGIN CERTIFICATE-----IxMDM1MV0ZDJkZjM...-----END CERTIFICATE-----"
    },
    "provider_gcp": null,
    "management_project": null
  },
  {
    "id": 10,
    "name": "cluster-2",
    "created_at": "2020-07-14T18:39:05.383Z",
    "domain": null,
    "provider_type": "user",
    "platform_type": "kubernetes",
    "environment_scope": "staging",
    "cluster_type": "instance_type",
    "user": {
      "id": 1,
      "name": "Administrator",
      "username": "root",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
      "web_url": "https://gitlab.example.com/root"
    },
    "platform_kubernetes": {
      "api_url": "https://example.com",
      "namespace": null,
      "authorization_type": "rbac",
      "ca_cert":"-----BEGIN CERTIFICATE-----LzEtMCadtaLGxcsGAZjM...-----END CERTIFICATE-----"
    },
    "provider_gcp": null,
    "management_project": null
  },
  {
    "id": 11,
    "name": "cluster-3",
    ...
  }
]

Récupérer un seul cluster d'instance {#retrieve-a-single-instance-cluster}

Récupère un seul cluster d'instance.

Paramètres :

AttributTypeObligatoireDescription
cluster_idintegerouiL'ID du cluster
plaintext
GET /admin/clusters/:cluster_id

Exemple de requête :

shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/clusters/9"

Exemple de réponse :

json
{
  "id": 9,
  "name": "cluster-1",
  "created_at": "2020-07-14T18:36:10.440Z",
  "managed": true,
  "enabled": true,
  "domain": null,
  "provider_type": "user",
  "platform_type": "kubernetes",
  "environment_scope": "*",
  "cluster_type": "instance_type",
  "user": {
    "id": 1,
    "name": "Administrator",
    "username": "root",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/root"
  },
  "platform_kubernetes": {
    "api_url": "https://example.com",
    "namespace": null,
    "authorization_type": "rbac",
    "ca_cert":"-----BEGIN CERTIFICATE-----IxMDM1MV0ZDJkZjM...-----END CERTIFICATE-----"
  },
  "provider_gcp": null,
  "management_project": null
}

Créer un cluster d'instance {#create-an-instance-cluster}

Crée un cluster d'instance en ajoutant un cluster Kubernetes existant.

plaintext
POST /admin/clusters/add

Paramètres :

AttributTypeObligatoireDescription
namestringouiLe nom du cluster
domainstringnonLe domaine de base du cluster
environment_scopestringnonL'environnement associé au cluster. Par défaut : *
management_project_idintegernonL'ID du projet de gestion du cluster
enabledbooleannonDétermine si le cluster est actif ou non, par défaut true
managedbooleannonDétermine si GitLab gère les espaces de nommage et les comptes de service pour ce cluster. Par défaut : true
platform_kubernetes_attributes[api_url]stringouiL'URL d'accès à l'API Kubernetes
platform_kubernetes_attributes[token]stringouiLe token pour s'authentifier auprès de Kubernetes
platform_kubernetes_attributes[ca_cert]stringnonCertificat TLS. Requis si l'API utilise un certificat TLS auto-signé.
platform_kubernetes_attributes[namespace]stringnonL'espace de nommage unique lié au projet
platform_kubernetes_attributes[authorization_type]stringnonLe type d'autorisation du cluster : rbac, abac ou unknown_authorization. Par défaut : rbac.

Exemple de requête :

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{"name":"cluster-3", "environment_scope":"production", "platform_kubernetes_attributes":{"api_url":"https://example.com", "token":"12345", "ca_cert":"-----BEGIN CERTIFICATE-----qpoeiXXZafCM0ZDJkZjM...-----END CERTIFICATE-----"}}' \
  --url "http://gitlab.example.com/api/v4/admin/clusters/add"

Exemple de réponse :

json
{
  "id": 11,
  "name": "cluster-3",
  "created_at": "2020-07-14T18:42:50.805Z",
  "managed": true,
  "enabled": true,
  "domain": null,
  "provider_type": "user",
  "platform_type": "kubernetes",
  "environment_scope": "production",
  "cluster_type": "instance_type",
  "user": {
    "id": 1,
    "name": "Administrator",
    "username": "root",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
    "web_url": "http://gitlab.example.com:3000/root"
  },
  "platform_kubernetes": {
    "api_url": "https://example.com",
    "namespace": null,
    "authorization_type": "rbac",
    "ca_cert":"-----BEGIN CERTIFICATE-----qpoeiXXZafCM0ZDJkZjM...-----END CERTIFICATE-----"
  },
  "provider_gcp": null,
  "management_project": null
}

Mettre à jour un cluster d'instance {#update-an-instance-cluster}

Met à jour un cluster d'instance existant.

plaintext
PUT /admin/clusters/:cluster_id

Paramètres :

AttributTypeObligatoireDescription
cluster_idintegerouiL'ID du cluster
namestringnonLe nom du cluster
domainstringnonLe domaine de base du cluster
environment_scopestringnonL'environnement associé au cluster
management_project_idintegernonL'ID du projet de gestion du cluster
enabledbooleannonDétermine si le cluster est actif ou non
managedbooleannonDétermine si GitLab gère les espaces de nommage et les comptes de service pour ce cluster
platform_kubernetes_attributes[api_url]stringnonL'URL d'accès à l'API Kubernetes
platform_kubernetes_attributes[token]stringnonLe token pour s'authentifier auprès de Kubernetes
platform_kubernetes_attributes[ca_cert]stringnonCertificat TLS. Requis si l'API utilise un certificat TLS auto-signé.
platform_kubernetes_attributes[namespace]stringnonL'espace de nommage unique lié au projet

[!note] name, api_url, ca_cert et token ne peuvent être mis à jour que si le cluster a été ajouté via l'option Add existing Kubernetes cluster ou via l'endpoint Créer un cluster d'instance.

Exemple de requête :

shell
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --data '{"name":"update-cluster-name", "platform_kubernetes_attributes":{"api_url":"https://new-example.com","token":"new-token"}}' \
  --url "http://gitlab.example.com/api/v4/admin/clusters/9"

Exemple de réponse :

json
{
  "id": 9,
  "name": "update-cluster-name",
  "created_at": "2020-07-14T18:36:10.440Z",
  "managed": true,
  "enabled": true,
  "domain": null,
  "provider_type": "user",
  "platform_type": "kubernetes",
  "environment_scope": "*",
  "cluster_type": "instance_type",
  "user": {
    "id": 1,
    "name": "Administrator",
    "username": "root",
    "state": "active",
    "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
    "web_url": "https://gitlab.example.com/root"
  },
  "platform_kubernetes": {
    "api_url": "https://new-example.com",
    "namespace": null,
    "authorization_type": "rbac",
    "ca_cert":"-----BEGIN CERTIFICATE-----IxMDM1MV0ZDJkZjM...-----END CERTIFICATE-----"
  },
  "provider_gcp": null,
  "management_project": null,
  "project": null
}

Supprimer un cluster d'instance {#delete-instance-cluster}

Supprime un cluster d'instance existant. Ne supprime pas les ressources existantes dans le cluster Kubernetes connecté.

plaintext
DELETE /admin/clusters/:cluster_id

Paramètres :

AttributTypeObligatoireDescription
cluster_idintegerouiL'ID du cluster

Exemple de requête :

shell
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/admin/clusters/11"