如果Knative Service需要配置多个不同的域名,您可以通过knative.aliyun.com/serving-ingress Annotation直接指定自定义的域名和路径,并且通过自定义域名和路径访问Knative Service。本文介绍如何添加自定义的域名和路径,并通过自定义域名和路径访问Knative Service。

背景信息

Knative的配置中有一个默认的主域名,每一个Knative Service都基于主域名、命名空间和Service名称生成一个唯一域名。域名生成规则为{ksvc-name}.{namespace}.{knative-default-domain}。Knaive默认的主域名是example.com,例如,一个名为Coffee的knative Service部署在Default命名空间中,默认的唯一域名是coffee.default.example.com。您可以修改默认的example.com域名,详细介绍请参见在Knative使用自定义域名

如果Knative Service需要配置多个不同的域名,您可以通过knative.aliyun.com/serving-ingress Annotation直接指定自定义的域名和路径。例如,knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee表示指定cafe.mydomain.com域名和/coffee路径。
说明 配置一个自定义域名和路径并不会替换默认的域名,而是在默认域名的基础之上增加一个新的域名。

操作步骤

  1. 创建并拷贝以下内容到ingress-domain.yaml
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: coffee-mydomain
      annotations:
        knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee
    spec:
      template:
          spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8
  2. 创建Knative Service。
    kubectl apply -f ingress-domain.yaml
  3. 查看Knative Service信息。

    可以看到coffee-mydomain.default.example.com是当前Knative Service的默认域名。

    kubectl get ksvc

    预期输出:

    NAME              URL                                          LATESTCREATED           LATESTREADY             READY   REASON
    coffee-mydomain   http://coffee-mydomain.default.example.com   coffee-mydomain-sbwhz   coffee-mydomain-sbwhz   True
  4. 通过默认域名访问Knative Service。
    curl -H "Host: coffee-mydomain.default.example.com" http://alb-ijvf32ubve64wz****.cn-shanghai.alb.aliyuncs.com

    预期输出:

    Hello World!
  5. 通过自定义域名和路径访问Knative Service。
    curl -H "Host: cafe.mydomain.com" http://alb-ijvf32ubve64wz****.cn-shanghai.alb.aliyuncs.com/coffee

    预期输出:

    Hello World!