Kubernetes Ingressについて

Ingressとは

クラスター内のServiceに対する外部からのアクセス(主にHTTP)を管理するAPIオブジェクト

https://kubernetes.io/ja/docs/concepts/services-networking/ingress/
  • IngressはPod・Serviceへのアクセスするためのルールのコレクションをもつリバースプロキシであると考えて良い
  • IngressはServiceに対して下記の機能を提供する
    • 外部からアクセスできるURL
    • Cluster外のロードバランサ―に依存しない負荷分散
    • SSL/TLS終端
    • 名前ベースの仮想ホスティング
  • Ingressは以下の二つの要素で構成される
    • Ingress resource: DNSルーティングのルールやIngressのコンフィギュレーション値を格納する
    • Ingress Controller: Ingress resourceのルールに基づいてルーティングするIngress APIオブジェクトのインスタンス

Ingress具体例

  • それぞれのIngressで、Ingress resourceの仕様が異なるため注意が必要
  • GLBCとingress-nginx以外は、Kuberenetesのデフォルトでのサポートがないため、別途Ingress Controllerのインストール作業が必要になる
  • 下記の二種類に大別できる
    • In-cluster ingress
      • Cluster内のPodが負荷分散を行う
      • 利点
        • Kubernetes環境でのスケーリングが容易(マルチクラウド環境にも適応可能)
        • Cloud Providerに依存しない、サーバー環境の変更に対応しやすい
        • (通常、オープンソース)
    • Cloud-based ingress
      • Cluster外のCloud Provider(AWS、Google Cloud等)のサービスが負荷分散を行う
      • 利点
        • Cloud Providerの提供するロードバランサ―と連携しやすい
        • 負荷分散の機能自体は比較的安定・高速

In-cluster ingress

Cloud-based ingress

参考