全部產品
Search
文件中心

Container Service for Kubernetes:在Knative中使用自訂網域名

更新時間:Dec 02, 2025

Knative服務的預設網域名稱格式為{route}.{namespace}.{default-example.com},其中{default-example.com}是預設的網域名稱尾碼,通常是example.com。如果您需要使用自訂網域名,您可以參見本文實現,以實現更靈活的路由配置。ACK Knative支援通過ConfigMap修改全域的自訂網域名,針對所有Knative服務生效,也支援使用DomainMapping為某個Knative服務自訂網域名。

前提條件

自訂全域網域名稱

如期望所有部署在ACK Knative中的Knative服務都共用同一個網域名稱尾碼,無需分別為每個單獨定義網域名稱,請按照如下步驟操作。

  1. 執行以下命令,編輯位於knative-serving命名空間下的名為config-domain的ConfigMap對象。

    kubectl edit cm config-domain --namespace knative-serving
  2. 修改設定檔。

    將設定檔中的預設網域名稱example.com改為自訂網域名後,儲存配置。本樣本配置自訂網域名為mydomain

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: config-domain
      namespace: knative-serving
    data:
      mydomain.com: "" # 將example.com替換為mydomain.com。實際業務中需替換成您自己的服務網域名稱。
  3. 執行以下命令,查看網域名稱是否生效。

    # 需將命令中的helloworld-go替換成實際業務中的Knative服務名。
    kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'

    預期輸出:

    helloworld-go.default.mydomain.com

    預期結果表明,自訂網域名已生效。

  4. 將Knative網關IP設定到對應的網域名稱解析。

  5. 執行以下命令,通過自訂網域名訪問Knative服務。

    curl http://helloworld-go.default.mydomain.com

    預期輸出:

    Hello Knative!

    預期結果表明,自訂網域名已配置成功,並且Knative服務已經正確地響應了請求。

自訂單個服務的網域名稱和Path

如果您需要為某個Knative服務定義特定的網域名稱和Path,可通過knative.aliyun.com/serving-ingress 註解直接指定自訂的網域名稱和路徑。例如,knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee表示指定cafe.mydomain.com網域名稱和/coffee路徑。

單 Path 樣本:

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

多 Path 樣本:

多個Path之間使用英文半形逗號(,)分隔。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: cafe.mydomain.com/coffee,cafe.mydomain.com/tea
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

Rewrite 重寫 Path

當前 ALB 網關支援Rewrite重寫, 如需為Knative服務重寫 Path,可通過配置Annotationalb.ingress.kubernetes.io/rewrite-target: 的來指定。程式碼範例如下。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: cafe.mydomain.com/api/coffee
    alb.ingress.kubernetes.io/rewrite-target: /coffee
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

設定通配網域名稱

如需為Knative服務定義通配網域名稱,可通過配置Annotationknative.aliyun.com/serving-ingress 的值為/來指定。例如,knative.aliyun.com/serving-ingress: /表示通配網域名稱。樣本如下。

僅支援使用ALB網關。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: coffee-mydomain
  annotations:
    knative.aliyun.com/serving-ingress: "/"
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8

相關文檔