本页面介绍如何为 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 服务可以提供给客户端的一个或多个证书。
如需提供证书,请执行以下操作:
- 创建一个包含您的证书和密钥的 Kubernetes 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