本文簡單調研了騰訊云和華為云的關于ingress路徑匹配規則的實現的差異,了解這些,可以讓你的頭更大。
路徑匹配規則
目前官方k8s支持的路徑匹配規則只有以下三種類型,但不同的云廠商通過自己實現對應的ingress controller,往往還支持正則匹配等不同的路徑規則。
騰訊云ingress
本文主要調研了Tke的兩類ingress,分別是應用型CLB和Nginx ingress Controller,這兩類ingress在頁面創建時均不支持選擇路徑匹配規則,而二者關于路徑匹配規則的實現又有所差異,但二者在騰訊云頁面上創建出來的ingress的yaml中路徑匹配字段均是ImplementationSpecific
。
Nginx Ingress
騰訊云的nginx ingress類型是基于原生的Nginx ingress controller實現的。(別問我是怎么知道的)
參考了Nginx ingress的官方文檔,Nginx ingress 支持顯示指定Exact
和Prefix
,也支持通過annotation+ImplementationSpecific
的方式去隱式指定正則匹配規則(kubernetes.github.io/ingress-ngi… ),如下所示:
為什么在Tke頁面上創建出來的ingress默認就是ImplementationSpecific
規則,結合官方文檔上的描述,推測是因為ImplementationSpecific
比Exact
和Prefix
能夠兼容更多的字符類型(kubernetes.github.io/ingress-ngi… )。
騰訊云上創建出來的ingress轉發規則,默認的路徑匹配規則為ImplementationSpecific
,結合官方文檔說明以及測試驗證,確認默認情況下實際是按照前綴匹配規則來進行匹配的。
應用型CLB
按照騰訊云官方文檔上的描述(cloud.tencent.com/document/pr…),騰訊云上的應用型CLB支持通過配置含特定字符的路徑來使用不同的路徑匹配規則,具體如下所示:
如果是以/
開頭的話,按最長前綴匹配,優先精確匹配,而后模糊匹配。
Cce ingress
cce的ingress支持前綴匹配,精確匹配和正則匹配三種路徑匹配規則。按照官方文檔的描述(support.huaweicloud.com/cce_faq/cce…),cce是通過ingress中的property字段來標明路徑匹配規則,而這個property字段在社區的ingress上是沒有的。
因此,我們使用client-go創建ingress時是打上了這個annotation的,而在cce云上直接創建的ingress是沒有這個annotation的。
這里提供一段轉換的代碼供大家參考:
type ccePathType struct {
Host string `json:"host"`
Path string `json:"path"`
MatchMode string `json:"matchmode"`
}
var ingressProperty []ccePathType
for i := range ingress.Spec.Rules {
if ingress.Spec.Rules[i].HTTP != nil {
for j := range ingress.Spec.Rules[i].HTTP.Paths {
ingressProperty = append(ingressProperty, ccePathType{
Host: ingress.Spec.Rules[i].Host,
Path: ingress.Spec.Rules[i].HTTP.Paths[j].Path,
MatchMode: matchModeMap[string(*ingress.Spec.Rules[i].HTTP.Paths[j].PathType)],
})
ingress.Spec.Rules[i].HTTP.Paths[j].PathType = (*networkingv1.PathType)(&implementationSpecificPathType)
}
}
}
cceIngressPropertyValue, err := json.Marshal(ingressProperty)
if err != nil {
return err
}
meta.SetAnnotation(ingress, "kubernetes.io/ingress.property", string(cceIngressPropertyValue))
-
騰訊云
+關注
關注
0文章
216瀏覽量
16844 -
CLB
+關注
關注
0文章
29瀏覽量
5982 -
華為云
+關注
關注
3文章
2691瀏覽量
17590
原文標題:騰訊云和華為云的ingress路徑匹配規則把我繞暈了
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論