全部產品
Search
文件中心

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

更新時間:Nov 08, 2024

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服務已經正確地響應了請求。

自訂單個服務的網域名稱

如果您需要為某個Knative服務定義特定的網域名稱,可以按照如下方式配置。

控制台

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Knative

  3. Knative頁面,單擊服務管理頁簽,找到並單擊目標服務的名稱。

  4. 在目標服務詳情頁面,單擊右上方的訪問設定,根據頁面提示為目標服務配置自訂網域名。

kubectl

如果您需要為某個Service定義特定的網域名稱,同時希望使用Ingress控制器進行靈活的路由配置,可以使用DomainMapping實現。

  1. 執行以下命令,建立helloworld.knative.top.yaml檔案。

    vi helloworld.knative.top.yaml
  2. 在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
  3. 執行以下命令,將helloworld.knative.top.yaml中定義的資源應用到Kubernetes叢集中。

    kubectl apply -f helloworld.knative.top.yaml

    預期輸出:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  4. 執行以下命令,驗證DomainMapping。

    kubectl get domainmapping helloworld.knative.top

    預期輸出:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       http://helloworld.knative.top            True

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

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

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

    curl http://helloworld.knative.top.mydomain.com

    預期輸出:

    Hello Knative!

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

相關文檔