Knative服務的預設網域名稱格式為{route}.{namespace}.{default-example.com}
,其中{default-example.com}
是預設的網域名稱尾碼,通常是example.com。如果您需要使用自訂網域名,您可以參見本文實現,以實現更靈活的路由配置。ACK Knative支援通過ConfigMap修改全域的自訂網域名,針對所有Knative服務生效,也支援使用DomainMapping為某個Knative服務自訂網域名。
前提條件
已在叢集中部署Knative,請參見部署Knative。
已成功申請一個網域名稱,請參見阿里雲網域名稱服務 (DNS)。
自訂全域網域名稱
如果您希望所有部署在ACK Knative中的Knative服務都共用同一個網域名稱尾碼,無需分別為每個單獨定義網域名稱,請按照如下步驟操作。
執行以下命令,編輯位於
knative-serving
命名空間下的名為config-domain
的ConfigMap對象。kubectl edit cm config-domain --namespace knative-serving
修改設定檔。
將設定檔中的預設網域名稱
example.com
改為自訂網域名後,儲存配置。本樣本配置自訂網域名為mydomain
。apiVersion: v1 kind: ConfigMap metadata: name: config-domain namespace: knative-serving data: mydomain.com: "" # 將example.com替換為mydomain.com。實際業務中需替換成您自己的服務網域名稱。
執行以下命令,查看網域名稱是否生效。
# 需將命令中的helloworld-go替換成實際業務中的Knative服務名。 kubectl get route helloworld-go --output jsonpath="{.status.url}" | awk -F/ '{print $3}'
預期輸出:
helloworld-go.default.mydomain.com
預期結果表明,自訂網域名已生效。
將Knative網關IP設定到對應的網域名稱解析。
執行以下命令,通過自訂網域名訪問Knative服務。
curl http://helloworld-go.default.mydomain.com
預期輸出:
Hello Knative!
預期結果表明,自訂網域名已配置成功,並且Knative服務已經正確地響應了請求。
自訂單個服務的網域名稱
如果您需要為某個Knative服務定義特定的網域名稱,可以按照如下方式配置。
控制台
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Knative頁面,單擊服務管理頁簽,找到並單擊目標服務的名稱。
在目標服務詳情頁面,單擊右上方的訪問設定,根據頁面提示為目標服務配置自訂網域名。
kubectl
如果您需要為某個Service定義特定的網域名稱,同時希望使用Ingress控制器進行靈活的路由配置,可以使用DomainMapping實現。
執行以下命令,建立
helloworld.knative.top.yaml
檔案。vi helloworld.knative.top.yaml
在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
執行以下命令,將
helloworld.knative.top.yaml
中定義的資源應用到Kubernetes叢集中。kubectl apply -f helloworld.knative.top.yaml
預期輸出:
domainmapping.serving.knative.dev/helloworld.knative.top created
執行以下命令,驗證DomainMapping。
kubectl get domainmapping helloworld.knative.top
預期輸出:
NAME URL READY REASON helloworld.knative.top http://helloworld.knative.top True
預期結果表明,自訂網域名已生效。
將Knative網關IP設定到對應的網域名稱解析。
執行以下命令,通過自訂網域名訪問Knative服務。
curl http://helloworld.knative.top.mydomain.com
預期輸出:
Hello Knative!
預期結果表明,自訂網域名已配置成功,並且Knative服務已經正確地響應了請求。
相關文檔
您可以為自訂網域名配置相應的HTTPS認證,請參見配置HTTPS認證訪問。
您可以在Knative中部署gRPC服務,提升網路效率,請參見在Knative中部署gRPC服務。