Knative服务的默认域名格式为{route}.{namespace}.{default-example.com}
,其中{default-example.com}
是默认的域名后缀,通常是example.com。如果您需要使用自定义域名,您可以参见本文实现,以实现更灵活的路由配置。ACK Knative支持通过ConfigMap修改全局的自定义域名,针对所有Knative服务生效,也支持使用DomainMapping为某个Knative服务自定义域名。
前提条件
自定义全局域名
如果您希望所有部署在ACK Knative中的Knative服务都共享同一个域名后缀,无需分别为每个单独定义域名,请按照如下步骤操作。
执行以下命令,编辑位于
knative-serving
命名空间下的名为config-domain
的ConfigMap对象。kubectl edit cm config-domain --namespace knative-serving
修改配置文件。
将配置文件中的默认域名
example.com
改为自定义域名后,保存配置。本示例配置自定义域名为mydomain
。apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # 将example.com替换为mydomain.com。实际业务中需替换成您自己的服务域名。
执行以下命令,查看域名是否生效。
# 需将命令中的helloworld-go替换成实际业务中的Knative服务名。 kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'
预期输出:
helloworld-go.default.mydomain.com
预期结果表明,自定义域名已生效。
将Knative网关IP设置到对应的域名解析。
执行以下命令,通过自定义域名访问Knative服务。
curl http://helloworld-go.default.mydomain.com
预期输出:
Hello Knative!
预期结果表明,自定义域名已配置成功,并且Knative服务已经正确地响应了请求。
自定义单个服务的域名
如果您需要为某个Knative服务定义特定的域名,可以按照如下方式配置。
控制台
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在Knative页面,单击服务管理页签,找到并单击目标服务的名称。
在目标服务详情页面,单击右上角的访问设置,根据页面提示为目标服务配置自定义域名。
kubectl
如果您需要为某个Service定义特定的域名,同时希望使用Ingress控制器进行灵活的路由配置,可以使用DomainMapping实现。
执行以下命令,创建
helloworld.knative.top.yaml
文件。vi helloworld.knative.top.yaml
在vi编辑器中添加以下YAML内容,保存后退出编辑器。
apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top.mydomain.com # 设置服务域名。实际业务中需替换成您自己的服务域名。 namespace: default # 设置命名空间,与服务所在的命名空间一致。 spec: ref: name: helloworld-go # 目标服务名称。 kind: Service apiVersion: serving.knative.dev/v1
执行以下命令,将
helloworld.knative.top.yaml
中定义的资源应用到Kubernetes集群中。kubectl apply -f helloworld.knative.top.yaml
预期输出:
domainmapping.serving.knative.dev/helloworld.knative.top created
执行以下命令,验证DomainMapping。
kubectl get domainmapping helloworld.knative.top
预期输出:
NAME URL READY REASON helloworld.knative.top http://helloworld.knative.top True
预期结果表明,自定义域名已生效。
将Knative网关IP设置到对应的域名解析。
执行以下命令,通过自定义域名访问Knative服务。
curl http://helloworld.knative.top.mydomain.com
预期输出:
Hello Knative!
预期结果表明,自定义域名已配置成功,并且Knative服务已经正确地响应了请求。
相关文档
您可以为自定义域名配置相应的HTTPS证书,请参见配置HTTPS证书访问。
您可以在Knative中部署gRPC服务,提升网络效率,请参见在Knative中部署gRPC服务。