Kubernetes Ingress Controller for Kongについて

米国時間2018年5月8日に「Kubernetes Ingress Controller for Kong」が発表されました。 これは「deploying Kong as a reverse proxy and load balancer.」と説明されており、オープンソースのAPIゲートウェイ「Kong」を Kubernetes クラスター内部で、「リバースプロキシー および ロードバランサー」として機能させるものになります。本記事では、この Kubernetes Ingress Contoller for Kong について簡単にご紹介します。

まず、Ingress Controller とは何か、についてですが、詳細な技術情報は公式ドキュメントなどを参考にしていただくとして、ざっくり言えば、Kubernetesクラスター内部で動作するL7ロードバランサーで、これによって、Kubernetesクラスター外部からのトラフィックをサービスに結び付けます。Ingress Controller の実装としては、GCE (Google Compute Engine) のL7 load balancer「GLBC」などと並んで、Kubernetes がオフィシャルにサポートするものとして有名なのが「NGINX Ingress controller」です。そして、Kubernetes Ingress Contoller for Kong は、NGINX Ingress controllerをベースとしており、開発の中心となっている人物も同じです。もともとKong自体がNGINXをベースとしていますので、自然な流れといえるでしょう。

一方でKongは、APIのバックエンド(upstream)に対するロードバランサーの機能を提供していました。これはAPIサーバーの負荷分散だけでなく、Blue-green Deployments や Canary Releases などのデプロイ手法、サーキットブレーカー/ヘルスチェック機能と組みあわせてマイクロサービスの可用性を高めるなど、さまざまな応用ができるものとなっています。今回のKubernetes Ingress Contoller for Kongも、Kongのロードバランサー機能の応用形のひとつといってもよいでしょう。 

これまで、KongはKubernetes用のディストリビューションを提供していましたが、Kubernetesが提供するサービスと統合するためにマニュアルでの設定が必要でした。Kubernetes Ingress Contoller for Kongによって、新しいサービスが追加されたときに自動構成してトラフィックを結び付けるようになります。また、この構成は動的に行われ、再起動やダウンタイムはありません。またKongのプラグインも利用できるため、たとえばトラフィックの制限をするような必要があれば rate limit プラグインで制限することができます。

Kubernetes Ingress Contoller for Kong はオープンソースソフトウェアとしてGithubで公開されています。