# Project clusters API > 原文:[https://docs.gitlab.com/ee/api/project_clusters.html](https://docs.gitlab.com/ee/api/project_clusters.html) * [List project clusters](#list-project-clusters) * [Get a single project cluster](#get-a-single-project-cluster) * [Add existing cluster to project](#add-existing-cluster-to-project) * [Edit project cluster](#edit-project-cluster) * [Delete project cluster](#delete-project-cluster) # Project clusters API[](#project-clusters-api "Permalink") 在 GitLab 11.7 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/23922) . **注意:**用户将至少需要维护者访问权限才能使用这些端点. ## List project clusters[](#list-project-clusters "Permalink") 返回项目集群的列表. ``` GET /projects/:id/clusters ``` Parameters: | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer | yes | 认证用户拥有的项目的 ID | 请求示例: ``` curl --header "Private-Token: " "https://gitlab.example.com/api/v4/projects/26/clusters" ``` 响应示例: ``` [ { "id":18, "name":"cluster-1", "domain":"example.com", "created_at":"2019-01-02T20:18:12.563Z", "provider_type":"user", "platform_type":"kubernetes", "environment_scope":"*", "cluster_type":"project_type", "user": { "id":1, "name":"Administrator", "username":"root", "state":"active", "avatar_url":"https://www.gravatar.com/avatar/4249f4df72b..", "web_url":"https://gitlab.example.com/root" }, "platform_kubernetes": { "api_url":"https://104.197.68.152", "namespace":"cluster-1-namespace", "authorization_type":"rbac", "ca_cert":"-----BEGIN CERTIFICATE-----\r\nhFiK1L61owwDQYJKoZIhvcNAQELBQAw\r\nLzEtMCsGA1UEAxMkZDA1YzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM4ZDBj\r\nMB4XDTE4MTIyNzIwMDM1MVoXDTIzMTIyNjIxMDM1MVowLzEtMCsGA1UEAxMkZDA1\r\nYzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM.......-----END CERTIFICATE-----" }, "management_project": { "id":2, "description":null, "name":"project2", "name_with_namespace":"John Doe8 / project2", "path":"project2", "path_with_namespace":"namespace2/project2", "created_at":"2019-10-11T02:55:54.138Z" } }, { "id":19, "name":"cluster-2", ... } ] ``` ## Get a single project cluster[](#get-a-single-project-cluster "Permalink") 获取单个项目集群. ``` GET /projects/:id/clusters/:cluster_id ``` Parameters: | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer | yes | 认证用户拥有的项目的 ID | | `cluster_id` | integer | yes | 集群的 ID | 请求示例: ``` curl --header "Private-Token: " "https://gitlab.example.com/api/v4/projects/26/clusters/18" ``` 响应示例: ``` { "id":18, "name":"cluster-1", "domain":"example.com", "created_at":"2019-01-02T20:18:12.563Z", "provider_type":"user", "platform_type":"kubernetes", "environment_scope":"*", "cluster_type":"project_type", "user": { "id":1, "name":"Administrator", "username":"root", "state":"active", "avatar_url":"https://www.gravatar.com/avatar/4249f4df72b..", "web_url":"https://gitlab.example.com/root" }, "platform_kubernetes": { "api_url":"https://104.197.68.152", "namespace":"cluster-1-namespace", "authorization_type":"rbac", "ca_cert":"-----BEGIN CERTIFICATE-----\r\nhFiK1L61owwDQYJKoZIhvcNAQELBQAw\r\nLzEtMCsGA1UEAxMkZDA1YzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM4ZDBj\r\nMB4XDTE4MTIyNzIwMDM1MVoXDTIzMTIyNjIxMDM1MVowLzEtMCsGA1UEAxMkZDA1\r\nYzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM.......-----END CERTIFICATE-----" }, "management_project": { "id":2, "description":null, "name":"project2", "name_with_namespace":"John Doe8 / project2", "path":"project2", "path_with_namespace":"namespace2/project2", "created_at":"2019-10-11T02:55:54.138Z" }, "project": { "id":26, "description":"", "name":"project-with-clusters-api", "name_with_namespace":"Administrator / project-with-clusters-api", "path":"project-with-clusters-api", "path_with_namespace":"root/project-with-clusters-api", "created_at":"2019-01-02T20:13:32.600Z", "default_branch":null, "tag_list":[], "ssh_url_to_repo":"ssh://gitlab.example.com/root/project-with-clusters-api.git", "http_url_to_repo":"https://gitlab.example.com/root/project-with-clusters-api.git", "web_url":"https://gitlab.example.com/root/project-with-clusters-api", "readme_url":null, "avatar_url":null, "star_count":0, "forks_count":0, "last_activity_at":"2019-01-02T20:13:32.600Z", "namespace": { "id":1, "name":"root", "path":"root", "kind":"user", "full_path":"root", "parent_id":null } } } ``` ## Add existing cluster to project[](#add-existing-cluster-to-project "Permalink") 将现有的 Kubernetes 集群添加到项目中. ``` POST /projects/:id/clusters/user ``` Parameters: | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer | yes | 认证用户拥有的项目的 ID | | `name` | string | yes | 集群名称 | | `domain` | string | no | 集群的[基础域](../user/project/clusters/index.html#base-domain) | | `management_project_id` | integer | no | 集群[管理项目](../user/clusters/management_project.html)的 ID | | `enabled` | boolean | no | 确定集群是否处于活动状态,默认为 true | | `managed` | boolean | no | Determines if GitLab will manage namespaces and service accounts for this cluster, defaults to true | | `platform_kubernetes_attributes[api_url]` | string | yes | 访问 Kubernetes API 的 URL | | `platform_kubernetes_attributes[token]` | string | yes | 针对 Kubernetes 进行身份验证的令牌 | | `platform_kubernetes_attributes[ca_cert]` | string | no | TLS 证书. 如果 API 使用自签名 TLS 证书,则为必填. | | `platform_kubernetes_attributes[namespace]` | string | no | 与项目相关的唯一名称空间 | | `platform_kubernetes_attributes[authorization_type]` | string | no | 集群授权类型: `rbac` , `abac`或`unknown_authorization` . 默认为`rbac` . | | `environment_scope` | string | no | 集群的关联环境. 默认为`*` | 请求示例: ``` curl --header "Private-Token: " "https://gitlab.example.com/api/v4/projects/26/clusters/user" \ -H "Accept: application/json" \ -H "Content-Type:application/json" \ -X POST --data '{"name":"cluster-5", "platform_kubernetes_attributes":{"api_url":"https://35.111.51.20","token":"12345","namespace":"cluster-5-namespace","ca_cert":"-----BEGIN CERTIFICATE-----\r\nhFiK1L61owwDQYJKoZIhvcNAQELBQAw\r\nLzEtMCsGA1UEAxMkZDA1YzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM4ZDBj\r\nMB4XDTE4MTIyNzIwMDM1MVoXDTIzMTIyNjIxMDM1MVowLzEtMCsGA1UEAxMkZDA1\r\nYzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM.......-----END CERTIFICATE-----"}}' ``` 响应示例: ``` { "id":24, "name":"cluster-5", "created_at":"2019-01-03T21:53:40.610Z", "provider_type":"user", "platform_type":"kubernetes", "environment_scope":"*", "cluster_type":"project_type", "user": { "id":1, "name":"Administrator", "username":"root", "state":"active", "avatar_url":"https://www.gravatar.com/avatar/4249f4df72b..", "web_url":"https://gitlab.example.com/root" }, "platform_kubernetes": { "api_url":"https://35.111.51.20", "namespace":"cluster-5-namespace", "authorization_type":"rbac", "ca_cert":"-----BEGIN CERTIFICATE-----\r\nhFiK1L61owwDQYJKoZIhvcNAQELBQAw\r\nLzEtMCsGA1UEAxMkZDA1YzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM4ZDBj\r\nMB4XDTE4MTIyNzIwMDM1MVoXDTIzMTIyNjIxMDM1MVowLzEtMCsGA1UEAxMkZDA1\r\nYzQ1YjctNzdiMS00NDY0LThjNmEtMTQ0ZDJkZjM.......-----END CERTIFICATE-----" }, "management_project":null, "project": { "id":26, "description":"", "name":"project-with-clusters-api", "name_with_namespace":"Administrator / project-with-clusters-api", "path":"project-with-clusters-api", "path_with_namespace":"root/project-with-clusters-api", "created_at":"2019-01-02T20:13:32.600Z", "default_branch":null, "tag_list":[], "ssh_url_to_repo":"ssh:://gitlab.example.com/root/project-with-clusters-api.git", "http_url_to_repo":"https://gitlab.example.com/root/project-with-clusters-api.git", "web_url":"https://gitlab.example.com/root/project-with-clusters-api", "readme_url":null, "avatar_url":null, "star_count":0, "forks_count":0, "last_activity_at":"2019-01-02T20:13:32.600Z", "namespace": { "id":1, "name":"root", "path":"root", "kind":"user", "full_path":"root", "parent_id":null } } } ``` ## Edit project cluster[](#edit-project-cluster "Permalink") 更新现有项目集群. ``` PUT /projects/:id/clusters/:cluster_id ``` Parameters: | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer | yes | 认证用户拥有的项目的 ID | | `cluster_id` | integer | yes | 集群的 ID | | `name` | string | no | 集群名称 | | `domain` | string | no | 集群的[基础域](../user/project/clusters/index.html#base-domain) | | `management_project_id` | integer | no | 集群[管理项目](../user/clusters/management_project.html)的 ID | | `platform_kubernetes_attributes[api_url]` | string | no | 访问 Kubernetes API 的 URL | | `platform_kubernetes_attributes[token]` | string | no | 针对 Kubernetes 进行身份验证的令牌 | | `platform_kubernetes_attributes[ca_cert]` | string | no | TLS 证书. 如果 API 使用自签名 TLS 证书,则为必填. | | `platform_kubernetes_attributes[namespace]` | string | no | 与项目相关的唯一名称空间 | | `environment_scope` | string | no | 集群的关联环境 | **注意:**仅通过["添加现有 Kubernetes 群集"](../user/project/clusters/add_remove_clusters.html#add-existing-cluster)选项或通过["将现有群集添加到项目"](#add-existing-cluster-to-project)端点[添加群集时,](#add-existing-cluster-to-project)才能更新`name` , `api_url` , `ca_cert`和`token` . 请求示例: ``` curl --header "Private-Token: " "https://gitlab.example.com/api/v4/projects/26/clusters/24" \ -H "Content-Type:application/json" \ -X PUT --data '{"name":"new-cluster-name","domain":"new-domain.com","api_url":"https://new-api-url.com"}' ``` 响应示例: ``` { "id":24, "name":"new-cluster-name", "domain":"new-domain.com", "created_at":"2019-01-03T21:53:40.610Z", "provider_type":"user", "platform_type":"kubernetes", "environment_scope":"*", "cluster_type":"project_type", "user": { "id":1, "name":"Administrator", "username":"root", "state":"active", "avatar_url":"https://www.gravatar.com/avatar/4249f4df72b..", "web_url":"https://gitlab.example.com/root" }, "platform_kubernetes": { "api_url":"https://new-api-url.com", "namespace":"cluster-5-namespace", "authorization_type":"rbac", "ca_cert":null }, "management_project": { "id":2, "description":null, "name":"project2", "name_with_namespace":"John Doe8 / project2", "path":"project2", "path_with_namespace":"namespace2/project2", "created_at":"2019-10-11T02:55:54.138Z" }, "project": { "id":26, "description":"", "name":"project-with-clusters-api", "name_with_namespace":"Administrator / project-with-clusters-api", "path":"project-with-clusters-api", "path_with_namespace":"root/project-with-clusters-api", "created_at":"2019-01-02T20:13:32.600Z", "default_branch":null, "tag_list":[], "ssh_url_to_repo":"ssh:://gitlab.example.com/root/project-with-clusters-api.git", "http_url_to_repo":"https://gitlab.example.com/root/project-with-clusters-api.git", "web_url":"https://gitlab.example.com/root/project-with-clusters-api", "readme_url":null, "avatar_url":null, "star_count":0, "forks_count":0, "last_activity_at":"2019-01-02T20:13:32.600Z", "namespace": { "id":1, "name":"root", "path":"root", "kind":"user", "full_path":"root", "parent_id":null } } } ``` ## Delete project cluster[](#delete-project-cluster "Permalink") 删除现有项目集群. ``` DELETE /projects/:id/clusters/:cluster_id ``` Parameters: | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer | yes | 认证用户拥有的项目的 ID | | `cluster_id` | integer | yes | 集群的 ID | 请求示例: ``` curl --request DELETE --header "Private-Token: " "https://gitlab.example.com/api/v4/projects/26/clusters/23" ```