- 프로젝트의 에이전트 목록
- 에이전트 세부 정보 가져오기
- 프로젝트에 에이전트 등록
- 등록된 대리인 삭제
- 에이전트를 위한 토큰 목록
- 단일 에이전트 토큰 가져오기
- 에이전트 토큰 생성
- 에이전트 토큰 취소
- 수용 에이전트
Agents API
- Agent Tokens API introduced in GitLab 15.0.
GitLab 에이전트 API를 사용하여 Kubernetes용 GitLab 에이전트 작업을 수행합니다.
프로젝트의 에이전트 목록
프로젝트에 등록된 에이전트 목록을 반환합니다.
이 엔드포인트를 사용하려면 적어도 Developer 역할이 있어야 합니다.
GET /projects/:id/cluster_agents
매개변수:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| integer 또는 string | yes | 인증된 사용자가 유지 관리하는 프로젝트의 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 | yes | 인증된 사용자가 유지 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로 |
agent_id
| integer | yes | 에이전트의 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 | yes | 인증된 사용자가 유지 관리하는 프로젝트의 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" \
-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
| 정수 또는 문자열 | 예 | 인증된 사용자가 유지하는 URL로 인코딩된 프로젝트 경로의 ID 또는 경로 |
agent_id
| 정수 | 예 | 에이전트의 ID |
예시 요청:
curl --request DELETE --header "Private-Token: <your_access_token>" "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1
에이전트를 위한 토큰 목록
- GitLab 15.0에서 도입되었습니다.
에이전트에 대한 활성화된 토큰 목록을 반환합니다.
이 엔드포인트를 사용하려면 적어도 Developer 역할이 있어야 합니다.
GET /projects/:id/cluster_agents/:agent_id/tokens
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 인증된 사용자가 유지하는 URL로 인코딩된 프로젝트 경로의 ID 또는 경로 |
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>" "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 역할이 있어야 합니다.
에이전트 토큰이 폐기된 경우 404
를 반환합니다.
GET /projects/:id/cluster_agents/:agent_id/tokens/:token_id
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 인증된 사용자가 유지하는 URL로 인코딩된 프로젝트 경로의 ID 또는 경로 |
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>" "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
}
에이전트 토큰 생성
- GitLab 15.0에서 도입되었습니다.
- GitLab 16.1에서 두 토큰 제한이 도입되었습니다 (기능 플래그
cluster_agents_limit_tokens_created
사용).- GitLab 16.2에서 두 토큰 제한이 일반 사용 가능해졌습니다. 기능 플래그
cluster_agents_limit_tokens_created
가 제거되었습니다.
에이전트를 위한 새로운 토큰을 생성합니다.
이 엔드포인트를 사용하려면 적어도 Maintainer 역할이 있어야 합니다.
하나의 에이전트는 한 번에 활성 상태의 토큰을 두 개만 가질 수 있습니다.
POST /projects/:id/cluster_agents/:agent_id/tokens
지원되는 속성:
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 인증된 사용자가 유지하는 URL로 인코딩된 프로젝트 경로의 ID 또는 경로 |
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 --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"
}
에이전트 토큰 취소
- GitLab 15.0에서 도입되었습니다.
에이전트 토큰을 취소합니다.
이 엔드포인트를 사용하려면 적어도 Maintainer 역할이 있어야 합니다.
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
수용 에이전트
- GitLab 17.4에서 도입되었습니다.
수용 에이전트는 GitLab이 Kubernetes 클러스터와 통신 연결을 설정할 수 없는 경우에도 GitLab과 통합할 수 있도록 합니다.
수용 에이전트의 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": "..."
}
]
참고:
public_key
또는 client_cert
둘 중 하나만 설정되지만 둘 다 설정되지는 않습니다.
단일 에이전트 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": "..."
}
참고:
public_key
또는 client_cert
둘 중 하나만 설정되지만 둘 다 설정되지는 않습니다.
에이전트 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.pem
및 client-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": "..."
}
참고:
client_cert
및 client_key
가 제공되지 않으면 개인-공개 키 쌍이 생성되고 mTLS 대신 JWT 인증이 사용됩니다.
에이전트 URL 구성 삭제
에이전트 URL 구성을 삭제합니다.
이 엔드포인트를 사용하려면 적어도 Maintainer 역할이 있어야 합니다.
DELETE /projects/:id/cluster_agents/:agent_id/url_configurations/:url_configuration_id
지원되는 속성:
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | yes | 인증된 사용자가 유지 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로입니다. |
agent_id
| 정수 | yes | 에이전트의 ID입니다. |
url_configuration_id
| 정수 | yes | 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