{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

{{< /details >}}

{{< history >}}

  • 代理令牌 API 引入于极狐GitLab 15.0。

{{< /history >}}

使用 Agents API 与极狐GitLab Kubernetes 代理进行交互。

列出项目的代理

返回注册项目的代理列表。

您必须至少拥有开发者角色才能使用此端点。

GET /projects/:id/cluster_agents

参数:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径

响应:

响应是具有以下字段的代理列表:

属性 类型 描述
id 整数 代理的 ID
name 字符串 代理的名称
config_project 对象 表示代理所属项目的对象
config_project.id 整数 项目的 ID
config_project.description 字符串 项目的描述
config_project.name 字符串 项目的名称
config_project.name_with_namespace 字符串 项目完整名称与命名空间
config_project.path 字符串 项目的路径
config_project.path_with_namespace 字符串 项目完整路径与命名空间
config_project.created_at 字符串 项目创建时的 ISO8601 日期时间
created_at 字符串 代理创建时的 ISO8601 日期时间
created_by_user_id 整数 创建代理的用户 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
  }
]

获取代理的详细信息

获取单个代理的详细信息。

您必须至少拥有开发者角色才能使用此端点。

GET /projects/:id/cluster_agents/:agent_id

参数:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID

响应:

响应是具有以下字段的单个代理:

属性 类型 描述
id 整数 代理的 ID
name 字符串 代理的名称
config_project 对象 表示代理所属项目的对象
config_project.id 整数 项目的 ID
config_project.description 字符串 项目的描述
config_project.name 字符串 项目的名称
config_project.name_with_namespace 字符串 项目完整名称与命名空间
config_project.path 字符串 项目的路径
config_project.path_with_namespace 字符串 项目完整路径与命名空间
config_project.created_at 字符串 项目创建时的 ISO8601 日期时间
created_at 字符串 代理创建时的 ISO8601 日期时间
created_by_user_id 整数 创建代理的用户 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
}

将代理注册到项目

将代理注册到项目。

您必须至少拥有维护者角色才能使用此端点。

POST /projects/:id/cluster_agents

参数:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
name 字符串 代理的名称

响应:

响应是具有以下字段的新代理:

属性 类型 描述
id 整数 代理的 ID
name 字符串 代理的名称
config_project 对象 表示代理所属项目的对象
config_project.id 整数 项目的 ID
config_project.description 字符串 项目的描述
config_project.name 字符串 项目的名称
config_project.name_with_namespace 字符串 项目完整名称与命名空间
config_project.path 字符串 项目的路径
config_project.path_with_namespace 字符串 项目完整路径与命名空间
config_project.created_at 字符串 项目创建时的 ISO8601 日期时间
created_at 字符串 代理创建时的 ISO8601 日期时间
created_by_user_id 整数 创建代理的用户 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
}

删除注册的代理

删除现有的代理注册。

您必须至少拥有维护者角色才能使用此端点。

DELETE /projects/:id/cluster_agents/:agent_id

参数:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID

示例请求:

curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1

列出代理的令牌

{{< history >}}

  • 引入于极狐GitLab 15.0。

{{< /history >}}

返回代理的活动令牌列表。

您必须至少拥有开发者角色才能使用此端点。

GET /projects/:id/cluster_agents/:agent_id/tokens

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数或字符串 代理的 ID

响应:

响应是具有以下字段的令牌列表:

属性 类型 描述
id 整数 令牌的 ID
name 字符串 令牌的名称
description 字符串或 null 令牌的描述
agent_id 整数 令牌所属代理的 ID
status 字符串 令牌的状态。有效值为 activerevoked
created_at 字符串 令牌创建时的 ISO8601 日期时间
created_by_user_id 字符串 创建令牌的用户 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
  }
]

{{< alert type=”note” >}}

令牌的 last_used_at 字段仅在获取单个代理令牌时返回。

{{< /alert >}}

获取单个代理令牌

{{< history >}}

  • 引入于极狐GitLab 15.0。

{{< /history >}}

获取单个代理令牌。

您必须至少拥有开发者角色才能使用此端点。

如果代理令牌已被吊销,则返回 404

GET /projects/:id/cluster_agents/:agent_id/tokens/:token_id

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
token_id 整数 令牌的 ID

响应:

响应是具有以下字段的单个令牌:

属性 类型 描述
id 整数 令牌的 ID
name 字符串 令牌的名称
description 字符串或 null 令牌的描述
agent_id 整数 令牌所属代理的 ID
status 字符串 令牌的状态。有效值为 activerevoked
created_at 字符串 令牌创建时的 ISO8601 日期时间
created_by_user_id 字符串 创建令牌的用户 ID
last_used_at 字符串或 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
}

创建代理令牌

{{< history >}}

  • 引入于极狐GitLab 15.0。
  • 双令牌限制引入于极狐GitLab 16.1,使用名为 cluster_agents_limit_tokens_created功能标志
  • 双令牌限制在极狐GitLab 16.2 GA。功能标志 cluster_agents_limit_tokens_created 被移除。

{{< /history >}}

为代理创建新令牌。

您必须至少拥有维护者角色才能使用此端点。

代理一次只能有两个活动令牌。

POST /projects/:id/cluster_agents/:agent_id/tokens

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
name 字符串 令牌的名称
description 字符串 令牌的描述

