本文介绍了如何在 Knative Serving 中使用自定义域名。

前提条件

背景信息

在 Knative Serving route 路由中默认使用 example.com 作为默认域名,route 完全定义的域名格式默认为:{route}.{namespace}.{default-domain}在 Knative Serving route 路由中默认使用。

通过 Kubectl 修改域名

下面以在命名空间knative-serving中将域名修改为自定义域名为例进行介绍。

  1. 通过 kubectl 连接 Kubernetes 集群
  2. 执行如下命令,编辑域名 config-map 配置文件 config-domain
    kubectl edit cm config-domain --namespace knative-serving
  3. 修改配置文件。
    使用自定义域名(如:mydomain.com),替换掉 example.com,保存配置。
    apiVersion: v1
    data:
      mydomain.com: ""
    kind: ConfigMap
    [...]

部署应用

如果你已经部署了应用,Knative 会根据域名配置 configmap 的修改,自动更新所有的 Service 和 Route。

  1. 部署一个应用。请参见部署 Serving Hello World 应用
    本例中部署一个命名为helloworld-go的应用。
  2. 执行以下操作,查看部署结果。
    • 在Knative 0.7 版本下,执行如下命令,查看域名。
      kubectl get route ${SVC_NAME} --output jsonpath="{.status.url}"| awk -F/ '{print $3}'`
    • 在Knative 0.6 版本下,执行如下命令,查看域名。
      kubectl get route helloworld-go --output jsonpath="{.status.domain}"
    当返回结果如下时,表示自定义域名已生效。
    helloworld-go.default.mydomain.com

域名发布

  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,选择Knative > 服务管理,进入服务管理页面。
  3. 选择目标集群及命名空间,可以看到目标应用对应的访问网关

    网关地址
  4. 将Knative 网关 ip 设置到对应的域名解析,参见添加解析记录

执行结果

执行如下命令,查看执行结果。
curl http://helloworld-go.default.mydomain.com