tjtjtjのメモ

自分のためのメモです

kong service, routes

service object ってなんだろう

前回は kong の service を追加した。ドキュメントによると、

サービスエンティティは、その名前が示すように、独自のアップストリームサービスのそれぞれの抽象化です。サービスの例としては、データ変換マイクロサービス、請求APIなどがあります。

とあるが、よくわからない

api object ってなんだろう

こことか見るとapiオブジェクトを操作している。

qiita.com

ドキュメントによると

Note: The API entity was deprecated in Kong 0.13.0. It is strongly recommended to migrate your APIs to Routes and Services.

とあり api オブジェクトは使わないほうがよさそうだ。

route object ってなんだろう

ドキュメントによると

Routeエンティティは、クライアント要求に一致するルールを定義します。各ルートはサービスに関連付けられており、サービスには複数のルートが関連付けられている場合があります。特定のルートに一致するすべてのリクエストは、関連するサービスにプロキシされます。

  • サービスとルートは関連付けられている
  • サービスには複数のルートがある場合がある

以前はapiだったものを整理(サービスとルートに分割)し、複数ルートをまとめたものをサービスと呼ぶようにしたのかな。 たしかに前回は、サービス追加・ルート追加の2段階だった。

ルートオブジェクトの確認

なるほどなーと思いつつ、これでルートオブジェクトを確認できた。

$ curl -s http://localhost:8001/services/example-service/routes | jq .
{
  "next": null,
  "data": [
    {
      "strip_path": true,
      "tags": null,
      "updated_at": 1568807708,
      "destinations": null,
      "headers": null,
      "protocols": [
        "http",
        "https"
      ],
      "created_at": 1568807708,
      "snis": null,
      "service": {
        "id": "ae3c5ee9-3d44-49bc-8869-1f7f0f58afc1"
      },
      "name": null,
      "preserve_host": false,
      "regex_priority": 0,
      "id": "72a9d29f-6571-43c3-beef-c02e6ccbf699",
      "sources": null,
      "paths": null,
      "https_redirect_status_code": 426,
      "hosts": [
        "example.com"
      ],
      "methods": null
    }
  ]
}