API ゲートウェイの Kong Gateway OSS から Konnect への移行

Konnect は、5 月に発売された Kong が管理するハイブリッド クラウド コントロール プレーンです。Konnect は、Kong Gateway の設定に Admin API や HTTP リクエストを使用するのではなく、UI を使ってサービス コンフィギュレーションを簡単に作成および設定する方法を提供します。さらに、利用状況の分析、開発者ポータル、サービス コンフィギュレーションのための役割ベースのアクセス制御を提供します。

Kong Gateway OSS を既にインストールしている場合、インスタンスをKonnect に移行する方法について疑問に思われるかもしれません。このチュートリアルでは、Kong Gateway OSS のインストールを Konnect 対応のインストールに変換するプロセスをステップ バイ ステップでご説明します。所要時間は 20 分程度です。

Konnect は、非 OSS 版の Kong データ プレーンに依存します。非 OSS 版は無料で入手できるので、この記事では OSS のインストールをそのバージョンに置き換えます。

https://mockbin.org のプロキシとして、既に実行済みで移行の準備ができている Kong Gateway インスタンスをスタート ガイド (英語) に従って API キー認証 (英語) を設定することで、構築します。

1. decK のインストール

移行プロセスの最初のステップは、Kong Gateway の Declarative Configuration (宣言型構成) CLI である decK のインストールになります。decK を使用すると、実行中の Kong Gateway インスタンスからコンフィギュレーションをエクスポートして、Konnect にインポートできるようになります。

decK は、Windows、macOS、Linuxで利用可能で、Homebrew、deb/rpm、Docker イメージのインストール手順を提供します。

decK は Kong の管理ポートと通信して動作しますが、このポートはインターネット上では利用できないので、実行中の Kong インスタンスと一緒に decK をインストールする必要があります。私は Ubuntu マシンで Kong Gateway を実行しているので、deb パッケージをインストールすることにしました。

$ wget https://github.com/Kong/deck/releases/download/v1.7.0/deck_v1.7.0_amd64.deb
$ sudo dpkg -i deck_v1.7.0_amd64.deb

2. Kong Gateway の設定をエクスポートする

decK をインストールしたら、deck dump を実行して既存の設定をエクスポートすることができます。複雑な設定の場合は数分かかる場合があります。

$ deck dump –output-file kong.yaml

deck dump は、Kong インスタンスのすべてのコンフィギュレーションを含む kong.yml ファイルを現在のフォルダーに作成します。Kong Gateway のドキュメントにあるスタート ガイドに従って作成したコンフィギュレーションは次のとおりです。

_format_version: “1.1”
services:
– connect_timeout: 60000
  host: mockbin.org
  name: example-service
  port: 80
  protocol: http
  read_timeout: 60000
  retries: 5
  write_timeout: 60000
  routes:
  – hosts:
 – example.com
 id: 47fff0e8-b263-4c63-8c8a-3197a3c0823c
 path_handling: v0
 preserve_host: false
 protocols:
 – http
 – https
 regex_priority: 0
 strip_path: true
 https_redirect_status_code: 426
 request_buffering: true
 response_buffering: true
  plugins:
  – name: key-auth
 config:
   anonymous: null
   hide_credentials: false
   key_in_body: false
   key_in_header: true
   key_in_query: true
   key_names:
   – apikey
   run_on_preflight: true
 enabled: true
 protocols:
 – grpc
 – grpcs
 – http
 – https
consumers:
– username: Jason
  keyauth_credentials:
  – key: ENTER_KEY_HERE

3. Konnect のお申込み

設定が完了したら、Konnect 評価版を入手し、この設定をインポートします。すでに Konnect のアカウントをお持ちの方は、この手順は省略してください。

Konnect の評価版では、Konnect Plus の 30 日間無料トライアルが提供されます。30 日を過ぎると、アカウントは月に 200 万回の API リクエストを含む Konnect Free になります。

4. Kong Gateway コンフィギュレーションの変換

Konnect アカウントを取得したら、Kong Gateway のコンフィギュレーションを Konnect のコンフィギュレーション ファイルに変換しましょう。これには decK の convert コマンドを使用します。

$ deck convert –from kong-gateway –to konnect –input-file kong.yaml –output-file konnect.yaml

このコマンドが完了すると、カレント ディレクトリに konnect.yaml ファイルが作成されます。この yaml ファイルには、ルート、プラグイン、コンシューマなどを含む、Konnect のサービス コンフィギュレーションが含まれています。

