使用测试网域

了解如何访问集群中的 Knative serving 服务以进行测试 然后再选择 映射自定义网域

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

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

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

使用 nip.io 测试网域

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

控制台

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

    前往 Knative serving

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

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

    例如: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 通配符服务来访问您的服务。

准备工作

获取外部 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 替换为 位于 Cloud Service Mesh 入站流量的位置。在以下情况下指定 istio-system: 安装了 Cloud Service Mesh。

输出类似于以下内容:

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 地址后,即可使用该地址 或 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 Console 或使用 kubectl 命令更新该 ConfigMap。

控制台

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

  1. 前往 Knative serving 网域映射页面 Google Cloud 控制台:

    前往“网域映射”

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

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

  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} 访问。