正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

KubernetesエージェントAPI

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

このAPIを使用して、Kubernetes向けGitLabエージェントを操作します。

プロジェクトのエージェントをリスト表示します

プロジェクトに登録されているエージェントのリストを返します。

このエンドポイントを使用するには、デベロッパーロール以上が必要です。

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

エージェントの詳細を取得

単一のエージェントの詳細を取得します。

このエンドポイントを使用するには、デベロッパーロール以上が必要です。

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
}

プロジェクトにエージェントを登録

プロジェクトにエージェントを登録します。

このエンドポイントを使用するには、少なくともメンテナーのロールが必要です。

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
}

登録されたエージェントを削除

既存のエージェント登録を削除します。

このエンドポイントを使用するには、少なくともメンテナーのロールが必要です。

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"

エージェントのトークンをリスト表示

エージェントのアクティブなトークンのリストを返します。

このエンドポイントを使用するには、デベロッパーロール以上が必要です。

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>" \
  --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フィールドは、単一のエージェントトークンを取得するときにのみ返されます。

単一のエージェントトークンを取得

単一のエージェントトークンを取得します。

このエンドポイントを使用するには、デベロッパーロール以上が必要です。

エージェントトークンが失効された場合、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>" \
  --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
}

エージェントトークンを作成

エージェントの新しいトークンを作成します。

このエンドポイントを使用するには、少なくともメンテナーのロールが必要です。

1つのエージェントが持つことができるアクティブなトークンは2つだけです。

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

エージェントトークンを失効する

エージェントのトークンを失効します。

このエンドポイントを使用するには、少なくともメンテナーのロールが必要です。

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

サポートされている属性は以下のとおりです:

| 属性 | タイプ | 必須 | 説明 | |————|——————-|———-|—————————————————————————————————————- -| | id | 整数または文字列 | はい | が管理するURLエンコードされたプロジェクトのパスのID。 | | 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"

受信エージェント

  • プラン: Ultimate
  • 提供形態: GitLab Self-Managed

受容エージェントを使用すると、GitLabインスタンスへのネットワーク接続を確立できないが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>" \
  --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設定を取得します。

このエンドポイントを使用するには、デベロッパーロール以上が必要です。

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設定を作成します。

このエンドポイントを使用するには、少なくともメンテナーのロールが必要です。

1つのエージェントが一度に持つことができるURL設定は1つのみです。

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_certclient_keyが指定されていない場合、プライベート公開キーペアが生成され、mTLS認証の代わりにJWT認証が使用されます。

エージェントの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