Kubernetes 代理 API
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
使用此 API 与 GitLab Kubernetes 代理 进行交互。
列出项目的代理
返回为项目注册的代理列表。
您必须至少拥有 Developer 角色才能使用此端点。
GET /projects/:id/cluster_agents参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径 |
响应:
响应是包含以下字段的代理列表:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 代理的 ID |
name |
string | 代理的名称 |
config_project |
object | 表示代理所属项目的对象 |
config_project.id |
integer | 项目的 ID |
config_project.description |
string | 项目的描述 |
config_project.name |
string | 项目的名称 |
config_project.name_with_namespace |
string | 项目的完整命名空间名称 |
config_project.path |
string | 项目路径 |
config_project.path_with_namespace |
string | 项目的完整命名空间路径 |
config_project.created_at |
string | 项目创建时的 ISO8601 日期时间 |
created_at |
string | 代理创建时的 ISO8601 日期时间 |
created_by_user_id |
integer | 创建代理的用户的 ID |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents"示例响应:
[
{
"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
}
]获取代理详情
获取单个代理的详细信息。
您必须至少拥有 Developer 角色才能使用此端点。
GET /projects/:id/cluster_agents/:agent_id参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径 |
agent_id |
integer | 是 | 代理的 ID |
响应:
响应是包含以下字段的单个代理:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 代理的 ID |
name |
string | 代理的名称 |
config_project |
object | 表示代理所属项目的对象 |
config_project.id |
integer | 项目的 ID |
config_project.description |
string | 项目的描述 |
config_project.name |
string | 项目的名称 |
config_project.name_with_namespace |
string | 项目的完整命名空间名称 |
config_project.path |
string | 项目路径 |
config_project.path_with_namespace |
string | 项目的完整命名空间路径 |
config_project.created_at |
string | 项目创建时的 ISO8601 日期时间 |
created_at |
string | 代理创建时的 ISO8601 日期时间 |
created_by_user_id |
integer | 创建代理的用户的 ID |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"示例响应:
{
"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
}向项目注册代理
向项目注册一个代理。
您必须至少拥有 Maintainer 角色才能使用此端点。
POST /projects/:id/cluster_agents参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径 |
name |
string | 是 | 代理的名称 |
响应:
响应是新代理,包含以下字段:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 代理的 ID |
name |
string | 代理的名称 |
config_project |
object | 表示代理所属项目的对象 |
config_project.id |
integer | 项目的 ID |
config_project.description |
string | 项目的描述 |
config_project.name |
string | 项目的名称 |
config_project.name_with_namespace |
string | 项目的完整命名空间名称 |
config_project.path |
string | 项目路径 |
config_project.path_with_namespace |
string | 项目的完整命名空间路径 |
config_project.created_at |
string | 项目创建时的 ISO8601 日期时间 |
created_at |
string | 代理创建时的 ISO8601 日期时间 |
created_by_user_id |
integer | 创建代理的用户的 ID |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents" \
-H "Content-Type:application/json" \
-X POST --data '{"name":"some-agent"}'示例响应:
{
"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
}删除已注册的代理
删除现有的代理注册。
您必须至少拥有 Maintainer 角色才能使用此端点。
DELETE /projects/:id/cluster_agents/:agent_id参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径 |
agent_id |
integer | 是 | 代理的 ID |
示例请求:
curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1列出代理的令牌
返回代理的活动令牌列表。
您必须至少拥有 Developer 角色才能使用此端点。
GET /projects/:id/cluster_agents/:agent_id/tokens支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer 或 string | 是 | 代理的 ID。 |
响应:
响应是包含以下字段的令牌列表:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 令牌的 ID。 |
name |
string | 令牌的名称。 |
description |
string 或 null | 令牌的描述。 |
agent_id |
integer | 令牌所属的代理的 ID。 |
status |
string | 令牌的状态。有效值为 active 和 revoked。 |
created_at |
string | 令牌创建时的 ISO8601 日期时间。 |
created_by_user_id |
string | 创建令牌的用户 ID。 |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens"示例响应:
[
{
"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
}
]令牌的 last_used_at 字段仅在获取单个代理令牌时返回。
获取单个代理令牌
获取单个代理令牌。
您必须至少拥有 Developer 角色才能使用此端点。
如果代理令牌已被撤销,则返回 404。
GET /projects/:id/cluster_agents/:agent_id/tokens/:token_id支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
token_id |
integer | 是 | 令牌的 ID。 |
响应:
响应是包含以下字段的单个令牌:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 令牌的 ID。 |
name |
string | 令牌的名称。 |
description |
string 或 null | 令牌的描述。 |
agent_id |
integer | 令牌所属的代理的 ID。 |
status |
string | 令牌的状态。有效值为 active 和 revoked。 |
created_at |
string | 令牌创建时的 ISO8601 日期时间。 |
created_by_user_id |
string | 创建令牌的用户 ID。 |
last_used_at |
string 或 null | 令牌上次使用时的 ISO8601 日期时间。 |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/token/1"示例响应:
{
"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
}创建代理令牌
为代理创建新令牌。
您必须至少拥有 Maintainer 角色才能使用此端点。
一个代理同时只能有两个活动令牌。
POST /projects/:id/cluster_agents/:agent_id/tokens支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
name |
string | 是 | 令牌的名称。 |
description |
string | 否 | 令牌的描述。 |
响应:
响应是新令牌,包含以下字段:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | 令牌的 ID。 |
name |
string | 令牌的名称。 |
description |
string 或 null | 令牌的描述。 |
agent_id |
integer | 令牌所属的代理的 ID。 |
status |
string | 令牌的状态。有效值为 active 和 revoked。 |
created_at |
string | 令牌创建时的 ISO8601 日期时间。 |
created_by_user_id |
string | 创建令牌的用户 ID。 |
last_used_at |
string 或 null | 令牌上次使用时的 ISO8601 日期时间。 |
token |
string | 密钥令牌值。 |
token 仅在 POST 端点的响应中返回,之后无法检索。
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens" \
-H "Content-Type:application/json" \
-X POST --data '{"name":"some-token"}'示例响应:
{
"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"
}撤销代理令牌
撤销代理令牌。
您必须至少拥有 Maintainer 角色才能使用此端点。
DELETE /projects/:id/cluster_agents/:agent_id/tokens/:token_id支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
token_id |
integer | 是 | 令牌的 ID。 |
示例请求:
curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens/1接收代理
- Tier: Ultimate
- Offering: GitLab Self-Managed
接收代理 允许 GitLab 与无法建立到 GitLab 实例的网络连接但可以被 GitLab 连接的 Kubernetes 集群集成。
列出接收代理的 URL 配置
返回代理的 URL 配置列表。
您必须至少拥有 Developer 角色才能使用此端点。
GET /projects/:id/cluster_agents/:agent_id/url_configurations支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer 或 string | 是 | 代理的 ID。 |
响应:
响应是包含以下字段的 URL 配置列表:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | URL 配置的 ID。 |
agent_id |
integer | URL 配置所属的代理的 ID。 |
url |
string | 此 URL 配置的 URL。 |
public_key |
string | (可选)如果使用 JWT 身份验证,则为 Base64 编码的公钥。 |
client_cert |
string | (可选)如果使用 mTLS 身份验证,则为 PEM 格式的客户端证书。 |
ca_cert |
string | (可选)用于验证代理端点的 PEM 格式的 CA 证书。 |
tls_host |
string | (可选)用于验证代理端点中服务器名称的 TLS 主机名。 |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations"示例响应:
[
{
"id": 1,
"agent_id": 5,
"url": "grpcs://agent.example.com:4242",
"public_key": "..."
}
]设置了 public_key 或 client_cert 中的一个,但不会同时设置两者。
获取单个代理 URL 配置
获取单个代理 URL 配置。
您必须至少拥有 Developer 角色才能使用此端点。
GET /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
url_configuration_id |
integer | 是 | URL 配置的 ID。 |
响应:
响应是包含以下字段的单个 URL 配置:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | URL 配置的 ID。 |
agent_id |
integer | URL 配置所属的代理的 ID。 |
url |
string | 此 URL 配置的代理 URL。 |
public_key |
string | (可选)如果使用 JWT 身份验证,则为 Base64 编码的公钥。 |
client_cert |
string | (可选)如果使用 mTLS 身份验证,则为 PEM 格式的客户端证书。 |
ca_cert |
string | (可选)用于验证代理端点的 PEM 格式的 CA 证书。 |
tls_host |
string | (可选)用于验证代理端点中服务器名称的 TLS 主机名。 |
示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1"示例响应:
{
"id": 1,
"agent_id": 5,
"url": "grpcs://agent.example.com:4242",
"public_key": "..."
}设置了 public_key 或 client_cert 中的一个,但不会同时设置两者。
创建代理 URL 配置
为代理创建新的 URL 配置。
您必须至少拥有 Maintainer 角色才能使用此端点。
一个代理同时只能有一个 URL 配置。
POST /projects/:id/cluster_agents/:agent_id/url_configurations支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
url |
string | 是 | 此 URL 配置的代理 URL。 |
client_cert |
string | 否 | 如果应使用 mTLS 身份验证,则为 PEM 格式的客户端证书。必须与 client_key 一起提供。 |
client_key |
string | 否 | 如果应使用 mTLS 身份验证,则为 PEM 格式的客户端密钥。必须与 client_cert 一起提供。 |
ca_cert |
string | 否 | 用于验证代理端点的 PEM 格式的 CA 证书。 |
tls_host |
string | 否 | 用于验证代理端点中服务器名称的 TLS 主机名。 |
响应:
响应是新 URL 配置,包含以下字段:
| 属性 | 类型 | 描述 |
|---|---|---|
id |
integer | URL 配置的 ID。 |
agent_id |
integer | URL 配置所属的代理的 ID。 |
url |
string | 此 URL 配置的代理 URL。 |
public_key |
string | (可选)如果使用 JWT 身份验证,则为 Base64 编码的公钥。 |
client_cert |
string | (可选)如果使用 mTLS 身份验证,则为 PEM 格式的客户端证书。 |
ca_cert |
string | (可选)用于验证代理端点的 PEM 格式的 CA 证书。 |
tls_host |
string | (可选)用于验证代理端点中服务器名称的 TLS 主机名。 |
使用 JWT 令牌创建 URL 配置的示例请求:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
-H "Content-Type:application/json" \
-X POST --data '{"url":"grpcs://agent.example.com:4242"}'JWT 身份验证的示例响应:
{
"id": 1,
"agent_id": 5,
"url": "grpcs://agent.example.com:4242",
"public_key": "..."
}使用 mTLS 创建 URL 配置的示例请求,使用文件 client.pem 和 client-key.pem 中的客户端证书和密钥:
curl --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
-H "Content-Type:application/json" \
-X POST --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)"'"}'mTLS 的示例响应:
{
"id": 1,
"agent_id": 5,
"url": "grpcs://agent.example.com:4242",
"client_cert": "..."
}如果未提供 client_cert 和 client_key,则会生成私钥-公钥对,并使用 JWT 身份验证而不是 mTLS。
删除代理 URL 配置
删除代理 URL 配置。
您必须至少拥有 Maintainer 角色才能使用此端点。
DELETE /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id支持的属性:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
integer 或 string | 是 | 由认证用户维护的项目的 ID 或 URL 编码的项目路径。 |
agent_id |
integer | 是 | 代理的 ID。 |
url_configuration_id |
integer | 是 | URL 配置的 ID。 |
示例请求:
curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1"