Member-only story
Azure Kubernetes ServiceへのNGINXの設定
この記事では、Kubernetes(K8S)のIngressオブジェクトについて詳しく書いています。いくつかの例でそれがどのように使用できるかを見ていきます。その後、Azure Kubernetes Service (AKS) を使って NGINX Ingress コントローラをセットアップする方法を順を追って説明します。
KubernetesにおけるIngressとは?
K8SにおけるIngressとは、クラスタの外からクラスタ内のサービスにアクセスできるようにするオブジェクトです。
kubernetes.ioの公式ドキュメントでは、Ingressについて説明されています。
クラスタ内のサービスに対する外部からのアクセスを管理する API オブジェクトで、通常は HTTP です。イングレスを導入すると、ロードバランシング、SSLターミネーション、名前ベースのバーチャルホストが利用できます。
トラフィックのルーティングは、イングレス・リソースに指定されたルールによって定義されます。
Ingressオブジェクトとは、クラスタサービスにHTTPやHTTPSのトラフィックを通すことを指します。他のポートやプロトコルを外部に公開することはありません。このためには、LoadBalancerまたはNodePortのサービスタイプを使用する必要があります。
サービスとは、Podの論理セットに対する外部インターフェイスです。サービスはクラスタにローカルな「仮想IPアドレス」を使用し、外部サービスはIngressがなければこれらのIPアドレスにアクセスする方法がありません。
Ingress, LoadBalancer, NodePort
Ingress、LoadBalancer、およびNodePortはすべて、K8Sクラスタ内のサービスを外部で利用できるように公開するための方法です。
NodePortとLoadBalancerでは、サービスのタイプにその値を指定することでサービスを公開することができます。
NodePortを使うと、K8Sは各ノード上の特定のポートを指定されたサービスに割り当てます。クラスタがそのポートで受け取ったリクエストは、単純にそのサービスに転送されます。
LoadBalancerを使う際には、パブリックIPアドレスを提供するために、K8Sクラスタの外部に外部サービスを用意する必要があります。Azureの場合は、Azure Kubernetes Service(AKS)クラスターの前にあるAzure Application…