コンテンツへスキップ

Knative 用の Istio のインストール

このガイドでは、Knative で使用するために Istio を手動でインストールおよびカスタマイズする方法について説明します。

クラウドプラットフォームでマネージド Istio インストールが提供されている場合は、インストールをカスタマイズする必要がない限り、その方法で Istio をインストールすることをお勧めします。

始める前に

以下が必要です。

  • 作成済みの Kubernetes クラスター。
  • istioctl がインストール済み。
  • Knative Serving がインストール済み(Istio の後でもインストール可能)。

サポートされている Istio バージョン

テスト済みの最新 Istio バージョンは、Knative Net Istio リリースページで確認できます。

Istio のインストール

Istio をインストールするときには、目標に応じていくつかのオプションがあります。ほとんどの Knative ユースケースに適した基本的な Istio インストールについては、istioctl を使用した基本インストールの手順に従ってください。Istio に精通しており、どのようなインストールが必要か分かっている場合は、オプションを読み、ニーズに合ったインストールを選択してください。

istioctl を使用した基本インストール

  1. istioctl を使用すると、Istio のインストールを簡単にインストールおよびカスタマイズできます。

    istioctl install -y
    
  2. Istio を Knative Serving と統合するには、次のコマンドを実行して Knative Istio コントローラーをインストールします。

    kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.16.0/net-istio.yaml
    

    ヒント

    Knative Serving のインストールとDNS の構成も忘れずに行ってください。

サービスメッシュの形成

Istio サービスメッシュには、いくつかの利点があります。

  • クラスター内のサービス間トラフィックを保護する相互 TLS を有効にできます。

  • Istio 認証ポリシーを使用することで、Istio サービスロールに基づいて各 Knative サービスへのアクセスを制御できます。

Istio をサービスメッシュとして使用する場合は、サービスメッシュの一部にする必要があるすべての pods に Istio サイドカーが注入されていることを確認する必要があります。これを実現するには、次の 2 つの方法があります。

Knative での Istio mTLS 機能の使用

knative-serving 名前空間とサービスが実行されている名前空間の間にはいくつかのネットワーク通信があるため、mTLS が有効な環境では追加の準備が必要です。

注意

knative-serving のすべての pods に手動でサイドカーを注入することを避けるために、自動サイドカーインジェクションを使用することを強くお勧めします。

  1. knative-serving システム名前空間でサイドカーインジェクションを有効にします。

    kubectl label namespace knative-serving istio-injection=enabled
    
  2. 次のテンプレートを使用して YAML ファイルを作成し、knative-serving システム名前空間で PeerAuthenticationPERMISSIVE に設定します。

    apiVersion: "security.istio.io/v1beta1"
    kind: "PeerAuthentication"
    metadata:
      name: "default"
      namespace: "knative-serving"
    spec:
      mtls:
        mode: PERMISSIVE
    
  3. 次のコマンドを実行して YAML ファイルを適用します。

    kubectl apply -f <filename>.yaml
    
    ここで、<filename> は前のステップで作成したファイルの名前です。

インストールの構成

デフォルト以外のローカルゲートウェイを使用するように config-istio configmap を更新する

knative-local-gateway 以外の名前でローカルゲートウェイ用のカスタムサービスとデプロイメントを作成する場合は、knative-serving 名前空間の下にあるゲートウェイ configmap config-istio を更新する必要があります。

  1. config-istio configmap を編集します。

    kubectl edit configmap config-istio -n knative-serving
    
  2. local-gateways フィールドをカスタムサービスで置き換えます。例として、istio-system 名前空間の下でサービスとデプロイメントの両方に custom-local-gateway という名前を付ける場合は、次のように更新する必要があります。

    local-gateways: |
      - name: knative-local-gateway
        namespace: knative-serving
        service: custom-local-gateway.istio-system.svc.cluster.local
    

例として、カスタムサービスとデプロイメントの両方が、デフォルトの istio: knative-local-gateway ではなく custom: custom-local-gateway というラベルが付いている場合は、knative-serving 名前空間のゲートウェイインスタンス knative-local-gateway を更新する必要があります。

kubectl edit gateway knative-local-gateway -n knative-serving

ラベルセレクターをサービスのラベルで置き換えます。

istio: knative-local-gateway

前述のサービスの場合、次のように更新する必要があります。

custom: custom-local-gateway

サービスポート(knative-local-gateway のポートと比較して)に変更がある場合は、それに応じてゲートウェイのポート情報を更新してください。

Istio インストールの検証

Istio インストールのステータスを表示して、インストールが成功したことを確認します。istioctl を使用してインストールを検証できます。

istioctl verify-install

Istio リソース

Istio のクリーンアップ

Istio のアンインストールを参照してください。

次のステップ

当社は、サイトトラフィックを把握するために分析と Cookie を使用しています。当社のサイトの利用に関するお客様の情報は、その目的のために Google と共有されます。詳細はこちら。