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服務已經正確地響應了請求。
自訂單個服務的網域名稱和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:160e4dc8Rewrite 重寫 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相關文檔
為自訂網域名配置相應的HTTPS認證,請參見配置HTTPS認證訪問。
在Knative中部署gRPC服務,提升網路效率,請參見在Knative中部署gRPC服務。