Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes Gateway APIを試してみた

Kubernetes Gateway APIを試してみた

Kubernetes Novice Tokyo #11 2021/6/22 発表資料
https://k8s-novice-jp.connpass.com/event/213756/

24f9a43171e318741acea0227c75feb1?s=128

Kiyoshi Muranaka

June 22, 2021
Tweet

Transcript

  1. Kubernetes Gateway API を試してみた Kubernetes Novice Tokyo #11 June 22nd,

    2021 @kiyoshim55
  2. • Kiyoshi Muranaka (@kiyoshim55) • 株式会社 NTTデータ • Software Engineer

    • クラウドに関連する案件支援 ◦ Terraform を用いたインフラのコード化 ◦ Kubernetes 環境構築・運用 など Who am I?
  3. • Gateway API とは • Gateway API リソース概要 • デプロイ・動作確認

    • まとめ Agenda https://qiita.com/kiyoshim55/items/0ac324181a8bfbb47cc8 約一ヶ月前 (2021/5/21) に投稿した記事をベースとした内容です ご興味があればこちらもご参照ください
  4. • 外部からのアクセスやトラフィックを管理するための API リソースの総称 ◦ GatewayClass、Gateway、HTTPRoute、TCPRoute など ◦ 各リソースの概要については後ほど紹介 •

    SIG-Network コミュニティのプロジェクトとして開発が進められている https://gateway-api.sigs.k8s.io/ Gateway API とは
  5. • サービスの外部公開 • SSL/TLS 終端 • パスベースのトラフィックルーティング • ヘッダーに基づくトラフィックルーティング •

    割合ベースのトラフィック分割 提供機能 • トラフィックミラーリング • リクエスト・レスポンスヘッダー情報の更新 • 複数の Namespace を対象としたルート選択 • 複数の Kubernetes クラスタを対象とした ルート選択 など ※ Gateway API の実装は、 Ingress と同じように Controller (Gateway Controller) 側で実装する必要があり、   実際にサポートされる機能は使用する Controller による   https://gateway-api.sigs.k8s.io/references/implementations/
  6. Ingress の高機能版? Ingress と API Gateway の関係性は?

  7. • Ingress 自体の機能では、Gateway API の機能で対応できるような 高度なユースケースに対応していなかった ◦ Controller 側で多数のカスタムアノテーションや CRD

    実装での機能追加が行われる → 設定の複雑化・ポータビリティの低下 → カスタムアノテーションの場合、シンプルな表現しかできず機能が制限される   • KubeCon NA 2019 San Diego で Gateway API (当時の名称は Service APIs) に関する 議論が行われ、その後開発が進み、 2020年11月 に v1alpha1 リリース 開発背景 ※ Ingress の置き換えを目的に開発しているわけではなく、ユースケースに応じた使い分けを想定しており、   現時点においては Ingress の非推奨化や削除の予定はないとのこと
  8. • Gateway API (v1alpha1 時点) の主なリソース ◦ GatewayClass ◦ Gateway

    ◦ xRoute ◦ BackendPolicy Gateway API リソース概要 https://gateway-api.sigs.k8s.io/ 概要をご紹介
  9. • Cluster Scoped のリソース • 提供する Gateway (ロードバランサ) をテンプレート化したもの •

    GKE の場合はクラウドベンダから提供され、 デプロイ条件を満たすことでクラスタに プリインストールされる ◦ 右記は GKE 環境でのリソース確認例 (2021年6月時点ではプレビュー機能) GatewayClass
  10. • Namespace Scoped のリソース ◦ Cross-Namespace をサポート 異なる Namespace の

    xRoute・サービス に紐付くような Gateway を提供できる • 指定した GatewayClass をもとに 作成されるロードバランサリソース • ロードバランサがトラフィック を受け付ける方法・ポート番号や、 後述の xRoute と紐付けるための条件を指定 Gateway
  11. • Namespace Scoped のリソース • Service にリクエストをルーティング するためのプロトコル固有のルール ◦ 例:

    HTTPRoute、TCPRoute • トラフィックルーティングの 条件を指定 ◦ パスやヘッダ情報 ◦ トラフィック分割の割合など xRoute
  12. デプロイ・動作確認 • 開発されている Controller のうち、GKE Gateway Controller (プレビュー機能) を使用 ◦

    GKE デプロイ時に条件を満たすことで Controller が自動インストールされる https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-gateways#gateway_controller_requirements ◦ GKE 1.20 以降が必要、東京/大阪リージョンではまだサポートされていない   • いくつかの基本機能を動かしてみた ◦ デフォルトバックエンドへのトラフィックルーティング ◦ ヘッダーに基づくトラフィックルーティング ◦ パスベースのトラフィックルーティング
  13. 確認結果 • デフォルトバックエンド (service: store-v1) • ヘッダーベース (service: store-v2) •

    パスベース (service: store-german) (default) -H “env: canary” /de
  14. 確認結果 • 外部ロードバランサ (gatewayclass: gke-l7-gxlb) による サービスの外部公開や、SSL/TLS 終端も提供 https://cloud.google.com/kubernetes-engine/ docs/how-to/deploying-gateways#external-gateway

    • 右の例のようにルールに weight を指定することで、 割合ベースでのトラフィック分割も実行できた ◦ ※ こちらは公式ドキュメント未記載 (これから追加されていくかもしれません)
  15. • Gateway API の概要を整理しながら、GKE 環境でいくつかの基本機能を試してみた • トラフィックルーティングだけでなく、トラフィックミラーリングやリクエスト・ レスポンスヘッダー情報の更新など、提供機能が充実している ◦ Rate

    Limiting や認証機能などの、新機能向け issue もオープンされている (直近あまり進んでいる様子はなさそう..) https://github.com/kubernetes-sigs/gateway-api/issues/326 https://github.com/kubernetes-sigs/gateway-api/issues/114   • 現段階では alpha・プレビュー版のものが多いが、様々なプロジェクトで Controller の 実装が進められており今後に期待 https://gateway-api.sigs.k8s.io/references/implementations/ まとめ
  16. • Kubernetes Gateway API https://gateway-api.sigs.k8s.io • Google Kubernetes Engine(GKE)− Gateways

    のデプロイ https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-gateways • Gateway API: A New Set of Kubernetes APIs for Advanced Traffic Routing https://kccnceu2021.sched.com/event/iE39 • Kubernetes Blog: Evolving Kubernetes networking with the Gateway API https://kubernetes.io/blog/2021/04/22/evolving-kubernetes-networking-with-the-gateway-api   本資料に記載されている会社名、商品名、またはサービス名は、各社の登録商標または商標です 参考文献
  17. Thank you!