启用 Ingress

本页面介绍如何为 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
  2. 创建一个网关对象,或修改引用您的 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