에이전트 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 에이전트 토큰 API가 도입됨 GitLab 15.0에서.

Kubernetes용 GitLab 에이전트와 작업하려면 에이전트 API를 사용하세요.

프로젝트의 에이전트 목록

프로젝트에 등록된 에이전트 목록을 반환합니다.

이 엔드포인트를 사용하려면 최소한 개발자 역할이 필요합니다.

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
}

등록된 에이전트 삭제

기존 에이전트 등록을 삭제합니다.

이 엔드포인트를 사용하려면 최소한 Maintainer 역할이 필요합니다.

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

에이전트의 토큰 목록

에이전트의 활성 토큰 목록을 반환합니다.

이 엔드포인트를 사용하려면 최소한 Developer 역할이 필요합니다.

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

참고:

토큰의 last_used_at 필드는 단일 에이전트 토큰을 가져올 때만 반환됩니다.

단일 에이전트 토큰 가져오기

단일 에이전트 토큰을 가져옵니다.

이 엔드포인트를 사용하려면 최소한 개발자 역할이 있어야 합니다.

에이전트 토큰이 해제된 경우 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
}

에이전트 토큰 생성

  • GitLab 15.0에서 소개됨.
  • 두 개의 토큰 제한이 GitLab 16.1에서 도입됨cluster_agents_limit_tokens_created라는 플래그 포함.
  • 두 개의 토큰 제한이 GitLab 16.2에서 일반 제공됨. 기능 플래그 cluster_agents_limit_tokens_created가 제거됨.

에이전트를 위한 새 토큰을 생성합니다.

이 엔드포인트를 사용하려면 최소한 유지 관리 역할이 있어야 합니다.

에이전트는 한 번에 두 개의 활성 토큰만 가질 수 있습니다.

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 문자열 비밀 토큰 값.

주의: tokenPOST 엔드포인트의 응답에서만 반환되며 나중에 검색할 수 없습니다.

예제 요청:

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 정수 또는 문자열 인증된 사용자가 관리하는 프로젝트의 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"

수용 가능한 에이전트

Tier: Ultimate Offering: Self-managed

Receptive agents는 GitLab이 GitLab 인스턴스와 네트워크 연결을 설정할 수 없는 Kubernetes 클러스터와 통합할 수 있게 해주지만 GitLab에서는 연결할 수 있습니다.

수용 에이전트에 대한 URL 구성 목록

에이전트에 대한 URL 구성 목록을 반환합니다.

이 엔드포인트를 사용하려면 최소한 Developer 역할이 필요합니다.

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

지원되는 속성:

속성 유형 필수 설명
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": "..."
}

클라이언트 인증서와 키를 사용하여 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_certclient_key가 제공되지 않으면 개인-공개 키 쌍이 생성되고 JWT 인증이 mTLS 대신 사용됩니다.

에이전트 URL 구성 삭제

에이전트 URL 구성을 삭제합니다.

이 엔드포인트를 사용하려면 최소한 Maintainer 역할이 필요합니다.

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