KubeCon / CloudNativeCon 2022 Detroit Day4
以前から気になっていたのですが、Gateway APIって何者なんでしょう。 名称や設定内容から基本的な機能はわかるのですが、Ingressと同じようなもの?くらいしかわかっていませんでした。
ちょうど「Existing Ingress With the Gateway API」というセッションがあり、幸運にも「Ingressとの違いは?」あたりの説明からしていましたので、こんな内容でも誰かの役に立てばと思いご紹介します。
Gateway APIはIngressの課題を解決すべく、あらたにIngressのAPIを定義しなおし、機能を追加するなどしたものです。
Ingressの課題とは
- 機能が不十分(簡単なものしか用意されてない)
- (上記を補うためでもあるが)様々なカスタム拡張がある
- カスタム拡張がそれぞれ独自のため、ポータビリティが失われている
この3つを聞いて納得しました。たしかにNginx Ingress ControllerとContour では設定の内容が違いますし、 機能も異なります。それぞれの拡張機能を見てみるとすごい特殊な用途ではなく、これまでも普通にapache や nginxのproxyでも行ってきたようなものも含まれており、ある意味あって然るべき機能がこれまでなかったというのがIngressだったようです。
新しく定義し直すということで機能拡張しやすい構成とし、その拡張に関する方針も整理して進めているようです。
同じような設定をIngressとGatewayで行うとGatewayのほうが圧倒的にシンプルになっていました。
では、すぐに移行したほうがいいのか?というとそういうわけではありません。
In-Cluster(Kubernetes Cluster上)で動くものについてはだいたい導入が進んでいるようですが、Cloud Providerタイプのものはベンダー次第です。例えばAzureのApplication Gateway Ingress Controllerはその名のとおりIngressのAPIのままです。Gateway APIに積極的に取り組んでいるGoogleはGKEで実装は進んでいるようです。 また、すぐに無理をしてIngressからGatewayに切り替える理由もありません。ただ、今後Gateway APIには魅力的な機能が追加されていくのでいずれは乗り換えをしていったほうがよいかと思います。
Gateway APIの機能についてはここではご説明いたしません。公式Webサイト等をご覧ください。
ご参考