InfoGrab DocsInfoGrab Docs

Kubernetes 에이전트 API

요약

이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다. 프로젝트에 등록된 모든 에이전트를 나열합니다. 이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다.

모든 에이전트 목록 조회#

프로젝트에 등록된 모든 에이전트를 나열합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

GET /projects/:id/cluster_agents

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

curl --request GET \
  --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,
    "is_receptive": false
  },
  {
    "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,
    "is_receptive": false
  }
]

에이전트 조회#

단일 에이전트의 상세 정보를 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

GET /projects/:id/cluster_agents/:agent_id

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

curl --request GET \
  --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,
  "is_receptive": false
}

에이전트 생성#

프로젝트에 새 에이전트를 생성합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

POST /projects/:id/cluster_agents

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

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,
  "is_receptive": false
}

에이전트 삭제#

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

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

DELETE /projects/:id/cluster_agents/:agent_id

매개변수:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로
agent_id integer 예 에이전트의 ID

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"

모든 에이전트 토큰 목록 조회#

에이전트의 활성 토큰을 모두 나열합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer or string 예 에이전트의 ID.

응답:

응답은 다음 필드를 포함하는 토큰 목록입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.

요청 예시:

curl --request GET \
  --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
  }
]
Note

토큰의 last_used_at 필드는 단일 에이전트 토큰을 조회할 때만 반환됩니다.

에이전트 토큰 조회#

단일 에이전트 토큰을 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

에이전트 토큰이 취소된 경우 404를 반환합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
token_id integer 예 토큰의 ID.

응답:

응답은 다음 필드를 포함하는 단일 토큰입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.
last_used_at string or null 토큰이 마지막으로 사용된 ISO8601 일시.

요청 예시:

curl --request GET \
  --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 integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
name string 예 토큰에 지정할 이름.
description string 아니요 토큰에 지정할 설명.

응답:

응답은 다음 필드를 포함하는 새 토큰입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.
last_used_at string or null 토큰이 마지막으로 사용된 ISO8601 일시.
token string 비밀 토큰 값.
Note

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

에이전트 토큰 취소#

에이전트 토큰을 취소합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
token_id integer 예 토큰의 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 integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer or 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 --request GET \
  --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": "..."
  }
]
Note

public_key와 client_cert 중 하나만 설정되며, 둘 다 설정되지는 않습니다.

URL 구성 조회#

단일 에이전트 URL 구성을 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or 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 --request GET \
  --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": "..."
}
Note

public_key와 client_cert 중 하나만 설정되며, 둘 다 설정되지는 않습니다.

URL 구성 생성#

에이전트의 새 URL 구성을 생성합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

에이전트 하나는 동시에 하나의 URL 구성만 가질 수 있습니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or 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 --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": "..."
}
Note

client_cert와 client_key를 제공하지 않으면 개인 키와 공개 키 쌍이 생성되고 mTLS 대신 JWT 인증이 사용됩니다.

URL 구성 삭제#

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

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
url_configuration_id integer 예 URL 구성의 ID.

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1

Kubernetes 에이전트 API

GitLab v19.5
Tier: Ultimate
Offering: GitLab Self-Managed
원문 보기

요약

이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다. 프로젝트에 등록된 모든 에이전트를 나열합니다. 이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

이 API를 사용하여 Kubernetes용 GitLab 에이전트와 상호작용합니다.

모든 에이전트 목록 조회#

프로젝트에 등록된 모든 에이전트를 나열합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

GET /projects/:id/cluster_agents

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

curl --request GET \
  --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,
    "is_receptive": false
  },
  {
    "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,
    "is_receptive": false
  }
]

에이전트 조회#

단일 에이전트의 상세 정보를 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

GET /projects/:id/cluster_agents/:agent_id

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

curl --request GET \
  --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,
  "is_receptive": false
}

에이전트 생성#

프로젝트에 새 에이전트를 생성합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

POST /projects/:id/cluster_agents

매개변수:

속성 유형 필수 여부 설명
id integer or 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
is_receptive boolean 에이전트가 리셉티브 에이전트인지 여부

요청 예시:

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,
  "is_receptive": false
}

에이전트 삭제#

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

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

DELETE /projects/:id/cluster_agents/:agent_id

매개변수:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로
agent_id integer 예 에이전트의 ID

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/1"

모든 에이전트 토큰 목록 조회#

에이전트의 활성 토큰을 모두 나열합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer or string 예 에이전트의 ID.

응답:

응답은 다음 필드를 포함하는 토큰 목록입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.

요청 예시:

curl --request GET \
  --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
  }
]
Note

토큰의 last_used_at 필드는 단일 에이전트 토큰을 조회할 때만 반환됩니다.

에이전트 토큰 조회#

단일 에이전트 토큰을 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

에이전트 토큰이 취소된 경우 404를 반환합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
token_id integer 예 토큰의 ID.

응답:

응답은 다음 필드를 포함하는 단일 토큰입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.
last_used_at string or null 토큰이 마지막으로 사용된 ISO8601 일시.

요청 예시:

curl --request GET \
  --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 integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
name string 예 토큰에 지정할 이름.
description string 아니요 토큰에 지정할 설명.

응답:

응답은 다음 필드를 포함하는 새 토큰입니다.

속성 유형 설명
id integer 토큰의 ID.
name string 토큰의 이름.
description string or null 토큰의 설명.
agent_id integer 토큰이 속한 에이전트의 ID.
status string 토큰의 상태. 유효한 값은 active와 revoked 입니다.
created_at string 토큰이 생성된 ISO8601 일시.
created_by_user_id string 토큰을 생성한 사용자의 사용자 ID.
last_used_at string or null 토큰이 마지막으로 사용된 ISO8601 일시.
token string 비밀 토큰 값.
Note

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

에이전트 토큰 취소#

에이전트 토큰을 취소합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
token_id integer 예 토큰의 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 integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer or 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 --request GET \
  --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": "..."
  }
]
Note

public_key와 client_cert 중 하나만 설정되며, 둘 다 설정되지는 않습니다.

URL 구성 조회#

단일 에이전트 URL 구성을 조회합니다.

이 엔드포인트를 사용하려면 Developer, Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or 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 --request GET \
  --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": "..."
}
Note

public_key와 client_cert 중 하나만 설정되며, 둘 다 설정되지는 않습니다.

URL 구성 생성#

에이전트의 새 URL 구성을 생성합니다.

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

에이전트 하나는 동시에 하나의 URL 구성만 가질 수 있습니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or 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 --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": "..."
}
Note

client_cert와 client_key를 제공하지 않으면 개인 키와 공개 키 쌍이 생성되고 mTLS 대신 JWT 인증이 사용됩니다.

URL 구성 삭제#

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

이 엔드포인트를 사용하려면 Maintainer 또는 Owner 권한이 있어야 합니다.

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

지원되는 속성:

속성 유형 필수 여부 설명
id integer or string 예 인증된 사용자가 관리하는 프로젝트의 ID 또는 URL 인코딩된 경로.
agent_id integer 예 에이전트의 ID.
url_configuration_id integer 예 URL 구성의 ID.

요청 예시:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/20/cluster_agents/5/url_configurations/1