响应:

响应是具有以下字段的新令牌:

属性 类型 描述
id 整数 令牌的 ID
name 字符串 令牌的名称
description 字符串或 null 令牌的描述
agent_id 整数 令牌所属代理的 ID
status 字符串 令牌的状态。有效值为 activerevoked
created_at 字符串 令牌创建时的 ISO8601 日期时间
created_by_user_id 字符串 创建令牌的用户 ID
last_used_at 字符串或 null 令牌最后使用时的 ISO8601 日期时间
token 字符串 密钥令牌值

{{< alert type=”note” >}}

token 仅在 POST 端点响应中返回,之后无法检索。

{{< /alert >}}

示例请求:

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"
}

吊销代理令牌

{{< history >}}

  • 引入于极狐GitLab 15.0。

{{< /history >}}

吊销代理令牌。

您必须至少拥有维护者角色才能使用此端点。

DELETE /projects/:id/cluster_agents/:agent_id/tokens/:token_id

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
token_id 整数 令牌的 ID

示例请求:

curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens/1

接收代理

{{< details >}}

  • Tier: 旗舰版
  • Offering: 极狐GitLab 私有化部署

{{< /details >}}

{{< history >}}

  • 引入于极狐GitLab 17.4。

{{< /history >}}

接收代理允许极狐GitLab与无法建立网络连接到极狐GitLab 实例但可以通过极狐GitLab连接的 Kubernetes 集群集成。

列出接收代理的 URL 配置

返回代理的 URL 配置列表。

您必须至少拥有开发者角色才能使用此端点。

GET /projects/:id/cluster_agents/:agent_id/url_configurations

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数或字符串 代理的 ID

响应:

响应是具有以下字段的 URL 配置列表:

属性 类型 描述
id 整数 URL 配置的 ID
agent_id 整数 URL 配置所属代理的 ID
url 字符串 此 URL 配置的 URL
public_key 字符串 (可选)如果使用 JWT 认证,则为 Base64 编码的公钥
client_cert 字符串 (可选)如果使用 mTLS 认证,则为 PEM 格式的客户端证书
ca_cert 字符串 (可选)用于验证代理端点的 PEM 格式的 CA 证书
tls_host 字符串 (可选)用于验证代理端点服务器名称的 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": "..."
  }
]

{{< alert type=”note” >}}

public_keyclient_cert 设置,但从不同时设置。

{{< /alert >}}

获取单个代理 URL 配置

获取单个代理 URL 配置。

您必须至少拥有开发者角色才能使用此端点。

GET /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
url_configuration_id 整数 URL 配置的 ID

响应:

响应是具有以下字段的单个 URL 配置:

属性 类型 描述
id 整数 URL 配置的 ID
agent_id 整数 URL 配置所属代理的 ID
url 字符串 此 URL 配置的代理 URL
public_key 字符串 (可选)如果使用 JWT 认证,则为 Base64 编码的公钥
client_cert 字符串 (可选)如果使用 mTLS 认证,则为 PEM 格式的客户端证书
ca_cert 字符串 (可选)用于验证代理端点的 PEM 格式的 CA 证书
tls_host 字符串 (可选)用于验证代理端点服务器名称的 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": "..."
}

{{< alert type=”note” >}}

public_keyclient_cert 设置,但从不同时设置。

{{< /alert >}}

创建代理 URL 配置

为代理创建新的 URL 配置。

您必须至少拥有维护者角色才能使用此端点。

代理一次只能有一个 URL 配置。

POST /projects/:id/cluster_agents/:agent_id/url_configurations

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
url 字符串 此 URL 配置的代理 URL
client_cert 字符串 如果应使用 mTLS 认证,则为 PEM 格式的客户端证书。必须与 client_key 一起提供。
client_key 字符串 如果应使用 mTLS 认证,则为 PEM 格式的客户端密钥。必须与 client_cert 一起提供。
ca_cert 字符串 用于验证代理端点的 PEM 格式的 CA 证书
tls_host 字符串 用于验证代理端点服务器名称的 TLS 主机名

响应:

响应是具有以下字段的新 URL 配置:

属性 类型 描述
id 整数 URL 配置的 ID
agent_id 整数 URL 配置所属代理的 ID
url 字符串 此 URL 配置的代理 URL
public_key 字符串 (可选)如果使用 JWT 认证,则为 Base64 编码的公钥
client_cert 字符串 (可选)如果使用 mTLS 认证,则为 PEM 格式的客户端证书
ca_cert 字符串 (可选)用于验证代理端点的 PEM 格式的 CA 证书
tls_host 字符串 (可选)用于验证代理端点服务器名称的 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": "..."
}

使用文件 client.pemclient-key.pem 中的客户端证书和密钥,通过 mTLS 创建 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", "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": "..."
}

{{< alert type=”note” >}}

如果未提供 client_certclient_key,则会生成一对私钥-公钥,并使用 JWT 认证而不是 mTLS。

{{< /alert >}}

删除代理 URL 配置

删除代理 URL 配置。

您必须至少拥有维护者角色才能使用此端点。

DELETE /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id

支持的属性:

属性 类型 必需的 描述
id 整数或字符串 经过身份验证的用户维护的项目的 ID 或 URL 编码路径
agent_id 整数 代理的 ID
url_configuration_id 整数 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