Help us learn about your current experience with the documentation. Take the survey.

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 令牌的状态。有效值为 activerevoked
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 令牌的状态。有效值为 activerevoked
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 令牌的状态。有效值为 activerevoked
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_keyclient_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_keyclient_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.pemclient-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_certclient_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"