腾讯云和华为云的ingress路径匹配规则把我绕晕了

本文简单调研了腾讯云和华为云的关于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 []ccepathtypefor 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))

海信与亚马逊达成合作 首次在4K智能电视上搭载Alexa
OpenHarmony HDF传感器模型框架介绍与传感器驱动开发指导
数字科技是世界互联网大会的重要板块之一
英特尔:从手握方向盘到丢掉方向盘 安全始终为先
创盈芯TK11\-A0__容纳了我想象中的所有东西
腾讯云和华为云的ingress路径匹配规则把我绕晕了
启玄科技完成数千万Pre-B融资
Ohos-MPChart组件功能描述
便携式气体检测仪一般都应用在哪些领域之中
比科奇为其5G New Radio小基站SoC选用UltraSoC的系统驻留分析和监测IP
科技巨头和互联网大厂的监管大幕缓缓落下
京东服务接口的高可用设计方案分享
高集成度、低功耗CMMB解决方案及典型应用
多媒体视讯技术发展历程
关于电源布局布线
苹果也撒狗粮:iOS11新图标脱单了
感谢哈尔滨工业大学对我司HS-225B恒温恒湿试验箱的认可
APS自动排产-AP工厂高级计划
9个比较常用的cmd命令分享
谷歌调用Android TV许可协议棒杀亚马逊