次の方法で共有


イングレス コントローラーをデプロイする

適用対象: Azure Local 22H2 上の AKS、Windows Server 上の AKS

"イングレス コントローラー" は、Kubernetes クラスター内のサービスへの外部アクセスを可能にする Kubernetes リソースです。 イングレスを使用して、オペレーターは外部ネットワーク要求 (通常は HTTP または HTTPS) にサービスを公開できます。 特定のサービスに到達する受信接続を定義する一連の規則を作成して、アクセスを構成します。

イングレス コントローラーは、Kubernetes サービスに構成可能なトラフィック ルーティングを提供するソフトウェアです。 個別の Kubernetes サービスのイングレス ルールとルートを構成するには、Kubernetes イングレス リソースが使われます。 イングレス コントローラーとイングレス ルールを使用することにより、1 つの IP アドレスを使用して、Kubernetes クラスター内の複数のサービスにトラフィックをルーティングできます。

環境内にコントローラーをデプロイした後、イングレス マニフェストを作成してデプロイできます。 現時点では、NGINX イングレス コントローラーを使用して AKS Arc のイングレスを使用します。 NGINX イングレス コントローラーをインストール、構成、および使用する方法については、「 マニフェストを使用したインストールを参照してください。

イングレスは NodePort と LoadBalancer とはユニークな方法で異なります。また、低コストの方法でクラスターへのトラフィック ルーティングが向上します。 NodePort サービスを定義すると、多数のランダム ポートが作成され、LoadBalancer サービスを定義すると、クラウド リソースのコストが必要以上に増加します。 イングレス コントローラーを定義すると、トラフィックのルーティング規則がクラスターの一部として実行される 1 つのリソースに統合されます。 NodePort と LoadBalancer では、サービスの種類でその値を指定することでサービスを公開します。一方、イングレスはサービスの独立したリソースです。 イングレスは、サービスとは別に定義、作成、破棄されます。

イングレスは、ユース ケースに応じてさまざまな方法でデプロイできます。 イングレス リソースは、イングレス コントローラー内の構成を更新して、その機能を決定するために使用されます。

イングレスを使用して外部から到達可能な URL を介してサービスを公開する

イングレスの使用例を次の YAML マニフェストに示します。 ingress.classはメタデータ (この例では ingress-nginx) 内に表示され、この設定により、NGINX イングレス コントローラーは、監視と更新に必要なものを認識できます。

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080

specセクションでは、構成内容に関する情報を提供します。 この例では、ルール (またはルールのセット) が定義され、次の項目が含まれています。

  • 規則が適用されるホスト。
  • トラフィックが HTTP か HTTPS か。
  • 監視対象のパス。
  • トラフィックが送信される内部サービスとポート。

イングレスを使用してトラフィックを負荷分散する

次の例では、アプリケーションのさまざまなバックエンド間の負荷分散を許可する別のパスがマニフェストに追加されています。 この例では、オペレーターはトラフィックを分割し、説明されているパスに基づいて異なるサービス エンドポイントとデプロイに送信できます。 各パスの背後にはデプロイとサービスがあり、より多くのトラフィックを受信するエンドポイントに役立ちます。

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-and-earth
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080
               - path: /hello-earth
pathType: Prefix
backend:
    service: 
         name: hello-earth 
                    port:  
                     number: 8080

イングレスを使用して、同じ IP アドレス上の複数のホスト名に HTTP トラフィックをルーティングする

ホストごとに異なるイングレス リソースを使用できます。これにより、複数のホスト名でトラフィックを制御できます。 別のイングレス リソースを使用するには、LoadBalancer サービスに使用されている同じパブリック IP アドレスで複数のホスト名をポイントします。 次のマニフェスト ファイルでは、hello-world の実稼働バージョンが追加されました。 ホスト名 prod.example.com が使用され、トラフィックは新しいサービス hello-world-prod を指します。 トラフィックはロード バランサーの IP アドレスを介して送信され、ホスト名と指定したパスに基づいてルーティングされます。

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-prod
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-test 
                    port:  
                     number: 8080
       - host: prod.example.com
          http:
              paths:
               - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-prod 
                    port:  
                     number: 8080

次のステップ

詳細については、次のリンクを参照してください。