Docker に Kong Gateway をインストールする
このガイドでは、データベースの有無にかかわらず Docker 上で Kong Gateway を構成する手順について説明します。 このガイドで使用するデータベースは PostgreSQL です。
オープンソースのKong GatewayイメージをDocker Composeで使用したい場合、Kongはオーケストレーションとスケーラビリティを組み込んだDocker Composeテンプレートも提供しています。
一部の古いKong Gatewayイメージは 一般に公開されていません。特定のパッチバージョンが必要で、Kongの パブリックDocker Hubページから見つけられない場合は、Kongサポートに お問い合わせください。
Kong Gateway ソフトウェアは、 Kongソフトウェアライセンス契約で管理されています。
Kong Gateway (OSS) は、 Apache 2.0ライセンスで ライセンスされています。
前提条件
注: コントロールプレーン(CP)またはデータベースを管理せずにKong Gatewayを実行したい場合は、Dockerクイックスタートスクリプトを使用すると5分以内にKonnectを使い始めることができます。
- 適切な Docker アクセスを備えた Docker 対応システム
- (Enterpriseのみ)Kongの
license.json
ファイル
Kong Gatewayのインストールパスを次のとおり選択します。
- データベースで:データベースを使って Kongエンティティ構成を保存します。Kongの構成に、Admin APIまたは宣言型構成 ファイルを使用できます。
- データベース不使用(DB レスモード): Kong 構成をノードのメモリ内に保存します。このモードでは、Admin API は読み取り専用であり、宣言的構成を使用して Kong を管理する必要があります。
どのオプションを使用するか分からない場合は、データベース使用から始めることをお勧めします。
データベースを使用したKong Gatewayのインストール
PostgreSQL データベースを使用して Kong Gateway コンテナを設定し、Kong の構成を保存します。
データベースを準備
-
コンテナがお互いを検出して通信できるように、カスタムDockerネットワークを作成します。
docker network create kong-net
このネットワークには、任意の名前を付けることができます。このガイド全体を通して
kong-net
を例として使用します。 -
PostgreSQLコンテナを起動します。
docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kongpass" \ postgres:13
-
POSTGRES_USER
およびPOSTGRES_DB
:これらの値をkong
に設定します。これは Kong Gatewayが想定するデフォルトの値です。 -
POSTGRES_PASSWORD
: データベースのパスワードを任意の文字列に設定します。
この例では、
kong-database
という名前のPostgresコンテナはkong-net
ネットワーク上の任意のコンテナと通信します。 -
-
Kongデータベースを準備します。
Where:
-
KONG_DATABASE
: Specifies the type of database that Kong is using. -
KONG_PG_HOST
: The name of the Postgres Docker container that is communicating over thekong-net
network, from the previous step. -
KONG_PG_PASSWORD
: The password that you set when bringing up the Postgres container in the previous step. -
KONG_PASSWORD
(Enterprise only): The default password for the admin super user for Kong Gateway. -
{IMAGE-NAME:TAG} kong migrations bootstrap
: In order, this is the Kong Gateway container name and tag, followed by the command to Kong to prepare the Postgres database.
-
Kong Gatewayの起動
重要: 以下の設定は、デフォルトの
admin_listen
設定をオーバーライドして、あらゆるソースからのリクエストをリッスンするため、非本番環境での使用 のみ を目的としています。インターネットに直接公開される環境では、これらの設定を使用 しない でください。
本番環境で「admin_listen」ポートをインターネットに公開する必要がある場合は、 [secure it with authentication](/gateway/3.8.x/production/running-kong/secure-admin-api/).
-
(任意)Kong GatewayのEnterpriseライセンスをお持ちの場合は、 ライセンスキーを変数にエクスポートします。
ライセンスデータが有効なJSONと見なされるためには、まっすぐの引用符が含まれている必要があります(
'
と"
で、’
や“
ではありません)。注: 以下のライセンスは一例です。以下の形式を使用する必要がありますが、内容は各自で提供してください。
export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
-
Kong Gatewayを使用してコンテナを起動するには、次のコマンドを実行します。
Where:
-
--name
and--network
: The name of the container to create, and the Docker network it communicates on. -
KONG_DATABASE
: Specifies the type of database that Kong is using. -
KONG_PG_HOST
: The name of the Postgres Docker container that is communicating over thekong-net
network. -
KONG_PG_USER
andKONG_PG_PASSWORD
: The Postgres username and password. Kong Gateway needs the login information to store configuration data in theKONG_PG_HOST
database. - All
_LOG
parameters: set filepaths for the logs to output to, or use the values in the example to print messages and errors tostdout
andstderr
. -
KONG_ADMIN_LISTEN
: The port that the Kong Admin API listens on for requests. -
KONG_ADMIN_GUI_URL
: The URL for accessing Kong Manager, preceded by a protocol (for example,http://
). -
KONG_LICENSE_DATA
: (Enterprise only) If you have a license file and have saved it as an environment variable, this parameter pulls the license from your environment.
-
-
インストールを確認します。
Admin APIを使用して
/services
エンドポイントにアクセスします。curl -i -X GET --url http://localhost:8001/services
200
ステータスコードが表示されます。 -
KONG_ADMIN_GUI_URL
で指定された URL を使用し、Kong Managerにアクセスして実行されていることを確認します。http://localhost:8002
Kong Gatewayを使い始める
ここまででゲートウェイインスタンスが稼働しました。ここからは、Kongの一連の 入門ガイドが 最初のサービスの設定と強化に役立ちます。
特にインストール直後には、以下を参照してください。
コンテナのクリーンアップ
Kong Gatewayテストが終了し、コンテナが不要になった場合は、次のコマンドを使用してクリーンアップできます。
docker kill kong-gateway
docker kill kong-database
docker container rm kong-gateway
docker container rm kong-database
docker network rm kong-net
Kong Gateway を DB レスモードでインストールする
次のステップでは、DBレスモードで Kong Gatewayを開始する方法について説明します。
Dockerネットワークを作成する
次のコマンドを実行します。
docker network create kong-net
このネットワークには、任意の名前を付けることができます。このガイド全体を通して kong-net
を例として使用します。
このステップは、DBレスモードでKongを実行する際には厳密には必要ありませんが、将来的に他のもの(RedisクラスターでバックアップされたRate Limitingプラグインなど)を追加したい場合に備えておくとよいでしょう。
設定ファイルを準備する
-
.yml
または.json
形式で宣言型構成ファイルを準備します。構文とプロパティは 宣言型構成フォーマットガイドで説明されています。このファイルに必要な 任意のコアエンティティ(サービス、ルート、プラグイン、コンシューマなど)を追加します。
たとえば、サービスとルートの簡単なファイルは以下のようになります。
_format_version: "3.0" _transform: true services: - host: httpbin.org name: example_service port: 80 protocol: http routes: - name: example_route paths: - /mock strip_path: true
このガイドでは、ファイルに
kong.yml
という名前を付けたと想定しています。 -
宣言的設定をローカルに保存し、ファイルパスに注意してください。
DBレスモードでKong Gatewayを起動します
重要: 以下の設定は、デフォルトの
admin_listen
設定をオーバーライドして、あらゆるソースからのリクエストをリッスンするため、非本番環境での使用 のみ を目的としています。インターネットに直接公開される環境では、これらの設定を使用 しない でください。
本番環境で「admin_listen」ポートをインターネットに公開する必要がある場合は、 [secure it with authentication](/gateway/3.8.x/production/running-kong/secure-admin-api/).
-
(任意)Kong GatewayのEnterpriseライセンスをお持ちの場合は、 ライセンスキーを変数にエクスポートします。
ライセンスデータが有効なJSONと見なされるためには、まっすぐの引用符が含まれている必要があります(
'
と"
で、’
や“
ではありません)。注: 以下のライセンスは一例です。以下の形式を使用する必要がありますが、内容は各自で提供してください。
export KONG_LICENSE_DATA='{"license":{"payload":{"admin_seats":"1","customer":"Example Company, Inc","dataplanes":"1","license_creation_date":"2017-07-20","license_expiration_date":"2017-07-20","license_key":"00141000017ODj3AAG_a1V41000004wT0OEAU","product_subscription":"Konnect Enterprise","support_plan":"None"},"signature":"6985968131533a967fcc721244a979948b1066967f1e9cd65dbd8eeabe060fc32d894a2945f5e4a03c1cd2198c74e058ac63d28b045c2f1fcec95877bd790e1b","version":"1"}}'
-
kong.yml
ファイルを作成したディレクトリで、次のコマンドを実行して Kong Gateway を含むコンテナを起動します。Where:
-
--name
and--network
: The name of the container to create, and the Docker network it communicates on. -
-v $(pwd):/path/to/target/
: Mount the current directory on your local filesystem to a directory in the Docker container. This makes thekong.yml
file visible from the Docker container. -
KONG_DATABASE
: Sets the database tooff
to tell Kong not to use any backing database for configuration storage. -
KONG_DECLARATIVE_CONFIG
: The path to a declarative configuration file inside the container. This path should match the target path that you’re mapping with-v
. - All
_LOG
parameters: set filepaths for the logs to output to, or use the values in the example to print messages and errors tostdout
andstderr
. -
KONG_ADMIN_LISTEN
: The port that the Kong Admin API listens on for requests. -
KONG_ADMIN_GUI_URL
: The URL for accessing Kong Manager, preceded by a protocol (for example,http://
). -
KONG_LICENSE_DATA
: (Enterprise only) If you have a license file and have saved it as an environment variable, this parameter pulls the license from your environment.
-
-
Kong Gateway が実行されていることを確認します。
curl -i http://localhost:8001
エンドポイントをテストします。たとえば、サービスの一覧を取得します。
curl -i http://localhost:8001/services
Kong Gatewayを使い始める
ここまででゲートウェイインスタンスが稼働しました。ここからは、Kongの一連の 入門ガイドが 最初のサービスの設定と強化に役立ちます。
このガイドのサンプルkong.yml
を使用した場合、サービスとルートはすでに構成されています。他にも以下をチェックしてみてください。
コンテナのクリーンアップ
Kong Gatewayテストが終了し、コンテナが不要になった場合は、次のコマンドを使用してクリーンアップできます。
docker kill kong-dbless
docker container rm kong-dbless
docker network rm kong-net
Kongを読み取り専用モードで実行
Kong Gateway 3.2.0から、コンテナを読み取り専用モードで実行できます。これを行うには、Kongがデータを書き込む必要がある場所にDockerボリュームをマウントします。デフォルトの構成では、/tmp
と接頭辞パスへの書き込みアクセスが必要です。
トラブルシューティング
ライセンスの問題のトラブルシューティングについては、以下を参照してください。
200 OK
ステータスコードを受診しなかった場合、またはセットアップの完了にサポートが必要な場合は、サポート担当者に問い合わせるか、サポートポータルにアクセスしてください。