了解如何在选择映射自定义网域之前访问集群中的 Knative serving 服务以进行测试。
默认情况下,您部署到 Knative serving 集群的服务会设置为 nip.io
基本网域。因此,如果您为入站流量网关使用建议的名称,则可以立即测试服务并发送请求,而无需进行其他配置。例如:http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
。
请注意,使用 DNS 通配符(包括 nip.io 网域,它是一个免费的 DNS 通配符服务)时,可能存在请求可靠性问题。相比之下,设置和使用自定义网域来进行测试可以提高可靠性。
或者,您还可以通过外部 IP 地址来访问您的服务。
使用 nip.io
测试网域
如需使用默认的 nip.io
基本网域来访问服务,您可以在 Google Cloud 控制台中找到网址,也可以手动构造网址。
控制台
在 Google Cloud 控制台中,前往 Knative serving 页面。
在列表中,点击要获取其网址的服务。
在页面顶部附近,将显示网址。
例如:
http://my-service.default.kuberun.11.111.11.111.nip.io
其中,my-service 是 Knative serving 服务的名称,default 是命名空间,11.111.11.111 是外部负载均衡器的 IP 地址。
手动
如需手动构建服务的网址,请使用服务的名称、服务在其中运行的命名空间以及负载均衡器的 IP 地址:
http://SERVICE.NAMESPACE.kuberun.EXTERNAL_IP.nip.io
您需要进行如下替换:
- 将 SERVICE_NAME 替换为您的服务名称。
- 将 NAMESPACE 替换为您在其中部署服务的命名空间。默认情况下,服务会部署到
default
命名空间。 - 将 EXTERNAL_IP 替换为负载均衡器的外部 IP 地址。
例如,如果您在 default
命名空间中有名为 hello
的服务,并且您的外部 IP 地址为 12.345.67.890
,则网址可能如下所示:
http://hello.default.kuberun.12.345.67.890.nip.io
使用外部 IP 地址
(可选)您可以使用负载均衡器的外部 IP 地址通过 cURL 命令或手动配置备用 DNS 通配符服务来访问您的服务。
准备工作
确保您的 Google Cloud CLI 和 kubectl 命令行工具已安装且为最新版本:
您必须至少具有 Kubernetes Engine Developer Identity and Access Management 角色或等效权限。
获取外部 IP 地址
创建 GKE Enterprise 集群后,Istio Ingress 控制器会创建一个具有公开可用 IP 地址的 Google Cloud 网络负载均衡器。
如需使用 cURL 或 DNS 服务配置对服务的访问权限,您必须先获取负载均衡器服务的外部 IP 地址:
控制台
如需从 Google Cloud 控制台获取负载均衡器的外部 IP 地址,请执行以下操作:- 在 Google Cloud 控制台中,前往 GKE 页面:
前往 GKE - 点击服务和 Ingress (Services and ingress)。
- 确定集群的 Istio Ingress 服务。服务的类型将为外部负载均衡器,名称将为
istio-ingressgateway
。 - 找到集群的 Istio Ingress 服务后,复制其端点。这将是没有端口号的 IP 地址。例如,您可能会看到
00.000.000.000:11
列为端点,但只需复制00.000.000.000
。
kubectl
如需获取负载均衡器的外部 IP,请运行以下命令:
kubectl get svc istio-ingressgateway -n ASM-INGRESS-NAMESPACE
将 ASM-INGRESS-NAMESPACE 替换为 Cloud Service Mesh 入站流量所在的命名空间。如果您使用默认配置安装了 Cloud Service Mesh,请指定 istio-system
。
输出类似于以下内容:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) istio-ingressgateway LoadBalancer XX.XX.XXX.XX pending 80:32380/TCP,443:32390/TCP,32400:32400/TCP
其中 EXTERNAL-IP 值是负载均衡器的外部 IP 地址。
在获取负载均衡器的外部 IP 地址后,您可以在 cURL 命令中使用它,或者将它与 DNS 通配符服务搭配使用,以访问 Knative serving 服务。
使用 cURL
您可以将 cURL 命令与默认的 nip.io
基本网域搭配使用,以向您的服务发送请求。
您可以在 cURL 命令中指定负载均衡器的外部 IP 地址以及服务和命名空间的名称:
curl --header 'Host: SERVICE_NAME.NAMESPACE.kuberun.EXTERNAL_IP.nip.io' EXTERNAL_IP
您需要进行如下替换:
- 将 SERVICE_NAME 替换为您的 Knative serving 服务的名称。
- 将 NAMESPACE 替换为在其中运行服务的命名空间。
- 将 EXTERNAL_IP 替换为负载均衡器的外部 IP 地址。
示例:
curl --header 'Host: my-service.default.kuberun.12.345.67.890.nip.io' http://12.345.67.890
使用其他 DNS 通配符服务
默认情况下,Knative serving 服务使用 nip.io DNS 通配符服务。但是,您可以选择使用其他服务,如 sslip.io。如需配置其他 DNS 通配符服务,您必须先获取负载均衡器的外部 IP 地址,然后使用该 IP 地址配置 DNS 通配符服务。
配置集群的网域
Knative serving 使用 config-domain
ConfigMap 定义所有已部署的 Knative serving 服务使用的基本网域。您可以通过 Google Cloud 控制台或使用 kubectl
命令更新该 ConfigMap。
控制台
如需在 Google Cloud 控制台中将默认基本网域从 nip.io
更改为某个 DNS 通配符服务,请执行以下操作:
前往 Google Cloud 控制台中的 Knative serving 网域映射页面:
选择添加映射 > 添加集群默认网域
选中“将此网域映射应用于部署到此集群的所有 Knative serving 服务”旁边的复选框。
从下拉菜单中选择您的集群。
在网域字段中,输入要使用的通配符 DNS 网站。例如
sslip.io
kubectl
如需将默认基本网域从 nip.io
更改为某个 DNS 通配符网站,请使用以下命令:
kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"kuberun.EXTERNAL_IP.nip.io": null, "DNS_SERVICE": ""}}'
您需要进行如下替换
- 将 EXTERNAL_IP 替换为负载均衡器的外部 IP 地址。
- 将 DNS_SERVICE 替换为您使用的通配符 DNS 网站。 例如
sslip.io
您的服务现在可通过 http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.{DNS_SERVICE}
访问。