4/16にKongがDedicated Cloud Gatewayというのを発表した。
これは従来はProxyとなるDataPlaneを自環境に置く必要があったのだが、Dedicate Cloud GatewayではKongのSaaS側に置くようにすることが出来るようになる。
(About Gateway Managerより引用。Hybrid contol planeが従来の構成)
機能のオフィシャルな説明はこちら。
Data Planeの運用をユーザがする必要がなくなるため、以下のようなメリットがありそう。
- 設計・運用不要でアップグレードも自動化される
- 設計・運用が不要なため、サービスのリリースも早く出来る
- スケールも容易なため、サービスの拡張がしやすくなる
これを試してみる。
Konnectは無料枠で$500ほど割り当てられるので、この枠で頑張る。
必要なもの
今回の検証では以下が必要となる。
deck
CLIは設定を流し込むのに使うが、UIで慣れてる人はなくても設定できるので必須ではない。
ドメインも今回検証で利用したが、なくてもEdgeDNSから参照できるため問題ない。
アカウントは無料で作れるので、基本的にはブラウザとクレジットカードがあれば試すことが出来る。
なお、Dedicated Cloudを使うには無料枠でもクレジットカードの登録が必須となるため、その点は注意が必要。
(検証をテンポ良く行い、検証後すぐに環境を削除すれば無料枠で収まる)
検証
Dedicated Cloud Gatewayのデプロイ
Konnectにログインした後、左サイドバーのGateway Manager
からNew Control Plane
->Kong Gateway
をクリック。
Kong Gatewayの設定画面になるので、Name
にそれっぽい名前を入れる。
証明書は今回はお試しなので用意せず、内部で自動生成されるものを使う。
Start Your Data Plane Nodes
でDataPlaneをどこに配置するかを聞かれるので、Dedicated Cloud Instances
を選択する。
選択すると無料枠の場合はクレジットカードの登録を求められる。
クレジットカードの情報を登録し、Kong Gatewayの設定画面に戻ると先に進めるようになるので、I agree to the terms and conditions
にチェックを入れてNext Step
で先に進む。
次の画面でDataPlaneの設定を行う。
各項目は以下の通り。
-
Select a Version
:バージョンを指定する -
Configure Mode
:スケールのモードを指定する-
Autopilot
:オートスケールを有効にする -
Custom
:3種類のサイズの中からインスタンスの設定を選ぶ
-
-
Configure Cluster
:ControlPlaneの配置先を選ぶ。現状はAWSのみだが将来的にはAzure等も選べる模様。またRegionやNodeなども指定できる。 -
API Access
:APIの公開設定を選ぶ-
PUBLIC
:インターネット全体に公開される。セキュリティ面からテスト用途のみでの利用が推奨される。 -
PRIVATE
:AWS Transit Gatewayを使って公開する
-
ここではお試しなので、Configure Mode
->Custom
->Dev / Staging
を選び、Region
をTokyo
とし、それ以外はデフォルトで設定した。
なお、この際左下にコストが表示される。
現時点での設定では無料枠でも収まりそうだ。
Create Cluster
をクリックしてクラスタを作成する。
しばらく作成中の画面となり、Cloud Cluster Has Been Configured
が表示され続ける。
また、Data Plane Nodes
にはAWS上にインスタンスが作成され、初期化中(Initializing)なのが確認できる。
初期化には20分くらい掛かるので気長に待つ。
しばらくすると以下のような感じでData Planeが作成される。
次にData Planeにアクセスするためのドメインの設定をする。ここはドメインを持っていない人はスキップしてOK。
Konnectの左サイドバーのCustom Domains
からNew Custom Domain
をクリックし、自分が持っているドメインを入力する。
例えばhogehoge.com
を持っていて、Data Planeにはkonnect-dp.hogehoge.com
でアクセスしたい場合は以下のような感じになる。
するとCNAMEとContentが表示されるので、これをドメインレジストラ側で設定する。Route53の場合は以下のような感じになる。
(自分はRoute53を使っていないのでCustom Domainsから引用)
登録後、Custom Domainsの登録したドメインのStatusがVALID
になればOK。
動作確認
ここではhttpbin.orgのipを表示させるURL(https://konnect-dp.hogehoge.com/ip)に行くようService,Routeを作成する。
設定はdeck
で行う。
まず、設定をdeck
で流し込むためにTokenを取得する。
Konnect上で右上の自分のアカウントをクリックし、Personal Access Tokens
->Generate Token
からTokenを取得し環境変数に設定する。
export KONNECT_TOKEN=kpat_ER1xxx
念の為接続確認する。deck gateway ping
で以下のようなメッセージが取得できればOK。
$ deck gateway ping --konnect-token $KONNECT_TOKEN
Successfully Konnected to the demo organization!
deck
で流す設定ファイルを作成する。
cat <<EOF > ./simple.yaml
_format_version: "3.0"
_konnect:
control_plane_name: dedicated
services:
- host: httpbin.org
name: httpbin-ip
path: /ip
port: 80
protocol: http
routes:
- name: ip
paths:
- /ip
methods:
- GET
EOF
設定をKonnect側に反映する。
deck gateway sync simple.yaml --konnect-token $KONNECT_TOKEN
なお、2回目以降でsyncすると、以下のようなエラーが出る。
Error: 3 errors occurred:
while processing event: Delete sni konnect-dp.hogehoge.com failed: HTTP status 400 (message: "Entity with tag \"konnect-managed\" is immutable.")
while processing event: Delete sni xxxxxxx.aws-ap-northeast-1.edge.gateways.konghq.com failed: HTTP status 400 (message: "Entity with tag \"konnect-managed\" is immutable.")
while processing event: Delete sni xxxxxxx.gateways.konghq.com failed: HTTP status 400 (message: "Entity with tag \"konnect-managed\" is immutable.")
Konnect側で自動設定された項目で変更不可の領域があり、そこにsyncをかけたためエラーが出ているっぽいが、他の設定値は反映されるのでおそらく無視してOK。
設定反映後、https://<設定したドメイン>/ipにアクセスしてみる。
$ curl https://konnect-dp.hogehoge.com/ip
{
"origin": "xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx"
}
上記のようにhttps://httpbin.org/ipにアクセスした結果と同じものが取得でき、正常にData Planeとして利用できていることが確認できる。
次にEdgeDNSからもアクセス出来ることを確認する。
Konnectの左サイドバーからGateway Manager
から作成したGatewayを選択しOverview画面に移動する。
その後で右上のConnect
をクリックするとPublic Edge DNS
が表示されるので、このアドレスをコピーする。
ドメインでアクセスした時と同じようにcurl
を叩いてみる。
$ curl https://xxxxxx.gateways.konghq.com/ip
{
"origin": "xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx"
}
同じようにIPが取得できることが確認できる。
最後に今回の検証でかかった費用だが、5ドル程度であった。
Konnectの左サイドバーのPlan and Usage
で確認できる。
(別件の検証で60ドル近く使っていて、441ドル残った状態で検証をスタートしている)
ということで、無事無料枠で収まった。
所感
今まではKong Gatewayを使うのにVMなりK8sなり何かしら環境を立てる作業が必要だったのが、手ぶらで構築できるようになったので管理がかなり楽になりそうだと思われる。
環境を用意するとKongだけでなくOS・インフラ側のメンテも必要になるため、その辺りがなくなるのは運用側からしたら大きなメリットだと思われる。