この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

Istio ゲートウェイを設定します。

Rancher-IstioはRancher v2.12.0以降廃止されました。セキュリティを強化するために、 SUSE Application CollectionのIstioビルドに切り替えてください(SUSE Rancher Primeサブスクリプションに含まれています)。 詳細情報は この発表にあります。

各クラスターへのゲートウェイは、サービスメッシュとは無関係に独自のポートまたはロードバランサーを持つことができます。デフォルトでは、各Rancherプロビジョニングクラスターには、クラスターへのトラフィックを許可する1つのNGINX Ingressコントローラーがあります。

Istio をインストールしているかどうかにかかわらず、Nginx Ingress コントローラーを使用できます。これがクラスターへの唯一のゲートウェイである場合、Istio はサービス間のトラフィックをルーティングできますが、クラスター外からのトラフィックを受信することはできません。

Istio が外部トラフィックを受信できるようにするには、外部トラフィックのための南北プロキシとして機能する Istio のゲートウェイを有効にする必要があります。Istio ゲートウェイを有効にすると、クラスターには 2 つの Ingress が作成されます。

サービスのために Kubernetes ゲートウェイを設定する必要もあります。この Kubernetes リソースは、クラスターへの Ingress ゲートウェイの Istio 実装を指します。

ロードバランサーを使用してサービスメッシュにトラフィックをルーティングするか、Istio の NodePort ゲートウェイを使用できます。このセクションでは、NodePort ゲートウェイの設定方法について説明します。

Istio ゲートウェイに関する詳細は、 Istio ドキュメントを参照してください。

Istio が有効なクラスターにおいて

Istio ゲートウェイを有効にします。

Ingress ゲートウェイは、クラスターにデプロイされる Kubernetes サービスです。Istio ゲートウェイは、より広範なカスタマイズと柔軟性を提供します。

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 左のナビゲーションバーで menu:Istio[ゲートウェイ] をクリックします。

  4. Create from Yaml をクリックします。

  5. Istio ゲートウェイの YAML を貼り付けるか、ファイルから読み込む を選択します。

  6. 作成]をクリックします。

*結果:*ゲートウェイがデプロイされ、適用されたルールでトラフィックをルーティングします。

例: Istio ゲートウェイ

Workloads の例を通じて、サービスに BookInfo アプリのデプロイを追加します。次に、アプリがクラスターの外部からアクセスできるように、Istio ゲートウェイを追加します。

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 左のナビゲーションバーで menu:Istio[ゲートウェイ] をクリックします。

  4. Create from Yaml をクリックします。

  5. 以下に提供された Gateway の yaml をコピーして貼り付けます。

  6. 作成]をクリックします。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---

次に、Gateway のトラフィックルーティングを提供する VirtualService をデプロイします:

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 左のナビゲーションバーで menu:Istio[VirtualServices] をクリックします。

  4. 以下に提供された仮想サービスの yaml をコピーして貼り付けてください。

  5. 作成]をクリックします。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

*結果:*ゲートウェイリソースを構成したので、Istio はクラスターの外部からトラフィックを受信できます。

リソースが存在することを確認するには、次のコマンドを実行します:

kubectl get gateway -A

結果は次のようになります:

NAME               AGE
bookinfo-gateway   64m

WebブラウザからProductPageサービスにアクセスします。

BookInfo アプリが正しくデプロイされたかをテストするために、アプリは Istio コントローラーの IP とポートを使用して Web ブラウザで表示できます。これは、Kubernetes ゲートウェイリソースで指定されたリクエスト名と組み合わせます:

http://<IP of Istio controller>:<Port of istio controller>/productpage

Ingress ゲートウェイの URL とポートを取得するには、

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 左のナビゲーションバーで*ワークロード*をクリックします。

  4. `istio-system`ネームスペースまでスクロールダウンします。

  5. `istio-system`ネームスペース内には、`istio-ingressgateway`という名前のワークロードがあります。このワークロードの名前の下に、`80/tcp`のようなリンクが表示されるはずです。

  6. そのリンクの1つをクリックします。これにより、Web ブラウザで Ingress ゲートウェイの URL が表示されるはずです。URLに /productpage を追加します。

*結果:*Web ブラウザで BookInfo アプリが表示されるはずです。

Istio コントローラーの URL とポートを確認するためのヘルプが必要な場合は、 Istio のドキュメントを参照してください。

トラブルシューティング

公式の Istio ドキュメントは、外部リクエストの正しい Ingress ホストと Ingress ポートを確認するための`kubectl`コマンドを提案しています。

Kubernetes ゲートウェイが Istio の Ingress コントローラーと一致していることを確認します。

このセクションの手順を試して、Kubernetes ゲートウェイが正しく構成されていることを確認できます。

ゲートウェイリソースでは、セレクターが Istio のデフォルトの Ingress コントローラーをそのラベルで参照しており、ラベルのキーは istio で、値は ingressgateway です。 ゲートウェイに対してラベルが適切であることを確認するために、次のことを行ってください:

  1. *☰ > クラスター管理*をクリックします。

  2. 作成したクラスターに移動し、*探索*をクリックします。

  3. 左のナビゲーションバーで*ワークロード*をクリックします。

  4. `istio-system`ネームスペースまでスクロールダウンします。

  5. istio-system`ネームスペース内には、`istio-ingressgateway`という名前のワークロードがあります。このワークロードの名前をクリックして、ラベルとアノテーション セクションに移動します。キー `istio と値 ingressgateway があることが確認できるはずです。これにより、ゲートウェイリソースのセレクターが Istio のデフォルトの Ingress コントローラーと一致していることが確認されます。