所有為叢集外使用者或應用程式提供 HTTP 流量的 Kf 應用程式,都必須與網域名稱建立關聯。
Kf 有三個可設定網域的位置。依優先順序排列如下:
- 應用程式
- Spaces
kf
命名空間中的config-defaults
ConfigMap
config-defaults
ConfigMap
config-defaults
ConfigMap 會保留 Kf 的叢集全域設定,叢集管理員可以編輯這項設定。Spaces 控制器會讀取 ConfigMap 中的值,並修改相關設定。網域值會顯示在空間的 status.networkConfig.domains
欄位中。
如要修改 Kf 叢集的網域,請編輯 kf
命名空間中的 config-defaults
ConfigMap:
kubectl edit configmap config-defaults -n kf
新增或更新 spaceClusterDomain
鍵的項目,如下所示:
spaceClusterDomain: my-domain.com
如要驗證設定是否正確更新,請檢查空間中的網域值:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
輸出內容會與下列內容相似:
Getting Space some-space
some-space.my-domain.com
每個工作區都會在叢集網域前方加上專屬名稱。這麼做可避免應用程式之間發生衝突。
聊天室網域
空格是網域設定的權威位置。您可以將網域和子網域指派給各個工作區,供開發人員使用。設定網域的欄位為 spec.networkConfig.domains
。
使用 kf space
查看指派給工作區的網域:
kf space SPACE_NAME
在輸出結果中,Spec
欄位包含專屬的聊天室設定,而 Status
欄位則反映聊天室的設定,並附上叢集層級的預設值:
...
Spec:
Network Config:
Domains:
Domain: my-space.mycompany.com
...
Status:
Network Config:
Domains:
Domain: my-space.mycompany.com
Domain: my-space.prod.us-east1.kf.mycompany.com
使用 CLI 進行設定
kf
CLI 支援 Space 網域的變異。每個指令都會輸出舊版和新版設定之間的差異。
使用 kf configure-space append-domain
新增網域:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
使用 kf configure-space set-default-domain
新增或將現有網域設為預設網域:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
最後,移除網域:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
應用程式
應用程式可在設定中指定網域。系統會在 kf push
期間使用以下邏輯將路線對應至應用程式:
let current_routes = The set of routes already on the app
let manifest_routes = The set of routes defined by the manifest
let flag_routes = The set of routes supplied by the --route flag(s)
let no_route = Whether the manifest has no-route:true or --no-route is set
let random_route = Whether the manifest has random-route:true or --random-route is set
let new_routes = Union(current_routes, manifest_routes, flag_routes)
if new_routes.IsEmpty() then
if random_route then
new_routes.Add(CreateRandomRoute())
else
new_routes.Add(CreateDefaultRoute())
end
end
if no_route then
new_routes.RemoveAll()
end
return new_routes
如果應用程式未指定路徑,或要求隨機路徑,系統會使用該空間中的第一個網域。如果聊天室的第一個網域有所變更,使用預設網域的所有聊天室應用程式都會更新,以反映這項變更。
網域範本
Kf 支援在網域中替換變數。替換功能可讓您為每個 Space 自訂單一叢集內的網域,並對入站 IP 的變更做出反應。系統會針對網域中出現的 $(VARIABLE_NAME)
語法變數執行替換作業。
變數 | 說明 |
---|---|
CLUSTER_INGRESS_IP |
叢集入口的 IPV4 位址。 |
SPACE_NAME |
聊天室名稱。 |
範例
以下範例說明如何使用網域變數來支援各種不同的組織結構和叢集模式。
使用 nip.io 等萬用字元 DNS 服務:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
使用集中管理 DNS 的機構網域:
$(SPACE_NAME).cluster-name.example.com
自行管理 DNS 的團隊專用網域:
cluster-name.$(SPACE_NAME).example.com
叢集的網域 (含備援容錯和外部電路切換器):
$(SPACE_NAME)-failover.cluster-name.example.com
Kf 和 CF 的差異
- Kf 聊天室會在叢集層級網域前面加上聊天室名稱。
- Kf 不會檢查使用者指定路徑中的網域衝突。