使用测试网域

在选择映射自定义网域之前,请先了解如何访问集群中的 Knative 服务服务以进行测试。

默认情况下,您部署到 Knative 服务集群的服务会设置为 nip.io 基本网域。因此,如果您为入站流量网关使用建议的名称,则可以立即测试您的服务和发送请求,而无需额外配置。例如:http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

请注意,使用 DNS 通配符(包括 nip.io 网域,它是一个免费的 DNS 通配符服务)时,可能存在请求可靠性问题。相比之下,设置和使用自定义网域来进行测试可以提高可靠性。

或者,您还可以通过外部 IP 地址来访问您的服务。

使用 nip.io 测试网域

如需使用默认的 nip.io 基本网域来访问服务,您可以在 Google Cloud Console 中找到网址,也可以手动构建网址。

控制台

  1. 在 Google Cloud 控制台中,前往 Knative 服务页面。

    前往 Knative 服务

  2. 在列表中,点击要获取其网址的服务。

  3. 在页面顶部附近,将显示网址

    例如:http://my-service.default.kuberun.11.111.11.111.nip.io

    其中,my-service 是 Knative 服务服务的名称,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 通配符服务来访问您的服务。

准备工作

获取外部 IP 地址

创建 GKE Enterprise 集群后,Istio Ingress 控制器会创建一个具有公开可用 IP 地址的 Google Cloud 网络负载均衡器。

如需使用 cURL 或 DNS 服务配置对服务的访问权限,您必须先获取负载均衡器服务的外部 IP 地址:

控制台

如需从 Google Cloud 控制台获取负载均衡器的外部 IP 地址,请执行以下操作:
  1. 在 Google Cloud 控制台中,前往 GKE 页面:
    前往 GKE
  2. 点击服务和 Ingress (Services and ingress)。
  3. 确定集群的 Istio Ingress 服务。服务的类型将为外部负载均衡器名称将为 istio-ingressgateway
  4. 找到集群的 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 替换为 Anthos Service Mesh 入站流量所在的命名空间。如果您使用默认配置安装了 Anthos 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 地址后,您可以在 c 网址命令中使用该地址,或者将其与 DNS 通配符服务搭配使用,以访问 Knative 服务服务。

使用 cURL

您可以将 cURL 命令与默认的 nip.io 基本网域搭配使用,以向您的服务发送请求。

您可以在 cURL 命令中指定负载均衡器的外部 IP 地址以及服务和命名空间的名称:

curl --header 'Host: SERVICE_NAME.NAMESPACE.kuberun.EXTERNAL_IP.nip.io' EXTERNAL_IP

您需要在其中:

  • SERVICE_NAME 替换为您的 Knative 服务服务的名称。
  • NAMESPACE 替换为在其中运行服务的命名空间。
  • EXTERNAL_IP 替换为负载均衡器的外部 IP 地址

例如:

curl --header 'Host: my-service.default.kuberun.12.345.67.890.nip.io' http://12.345.67.890

使用其他 DNS 通配符服务

默认情况下,您的 Knative 服务服务使用 nip.io DNS 通配符服务。但是,您可以选择使用其他服务,如 sslip.io。如需配置其他 DNS 通配符服务,您必须先获取负载均衡器的外部 IP 地址,然后使用该 IP 地址配置 DNS 通配符服务。

配置集群的网域

Knative 服务使用 config-domain ConfigMap 定义所有已部署的 Knative 服务服务所使用的基础网域。您可以通过 Google Cloud Console 或使用 kubectl 命令更新该 ConfigMap。

控制台

如需在 Google Cloud 控制台中将默认基本网域从 nip.io 更改为某个 DNS 通配符服务,请执行以下操作:

  1. 转到 Google Cloud 控制台中的 Knative 服务网域映射页面:

    前往“网域映射”

  2. 选择添加映射 > 添加集群默认网域

  3. 选中“将此网域映射应用于部署到此集群的所有 Knative 服务服务”旁边的复选框。

  4. 从下拉菜单中选择您的集群。

  5. 网域字段中,输入要使用的通配符 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} 访问。