在 Knative Serving route 路由中默认使用 example.com
作为默认域名,route 完全定义的域名格式默认为:{route}.{namespace}.{default-domain}。如何使用自定义的域名呢?本文介绍了如何在 Knative Serving 中使用自定义域名。
前置准备
通过 Kubectl 修改域名
通过 kubectl 编辑域名配置文件 config-domain
config-map。
kubectl edit cm config-domain --namespace knative-serving
使用自定义域名(如:mydomain.com),替换掉 example.com
。保存配置
apiVersion: v1
data:
mydomain.com: ""
kind: ConfigMap
[...]
通过 Apply 方式修改域名
创建一个域名配置文件 config-domain.yaml,使用自定义域名替换掉默认域名 example.com
。保存文件
apiVersion: v1
kind: ConfigMap
metadata:
name: config-domain
namespace: knative-serving
data:
# These are example settings of domain.
# example.org will be used for routes having app=prod.
example.org: |
selector:
app: prod
# Default value for domain, for routes that does not have app=prod labels.
# Although it will match all routes, it is the least-specific rule so it
# will only be used if no other domain matches.
example.com: ""
执行如下命令:
kubectl apply --filename config-domain.yaml
验证
部署应用
如果你已经部署了应用,Knative 会根据域名配置 configmap 的修改,自动更新所有的Service和Route。
部署一个应用 (如, helloworld-go), 可以使用下面的命令查看Knative Route "helloworld-go":
kubectl get route helloworld-go --output jsonpath="{.status.domain}"
可以看到自定义域名已生效:helloworld-go.default.mydomain.com。
域名发布
通过下述方式查看 Knative 网关 ip 地址:
# In Knative 0.2.x and prior versions, the `knative-ingressgateway` service was used instead of `istio-ingressgateway`.
export INGRESSGATEWAY=knative-ingressgateway
# The use of `knative-ingressgateway` is deprecated in Knative v0.3.x.
# Use `istio-ingressgateway` instead, since `knative-ingressgateway`
# will be removed in Knative v0.4.
if kubectl get configmap config-istio -n knative-serving &> /dev/null; then
export INGRESSGATEWAY=istio-ingressgateway
fi
kubectl get svc $INGRESSGATEWAY --namespace istio-system --output jsonpath="{.status.loadBalancer.ingress[*]['ip']}"
将Knative 网关 ip 设置到对应的域名解析,参见添加域名解析。
查看结果
最后可以通过直接执行如下命令查看执行结果:
curl http://helloworld-go.default.mydomain.com