5. 設定のインポート

konnect.yaml ファイルを使用して、現在使用しているサービス コンフィギュレーションで Konnect アカウントを更新することができます。これは、構成を同期するための API リクエストを行う前に、現在の Konnect アカウントにあるものと設定ファイルにあるものとの間に diff を作成することで動作します。つまり、Kong Gateway のエクスポートに存在しない既存のサービス コンフィギュレーションを削除することになります。

サービスの同期を行う準備ができたら、以下のコマンドを実行し、プレースホルダーを Konnect の認証情報に置き換えます。

$ deck konnect sync –konnect-email YOUR_EMAIL –konnect-password YOUR_PASSWORD –state konnect.yaml

このコマンドの実行が終了すると、Konnect にサービス コンフィギュレーションが表示されます。これでサンプルのサービスを確認できます。Host ヘッダーが example.com に一致すると、定義されたルートが表示されます。

6. サーバー上の Kong Gateway の更新

コンフィギュレーションを Konnect にインポートしたら、次は既存の API ゲートウェイ (英語) をランタイムとして登録します。Konnect では、OSS で配布されている Kong Gateway にはバンドルされていない有料および無料の追加機能をシームレスに使用することができます。そのため、既存のインストールを Konnect 対応のものに置き換える必要があります。ただし、Konnect 互換のゲートウェイは、これまでの使い慣れたゲートウェイと API の互換性があり、追加のプラグインや無料の管理 UI がバンドルされているだけですので、ご安心ください。

Kong Gateway OSS は、最後に kong restart を実行するまでリクエストを処理し続けるため、ここでの手順に従うことで発生するダウンタイムは最小限に抑えられます。
Ubuntu に Kong EE をインストールした方法は次のとおりです (手順は若干異なる場合があります)。

$ wget https://download.konghq.com/gateway-2.x-ubuntu-xenial/pool/all/k/kong-enterprise-edition/kong-enterprise-edition_2.3.3.2_all.deb
$ sudo apt-get remove kong
$ sudo dpkg -i kong-enterprise-edition_2.3.3.2_all.de

API ゲートウェイが Konnect に対応したので、ランタイムとして登録し、ローカル データベースではなく Konnect から設定を読み込むようにします。Konnect にログインしてランタイムの設定ページに行き、右上の Configure Runtime をクリックします。これにより、ランタイムの登録方法が記載されたページが表示されます。私は Docker なしで Ubuntu を使用しているので、Linux の手順を選択しました。

証明書の生成後、/etc/kong に 3 つのファイルを作成し、それらのファイルに証明書 (サーティフィケート) を貼り付けました。

Cluster certificate: /etc/kong/tls.crt
Cluster key: /etc/kong/tls.key
Root CA certificate: /etc/kong/ca.crt

次に、このページで紹介されている設定パラメーターを Kong の設定ファイル (/etc/kong/kong.conf) にコピーし、既存のファイルを置き換え、最後の 3 つの設定項目のパスを必要に応じて設定しました。

新しい設定を保存し、sudo kong restart を実行した後、ページの下部にある [Done] をクリックすると、Konnect Runtime Manager に新しいランタイムが表示されました。

実行と設定

Konnect に移行すると、ポート :8000 で API ゲートウェイにリクエストを行い、既存のルートやプラグインが使用されるのを確認できるようになります。また、Konnect に変更を加えると、既存のすべてのランタイムと即座に同期されます。

これをテストするために、Konnect のコンフィギュレーションのセクションにアクセスし、コンシューマーの鍵認証を変更しました。その後、古いキーを使用してリクエストを行ったところ、エラー メッセージが表示されました。新しいキーを使用すると、リクエストは成功しました。

Konnect 鍵認証プラグインの設定

Konnect で最初に何を試すべきかわからない場合は、サービスを選択して、そのサービスを経由するトラフィックを確認してください。また、Konnect で使用可能なプラグインを検討してみてください。

評価版をご使用中、またはセットアップの際にご不明な点がありましたら、お問い合わせください。


Kong Enterprise の概要、価格、およびライセンス体系などの詳細は、こちらを参照してください


記事参照: 2021 年 6 月 2 日
Michael Heap
© Kong Inc. 2021
Migrating from Kong Gateway OSS to Konnect

タイトルとURLをコピーしました