イングレスゲートウェイの設定¶
Knativeは、Knativeサービスメッシュ内のすべての着信トラフィックを処理するために、共有イングレスゲートウェイ(`knative-serving`名前空間下の`knative-ingress-gateway`ゲートウェイ)を使用します。デフォルトでは、`istio-system`名前空間下のIstioゲートウェイサービス`istio-ingressgateway`を基盤となるサービスとして使用します。このサービスとゲートウェイは、以下のように独自のものに置き換えることができます。
デフォルトの`istio-ingressgateway`サービスの置き換え¶
ステップ1:ゲートウェイサービスとデプロイメントインスタンスの作成¶
まず、トラフィックを処理するためのゲートウェイサービスとデプロイメントインスタンスを作成する必要があります。例えば、デフォルトの`istio-ingressgateway`を`custom-ingressgateway`にカスタマイズしたとします。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
components:
ingressGateways:
- name: custom-ingressgateway
enabled: true
namespace: custom-ns
label:
istio: custom-gateway
ステップ2:Knativeゲートウェイの更新¶
`knative-serving`名前空間下のゲートウェイインスタンス`knative-ingress-gateway`を更新します。
kubectl edit gateway knative-ingress-gateway -n knative-serving
ラベルセレクタをサービスのラベルに置き換えます。
istio: ingressgateway
前述の`custom-ingressgateway`サービスの例では、次のように更新する必要があります。
istio: custom-gateway
サービスポートが(`istio-ingressgateway`と比べて)変更されている場合は、ゲートウェイのポート情報をそれに応じて更新します。
ステップ3:ゲートウェイConfigMapの更新¶
-
`knative-serving`名前空間下のゲートウェイconfigmap `config-istio`を更新します。
kubectl edit configmap config-istio -n knative-serving
このコマンドは、デフォルトのテキストエディタを開き、`config-istio` ConfigMapの編集を可能にします。
apiVersion: v1 data: _example: | ################################ # # # EXAMPLE CONFIGURATION # # # ################################ # ... external-gateways: | - name: knative-ingress-gateway namespace: knative-serving service: istio-ingressgateway.istio-system.svc.cluster.local
-
ファイルを編集して、サービスの完全修飾URLを使用して`external-gateways`フィールドを追加します。前述の`custom-ingressgateway`サービスの例では、次のように更新する必要があります。
apiVersion: v1 data: external-gateways: | - name: knative-ingress-gateway namespace: knative-serving service: custom-ingressgateway.custom-ns.svc.cluster.local kind: ConfigMap [...]
Knativeイングレスゲートウェイの置き換え¶
これまでゲートウェイサービスをカスタマイズしてきましたが、独自のゲートウェイを使用することもできます。以下の手順に従って、デフォルトのゲートウェイを独自のゲートウェイに置き換えることができます。
ステップ1:ゲートウェイの作成¶
デフォルトの`knative-ingress-gateway`ゲートウェイを`custom-ns`内の`knative-custom-gateway`に置き換えるとします。まず、`knative-custom-gateway`ゲートウェイを作成します。
-
次のテンプレートを使用してYAMLファイルを作成します。
ここで、`apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: knative-custom-gateway namespace: custom-ns spec: selector: istio: <service-label> servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"
`はサービスを選択するためのラベルです(例:`ingressgateway`)。 -
次のコマンドを実行してYAMLファイルを適用します。
ここで、`kubectl apply -f <filename>.yaml
`は前のステップで作成したファイルの名前です。
ステップ2:ゲートウェイConfigMapの更新¶
-
`knative-serving`名前空間下のゲートウェイconfigmap `config-istio`を更新します。
kubectl edit configmap config-istio -n knative-serving
このコマンドは、デフォルトのテキストエディタを開き、`config-istio` ConfigMapの編集を可能にします。
apiVersion: v1 data: _example: | ################################ # # # EXAMPLE CONFIGURATION # # # ################################ # ... external-gateways: | - name: knative-ingress-gateway namespace: knative-serving service: istio-ingressgateway.istio-system.svc.cluster.local
-
カスタマイズされたゲートウェイを使用して`external-gateways`フィールドを追加するようにファイルを編集します。前述の`knative-custom-gateway`の例では、次のように更新する必要があります。
apiVersion: v1 data: external-gateways: | - name: knative-custom-gateway namespace: custom-ns service: istio-ingressgateway.istio-system.svc.cluster.local kind: ConfigMap [...]
構成形式は次のとおりです。
external-gateways: |
- name: <gateway-name>
namespace: <gateway-namespace>
service: <fully-qualified-url-of-istio-ingress-service>