以下の手順に従って、Kong を Mesosphere DC/OS クラスター上でプロビジョニングできます:
以下の手順では、DC/OS クラスターをプロビジョニングするために AWS を使用し、DC/OS、Marathon、VIP および Marathon-LB の基礎知識があることを前提とします。
以下のレポジトリをダウンロードまたはコピーします:
$ git clone git@github.com:Mashape/kong-dist-dcos.git
$ cd kong-dist-dcos
既に DC/OS クラスターをプロビジョニングしてある場合、手順 3 へスキップしてください。
DC/OS AWS ドキュメント に従って、Kong がプロビジョニングされる DC/OS クラスターを展開します。
クラスターの準備ができたら、DC/OS CLI または DC/OS GUI を使用して、Kong を展開することができます。
marathon-lb
パッケージの使用によって Marathon-LB を展開し、クラスターと VIP への外部トラフィックおよび内部トラフィックの負荷分散を行います:
$ dcos package install marathon-lb
Kong を展開する前に、Cassandra または Postgres インスタンスをプロビジョニングする必要があります。
Cassandra を使用する場合、cassandra
パッケージを使用して、DC/OS クラスター内に Cassandra の 3 つのノードを展開します:
$ dcos package install cassandra
PostgreSQLを使用する場合、以下のオプションがある postgresql
パッケージを使用します:
{
"service": {
"name": "postgresql"
},
"postgresql": {
"cpus": 0.3,
"mem": 512
},
"database": {
"username": "kong",
"password": "kong",
"dbname": "kong"
},
"storage": {
"host_volume": "/tmp",
"pgdata": "pgdata",
"persistence": {
"enable": true,
"volume_size": 512,
"external": {
"enable": false,
"volume_name": "postgresql",
"provider": "dvdi",
"driver": "rexray"
}
}
},
"networking": {
"port": 5432,
"host_mode": false,
"external_access": {
"enable": false,
"external_access_port": 15432
}
}
}
これは、PostgreSQL を以下のように設定します:
設定 | 詳細 |
configurations.log_level |
Kong の log_level の構成を設定する |
configurations.custom-envs |
スペースで区切られた Kong の構成のリスト |
configurations.database.use-cassandra |
true の場合、Cassandra が Kong のデータベースに使用される |
configurations.database.migration |
true の場合、Kong 起動時に移行を実行する |
configurations.postgres.host |
PostgreSQL のホスト名 |
configurations.postgres.port |
PostgreSQL のポート |
configurations.postgres.database |
PostgreSQL のデータベース名 |
configurations.postgres.user |
PostgreSQL のユーザー名 |
configurations.postgres.password |
PostgreSQL のパスワード |
configurations.cassandra.contact-points |
Cassandra のコンタクト ポイントのカンマ区切りのリスト |
configurations.cassandra.port |
Cassandra がクエリを待機するポート |
configurations.cassandra.keyspace |
Cassandra で使用するキースペースが存在しない場合作成される |
networking.proxy.external-access |
true の場合、Kong のプロキシ ポートへの外部アクセスを許可する |
networking.proxy.virtual-host |
Kong のプロキシ ポートを Maraton-lb を統合する仮想ホストのアドレス |
networking.proxy.https-redirect |
true の場合、Marathon-lb が HTTP トラフィックを HTTPS へリダイレクトする"仮想ホスト"を設定する必要あり |
networking.proxy.service-port |
クラスター外部から Kong のプロキシ ポートへアクセスする際に使用されるポート番号 |
networking.proxy.vip-port |
プロキシ API への内部通信に使用されるポート番号 (デフォルト:8000) |
networking.proxy.vip-port-ssl |
プロキシ API へのセキュアな内部通信に使用されるポート番号 (8443) |
networking.admin.external-access |
true の場合、Kong 管理ポートへの外部アクセスを許可する |
networking.admin.virtual-host |
Kong の管理ポートを Marathon-lb と統合する際の仮想ホストアドレス |
networking.admin.https-redirect |
true の場合、Marathon-lb が HTTP トラフィックを HTTPS へリダイレクトする"仮想ホスト"を設定する必要あり |
networking.admin.service-port |
クラスター外部から Kong の管理ポートへアクセスする際に使用されるポート番号 |
networking.admin.vip-port |
管理 API への内部通信に使用されるポート番号 (デフォルト:8001) |
networking.admin.vip-port-ssl |
管理 API へのセキュアな内部通信に使用されるポート番号 (8444) |
注意: データストアの選択に基づいて、上記の設定を調整します。
以下のコマンドを実行して、Kong パッケージをインストールします。
$ dcos package install postgresql --options=postgres.json
dcos task
コマンドを使用して、Kong インスタンスが実行されていることを確認します:
$ dcos task
NAME HOST USER STATE ID
kong 10.0.1.8 root R kong.af46c916-3b55-11e7-844e-52921ef4378d
marathon-lb 10.0.4.42 root R marathon-lb.d65c3cc3-3b54-11e7-844e-52921ef4378d
postgres 10.0.1.8 root R postgres.5b0a2635-3b55-11e7-844e-52921ef4378d
Kong がインストールされたので、クラスター (master など) 内のインスタンスの 1 つに SSH し、エンドポイントを curl してみます:
アドミン
$ curl -i -X GET http://marathon-lb.marathon.mesos:10202
HTTP/1.1 200 OK
..
{..}
プロキシ
$ curl -i -X GET http://marathon-lb.marathon.mesos:10201
HTTP/1.1 404 Not Found
..
{"message":"no API found with those values"}
VHOST
この例において、Kong のプロキシ ポートを公開するために使用されたパブリック DNS 名は mesos-tes-PublicSl-1TJB5U5K35XXT-591175086.us-east-1.elb.amazonaws.com
です。
注意: Kong は、API 登録がされていないためプロキシ ポート上で 404 を返します。
以下のコマンドを実行して、Kong をアンインストールします:
$ dcos package uninstall kong
このデモでは、ポート 8080
上で Hello World
を返すアプリを作成しました。kong-dist-dcos リポジトリの my_app.json
ファイルを使用して、クラスター内で Kong から受け取ったリクエストを処理するバックエンド サーバーとしての役割を果たすアプリを展開します:
$ dcos marathon app add my_app.json
Kong で API を作成します:
$ curl -i -X POST marathon-lb.marathon.mesos:10002/apis \
--data "name=myapp" \
--data "hosts=myapp.com" \
--data "upstream_url=http://myapp.marathon.l4lb.thisdcos.directory:8080"
HTTP/1.1 201 Created
...
API へリクエストを送信します:
$ curl -i -X GET marathon-lb.marathon.mesos:10001 \
--header "Host:myapp.com"
HTTP/1.1 200 OK
...
Hello world
製品の詳細、価格、ライセンス体系、デモの依頼など、お気軽にお問い合わせください。