Kong Gateway Admin API
Kong Gatewayには、管理用の 内部 RESTful Admin APIが付属しています。 Admin APIへのリクエストはクラスタ内のどのノードにも送信でき、Kongは すべてのノード間で構成の一貫性を維持します。
-
8001
は、Admin APIがリッスンするデフォルトのポートです。 -
8444
は、Admin API への HTTPS トラフィックのデフォルトポートです。
このAPIは内部使用向けに設計されており、Kongを完全に制御可能にします。そのためKong環境を設定する際には、このAPIが不当に公開されることがないよう、注意してください。セキュリティ対策に関する詳細については、「Admin APIの保護」を参照してください。
ドキュメント
Kong Admin APIはOpenAPI形式で文書化されています。
仕様 | Insomnia のリンク |
---|---|
Enterprise API | |
オープンソース API {:target=”_blank”} |
個々のエンティティのドキュメントについては、次のリンクを参照してください。
DB レスモード
DBレスモードでは、Kong Gatewayを宣言的に構成します。 各KongノードのAdmin APIは独立して機能し、特定のKongノードのメモリの状態を反映します。 これは、Kongノード間のデータベース連携がないためです。 したがって、Admin APIのほとんどは読み取り専用です。
Kong GatewayをDBレスモードで実行する場合、Admin APIは宣言型構成の処理に関連するタスクのみを実行できます。
サポートされているコンテンツタイプ
Admin API は、すべてのエンドポイントで 3 つのコンテンツ タイプを受け入れます。
application/json
application/json
コンテンツタイプは、複雑な本文(複雑なプラグイン構成など)に役立ちます。送信するデータのJSON表現を送信します。以下はその例です。
{
"config": {
"limit": 10,
"period": "seconds"
}
}
test-service
という名前のサービスにルートを追加する例を次に示します。
curl -i -X POST http://localhost:8001/services/test-service/routes \
-H "Content-Type: application/json" \
-d '{"name": "test-route", "paths": [ "/path/one", "/path/two" ]}'
application/x-www-form-urlencoded
コンテンツタイプ「application/x-www-form-urlencoded
」は、基本的なリクエストボディに便利なもので、
ほとんどの状況で使用できます。
ネストされた値を送信する場合、Kongはネストされたオブジェクトがドット付きのキーを使って参照されることを想定しています。以下に例を示します。
config.limit=10&config.period=seconds
配列を指定するときは、値を順番に送るか、角括弧(括弧の中はオプションですが、 指定する場合は1インデックスで、連続している必要があります) を使用してください。
以下は、 test-service
という名前のサービスに追加されたルートの例です。
curl -i -X POST http://localhost:8001/services/test-service/routes \
-d "name=test-route" \
-d "paths[1]=/path/one" \
-d "paths[2]=/path/two"
次の2つの例は上記のものと同じですが、明示的ではありません:
curl -i -X POST http://localhost:8001/services/test-service/routes \
-d "name=test-route" \
-d "paths[]=/path/one" \
-d "paths[]=/path/two"
curl -i -X POST http://localhost:8001/services/test-service/routes \
-d "name=test-route" \
-d "paths=/path/one" \
-d "paths=/path/two"
multipart/form-data
multipart/form-data
コンテンツタイプはURLエンコードに似ています。このコンテンツタイプでは、ドットキーを使用してネストされたオブジェクトを参照します。以下は、LuaファイルをプリファンクションKongプラグインに送信する例です。
curl -i -X POST http://localhost:8001/services/plugin-testing/plugins \
-F "name=pre-function" \
-F "config.access=@custom-auth.lua"
このコンテンツタイプの配列を指定する場合は、配列インデックスを指定する必要があります。たとえば、以下はtest-service
という名前のサービスに追加されたルートの例です。
curl -i -X POST http://localhost:8001/services/test-service/routes \
-F "name=test-route" \
-F "paths[1]=/path/one" \
-F "paths[2]=/path/two"
HTTPステータス応答コード
HTTPレスポンスでは、以下のステータスコードが返されます。
HTTPコード | HTTPの説明 | 注記 | リクエスト方法 |
---|---|---|---|
200 | OK | リクエストは成功しました。200 リクエストの結果は、リクエストの種類によって異なります。- GET :リソースが取得され、メッセージ本文で送信されました。- PUT またはPOST :アクションの結果を説明するリソースがメッセージ本文で送信されます。- PATCH :? |
GET , POST , PATCH , PUT
|
201 | 作成 | リクエストが成功し、新しいリソースが作成されました。 | POST |
204 | No Content | 送信する要求にコンテンツがありません。 | DELETE |
400 | Bad Request | クライアントのエラーのため、サーバーはリクエストを送信できないか、送信しません。 |
POST 、PATCH 、PUT
|
401 | Unauthorized | クライアントは認証されていません。 |
GET , POST , DELETE , PATCH ,PUT
|
404 | 見つかりません | リクエストしたリソースがサーバーで見つかりません。 API の場合、エンドポイントは有効だがリソースが存在しないことを意味する場合があります。 |
GET 、PATCH 、PUT
|
405 | 許可されていないメソッド | サーバーはリクエストメソッドを認識していますが、リソースではサポートされていません。 | PUT |
409 | Conflict | リクエストがサーバーの現在の状態と競合しています。 | POST |
ワークスペースでのAPIの使用
ワークスペースを指定しないリクエストは、default
ワークスペースを対象とします。
別のワークスペースをターゲットにするには、エンドポイントの前にワークスペース名または ID を付けます。
http://localhost:8001/<WORKSPACE_NAME|ID>/<endpoint id="sl-md0000000">
たとえば、ワークスペースを指定しない場合は、このリクエストは、default
ワークスペースからサービスのリストを取得します。
curl -i -X GET http://localhost:8001/services
このリクエストはワークスペースSRE
からすべてのサービスを取得します。
curl -i -X GET http://localhost:8001/SRE/services