如何在 Knative 中使用自定义域名

在 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
上一篇:数据库中分级显示数据


下一篇:mysql学习篇