DC/OS クラスター上における Kong の展開


以下の手順に従って、Kong を Mesosphere DC/OS クラスター上でプロビジョニングできます:

以下の手順では、DC/OS クラスターをプロビジョニングするために AWS を使用し、DC/OSMarathonVIP および Marathon-LB の基礎知識があることを前提とします。


インストール手順:


  1. 初期設定

    以下のレポジトリをダウンロードまたはコピーします:

    $ git clone git@github.com:Mashape/kong-dist-dcos.git
    $ cd kong-dist-dcos

    既に DC/OS クラスターをプロビジョニングしてある場合、手順 3 へスキップしてください。

  2. DC/OS クラスターの展開

    DC/OS AWS ドキュメント に従って、Kong がプロビジョニングされる DC/OS クラスターを展開します。

    クラスターの準備ができたら、DC/OS CLI または DC/OS GUI を使用して、Kong を展開することができます。

  3. Marathon-LB の展開

    marathon-lb パッケージの使用によって Marathon-LB を展開し、クラスターと VIP への外部トラフィックおよび内部トラフィックの負荷分散を行います:

    $ dcos package install marathon-lb
  4. Kong でサポートされるデータベースの展開

    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
  5. 展開の検証

    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
  6. Kong の使用

    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 を返します。

  7. Kong のアンインストール

    以下のコマンドを実行して、Kong をアンインストールします:

    $ dcos package uninstall kong
  8. このデモでは、ポート 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
価格/お問い合わせ

製品の詳細、価格、ライセンス体系、デモの依頼など、お気軽にお問い合わせください。