298.md 11.9 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
# 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: <your_access_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: <your_access_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: <your_access_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: <your_access_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: <your_access_token>" "https://gitlab.example.com/api/v4/projects/26/clusters/23" 
```