Glooは2019年2月,Kubernetes Knativeサービスのために,Istioに代わるものとしてローンチされた。Solo.ioの開発によるGlooは,Knativeアプリケーション用のKubernetesイングレスコントローラ(Ingress Controller)として実装されたAPIゲートウェイである。
KnativeはGoogleが開発したオープンソースプロジェクトで,ワークロードの構築やデプロイ,管理を目的としてKubernetes上に構築された,ミドルウェアコンポーネントのセットである。Knativeは要求駆動型の計算モデルを使用する。すなわち,Webアプリケーションやファンクション・アズ・ア・サービス(FaaS)バックエンドなどのワークロードが実行されるのは,アプリケーションないしファンクションが呼び出された時に限られている。
Knativeは,Knativeサービスへのリクエストのルーティングをイングレス/ゲートウェイに依存する。サポートされるイングレスコントローラは,当初はIstioのみであった。IstioはEnvoyベースのサービスメッシュで,ロードバランシングやトラフィックルーティング,アクセス管理,ロギングやメトリクスといった機能を提供する。
GlooはEnvoyベースのAPIゲートウェイで,モノリスやマイクロサービス,サーバレス関数など,さまざまなアップストリームサービスの形式に対応することができる。Glooがイングレスコントローラとして実装されたのには,Kubernetes Ingressに対して,よりライトウェイトなソリューションを提供する,という意図がある。
創業者のIdit Levine氏に会い,GlooとKnativeについて詳しく聞いた。
InfoQ: Glooを開発しようと考えたきっかけと,Solo.ioがKnativeとの統合を進めた理由について教えてください。
Idit Levine: Soloの目的は,新たなテクノロジと既存のテクノロジとの橋渡しをすることによって,企業が最新のクラウドネイティブなアーキテクチャやツールを採用し,運用して,そこから価値を得られるようにすることです。Glooは,旧型のモノリシックアプリ,マイクロサービス,サーバレス関数を相互に接続することで,APIを簡略化し,外部クライアントやサービスに統合的なエンドポイントを提供することを目標として,Envoyプロキシ上に構築された,"次世代型"APIゲートウェイなのです。GlooとKnativeを統合することによって,本格的なサービスメッシュのような複雑さを加えることなく,機能ルーティング層とイングレスに必要な機能を提供します。Knativeには先日,"Cluster Ingress"アブストラクションが追加されて,Knativeのルーティング層をプラグイン化することが可能になりました。Glooのコントロールプレーンは拡張性を念頭に開発されているので,Knativeを短期間で簡単に統合することができたのです。
InfoQ: Glooは,Knativeでイングレスコントロールを実現する手段として,Istio以外の初めての選択肢となるものですが,ユーザが自身のKnative実装でGlooとIstioを比較評価する場合,どのようなことを考慮すべきでしょうか?
Levine: GlooはKnativeでIstioに代えて使用されるものですが,一般論としては,完全なサービスメッシュの直接的な代替品ではありません。ユーザは,サービスメッシュを補完するものとしてGlooを捉える必要があります。Knativeのケースでのそれは,より少ない稼働部品でルーティング要件を扱うことができる,という意味になります。Istioに習熟していて,すでにワークロードに使用しているか,あるいはKubernetesとの併用に満足できているのであれば,そのまま使い続けるというのも選択肢です。ただしKnativeでは,その主要なタスクであるクラスタへの単純なトラフィック転送や,適切なワークロードへのルーティングを行う上では,本格的なサービスメッシュは必要ありません。Glooは強力なIngressルーティングのメリットを提供しますが,サービスを意識したメトリクス収集のような機能は提供していません。Knativeで使用するためにGlooとIstioを比較検討するのであれば,ルーティングの複雑さと,可観測性やメッシュ戦略とのトレードオフについて検討する必要があります。
InfoQ: GlooとKnativeの統合がどのように進化することを望んでいますか?近い将来,対処を計画している問題や機能はありますか?
Levine: Knativeコミュニティとは,密接な関係を持ち続けています。彼らのニーズや,Knativeの使い方が今後どのように進化していくのかを理解した上で,ロードマップや新たな統合の分野を進めていきたいと思っています。GlooはEnvoy上に構築されているので,極めて柔軟なコントロールプレーンを備えています。今後,知見を積んでいけば,Knative+Glooのユースケースの変化にも迅速かつ簡単に対応できるようになるでしょう。GlooプロジェクトやKnativeの問題提起への参加や,Twitterあるいは私たちのWebサイトを通じたコンタクトをお待ちしています。
Glooを始めるにはインストール方法のページに,Kubernetes Knativeについてより詳しく学ぶにはそのGitHubのドキュメントのページに,それぞれアクセスするとよいだろう。