Kubernetes 에이전트 API
Offering: GitLab Self-Managed
이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다. 프로젝트에 등록된 모든 에이전트를 나열합니다. 이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
히스토리
- Agent Tokens API가 GitLab 15.0에서 도입되었습니다.
이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다.
모든 에이전트 나열#
프로젝트에 등록된 모든 에이전트를 나열합니다.
이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
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>" \
--url "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, Maintainer 또는 Owner 역할이 있어야 합니다.
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>" \
--url "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 또는 Owner 역할이 있어야 합니다.
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 --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents" \
--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 또는 Owner 역할이 있어야 합니다.
DELETE /projects/:id/cluster_agents/:agent_id
파라미터:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL-인코딩된 경로. |
agent_id |
정수 | 예 | 에이전트의 ID. |
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"
모든 에이전트 토큰 나열#
히스토리
- GitLab 15.0에서 도입되었습니다.
에이전트의 모든 활성 토큰을 나열합니다.
이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
GET /projects/:id/cluster_agents/:agent_id/tokens
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL-인코딩된 경로. |
agent_id |
정수 또는 문자열 | 예 | 에이전트의 ID. |
응답:
응답은 다음 필드를 포함하는 토큰 목록입니다:
| 속성 | 유형 | 설명 |
|---|---|---|
id |
정수 | 토큰의 ID. |
name |
문자열 | 토큰의 이름. |
description |
문자열 또는 null | 토큰의 설명. |
agent_id |
정수 | 토큰이 속한 에이전트의 ID. |
status |
문자열 | 토큰의 상태. 유효한 값은 active 및 revoked입니다. |
created_at |
문자열 | 토큰이 생성된 ISO8601 날짜/시간. |
created_by_user_id |
문자열 | 토큰을 생성한 사용자의 사용자 ID. |
요청 예시:
curl \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "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 필드는 단일 에이전트 토큰을 가져올 때만 반환됩니다.
에이전트 토큰 조회#
히스토리
- GitLab 15.0에서 도입되었습니다.
단일 에이전트 토큰을 조회합니다.
이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
에이전트 토큰이 취소된 경우 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 |
문자열 | 토큰의 상태. 유효한 값은 active 및 revoked입니다. |
created_at |
문자열 | 토큰이 생성된 ISO8601 날짜/시간. |
created_by_user_id |
문자열 | 토큰을 생성한 사용자의 사용자 ID. |
last_used_at |
문자열 또는 null | 토큰이 마지막으로 사용된 ISO8601 날짜/시간. |
요청 예시:
curl \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "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 또는 Owner 역할이 있어야 합니다.
에이전트는 한 번에 두 개의 활성 토큰만 가질 수 있습니다.
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 |
문자열 | 토큰의 상태. 유효한 값은 active 및 revoked입니다. |
created_at |
문자열 | 토큰이 생성된 ISO8601 날짜/시간. |
created_by_user_id |
문자열 | 토큰을 생성한 사용자의 사용자 ID. |
last_used_at |
문자열 또는 null | 토큰이 마지막으로 사용된 ISO8601 날짜/시간. |
token |
문자열 | 시크릿 토큰 값. |
token은 POST 엔드포인트의 응답에서만 반환되며 이후에는 조회할 수 없습니다.
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens" \
--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"
}
에이전트 토큰 취소#
히스토리
- GitLab 15.0에서 도입되었습니다.
에이전트 토큰을 취소합니다.
이 엔드포인트를 사용하려면 Maintainer 또는 Owner 역할이 있어야 합니다.
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>" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/tokens/1"
수신형 에이전트#
히스토리
- GitLab 17.4에서 도입되었습니다.
수신형 에이전트를 사용하면 GitLab 인스턴스에 네트워크 연결을 설정할 수 없지만 GitLab에서 연결할 수 있는 Kubernetes 클러스터와 GitLab을 통합할 수 있습니다.
모든 URL 구성 나열#
지정된 에이전트의 모든 URL 구성을 나열합니다.
이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
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>" \
--url "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, Maintainer 또는 Owner 역할이 있어야 합니다.
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>" \
--url "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 또는 Owner 역할이 있어야 합니다.
에이전트는 한 번에 하나의 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 --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
--data '{"url":"grpcs://agent.example.com:4242"}'
JWT 인증에 대한 응답 예시:
{
"id": 1,
"agent_id": 5,
"url": "grpcs://agent.example.com:4242",
"public_key": "..."
}
client.pem 및 client-key.pem 파일에서 클라이언트 인증서와 키를 사용하여 mTLS로 URL 구성을 생성하기 위한 요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations" \
--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가 제공되지 않으면 개인-공개 키 쌍이 생성되고 mTLS 대신 JWT 인증이 사용됩니다.
URL 구성 삭제#
에이전트 URL 구성을 삭제합니다.
이 엔드포인트를 사용하려면 Maintainer 또는 Owner 역할이 있어야 합니다.
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
