このページでは、GKE On-Prem クラスタで Ingress を有効にする方法について説明します。
管理ワークステーションへの SSH 接続
管理ワークステーションに SSH で接続します。
ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]
ここで、[IP_ADDRESS] は管理ワークステーションの IP アドレスです。
このトピックの残りの手順はすべて管理ワークステーションで行います。
Ingress の有効化
ユーザー クラスタが実行されたら、Istio ゲートウェイ オブジェクトを作成して Ingress を有効にする必要があります。この Istio ゲートウェイ オブジェクトはネットワーク上り(内向き)トラフィックに必要です。承認ポリシーなどの他のユースケースで使用またはサポートされることはありません。ゲートウェイ マニフェストの最初の部分は常に次のようになります。
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system
ゲートウェイにフィールドを追加して、クラスタへの送信を許可するトラフィックを指定できます。ゲートウェイを使用して受信リクエストを管理する方法については、トラフィック管理をご覧ください。
次のゲートウェイ マニフェストでは、クライアントは HTTP/2 プロトコルと任意のホスト名を使用して、ポート 80 でリクエストを送信できます。
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system servers: - port: number: 80 protocol: HTTP2 name: http hosts: - "*"
Ingress サービスで HTTPS リクエストを受け入れる場合は、Ingress サービスがクライアントに提示できる証明書を 1 つ以上指定する必要があります。
証明書を提供するには:
- 証明書と鍵を保持する Kubernetes Secret を作成します。
- Secret を参照するゲートウェイ オブジェクトを作成するか、Secret を参照するように既存のゲートウェイ オブジェクトを変更します。ゲートウェイ オブジェクトの名前は
istio-autogenerated-k8s-ingress
にする必要があります。
たとえば、すでに証明書ファイル ingress-wildcard.crt
と鍵ファイル ingress-wildcard.key
を作成しているとします。
ingressgateway-wildcard-certs
という名前の Secret を作成します。
kubectl create secret tls \ --namespace gke-system \ ingressgateway-wildcard-certs \ --cert ./ingress-wildcard.crt \ --key ./ingress-wildcard.key
次のゲートウェイ マニフェストは Secret を参照します。クライアントは、HTTPS プロトコルと *.example.com に一致する任意のホスト名を使用して、ポート 443 で呼び出すことができます。証明書のホスト名は、マニフェストのホスト名と一致する必要があります(この例では *.example.com)。
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: istio-autogenerated-k8s-ingress namespace: gke-system spec: selector: istio: ingress-gke-system servers: - port: number: 80 protocol: HTTP2 name: http hosts: - "*" - hosts: - "*.example.com" port: name: https-demo-wildcard number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: ingressgateway-wildcard-certs
ゲートウェイ マニフェストを変更することで、ホストごとに複数の TLS 証明書を作成できます。
マニフェストを my-gateway.yaml
という名前のファイルに保存して、ゲートウェイを作成します。
kubectl apply -f my-gateway.yaml