1.8. ルートと Ingress


ルートおよび Ingress は、どちらもアプリケーションを外部トラフィックに公開するために使用されます。ただし、その目的は若干異なり、機能も異なります。

1.8.1. ルート

ルートは、外部クライアントが名前でサービスにアクセスできるように、ホスト名でサービスを公開する OpenShift Container Platform リソースに固有のものです。

ルートは、ホスト名をサービスにマッピングします。ルート名のマッピングにより、外部クライアントはホスト名を使用してサービスにアクセスできます。ルートは、サービスに向けられたトラフィックの負荷分散を行います。ルートで使用されるホスト名は、ルーターの IP アドレスに解決されます。その後、ルートはトラフィックを適切なサービスに転送します。ルートは、SSL/TLS を使用してクライアントとサービス間のトラフィックを暗号化することで保護することもできます。

1.8.2. Ingress

Ingress は、負荷分散、SSL/TLS Termination、名前ベースの仮想ホスティングなどの高度なルーティング機能を提供するリソースです。Ingress に関する重要なポイントは次のとおりです。

  • HTTP/HTTPS ルーティング: Ingress を使用して、クラスター内のサービスに HTTP および HTTPS トラフィックをルーティングするためのルールを定義できます。
  • 負荷分散: NGINX や HAProxy などの Ingress コントローラーは、ユーザーが定義したルールに基づいてトラフィックルーティングと負荷分散を管理します。
  • SSL/TLS Termination: SSL/TLS Termination は、着信 SSL/TLS トラフィックをバックエンドサービスに渡す前に復号するプロセスです。
  • 複数のドメインとパス: Ingress は、複数のドメインとパスのトラフィックルーティングをサポートします。

1.8.3. ルートと Ingress の比較

ルートは、Ingress に比べて柔軟性が高く、高度な機能を提供します。そのため、ルートは複雑なルーティングシナリオに適しています。ルートは、特に基本的な外部アクセスのニーズの場合、簡単に設定および使用できます。Ingress は、よりシンプルで直接的な外部アクセスによく使用されます。ルートは、高度なルーティングと SSL/TLS Termination を必要とするより複雑なシナリオに使用されます。

1.8.4. 例: ウェブアプリケーションを公開するためのルートと Ingress の設定

OpenShift Container Platform クラスター上で Web アプリケーションが実行されています。外部ユーザーがアプリケーションにアクセスできるようにしたいと考えています。アプリケーションは特定のドメイン名を通じてアクセスできる必要があり、トラフィックは TLS を使用して安全に暗号化される必要があります。次の例は、ルートと Ingress の両方を設定して、Web アプリケーションを外部トラフィックに安全に公開する方法を示しています。

1.8.4.1. ルートの作成

  1. 新しいプロジェクトを作成する。

    $ oc new-project webapp-project
  2. Web アプリケーションをデプロイします。

    $ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git --name=webapp
  3. ルートを使用してサービスを公開します。

    $ oc expose svc/webapp --hostname=webapp.example.com
  4. TLS を使用してルートを保護します。

    1. 証明書と鍵を使用して TLS シークレットを作成します。

      $ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key
    2. TLS シークレットを使用するようにルートを更新します。

      $ oc patch route/webapp -p '{"spec":{"tls":{"termination":"edge","certificate":"path/to/tls.crt","key":"path/to/tls.key"}}}'

1.8.4.2. Ingress の設定

  1. Ingress リソースを作成します。

    Ingress コントローラーがクラスターにインストールされ、実行されていることを確認します。

  2. Web アプリケーション用のサービスを作成します。まだ作成されていない場合は、アプリケーションをサービスとして公開します。

    apiVersion: v1
    kind: Service
    metadata:
      name: webapp-service
      namespace: webapp-project
    spec:
      selector:
        app: webapp
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
  3. Ingress リソースを作成します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: webapp-ingress
      namespace: webapp-project
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
        - host: webapp.example.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: webapp-service
                    port:
                      number: 80
  4. TLS を使用して Ingress を保護します。

    1. 証明書と鍵を使用して TLS シークレットを作成します。

      $ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key -n webapp-project
    2. TLS シークレットを使用するように Ingress リソースを更新します。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: webapp-ingress
        namespace: webapp-project
      spec:
        tls: 1
          - hosts:
              - webapp.example.com
            secretName: webapp-tls 2
        rules:
          - host: webapp.example.com
            http:
              paths:
                - path: /
                  pathType: Prefix
                  backend:
                    service:
                      name: webapp-service
                      port:
                        number: 80
      1
      TLS セクションで TLS 設定を指定します。
      2
      secretName フィールドは、TLS 証明書と鍵が含まれる Kubernetes シークレットの名前です。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.