如何在Bitnami ExternalDNS中使用label-filter过滤Kubernetes Ingress
问题根因与修复方案
你当前配置不生效是由多个参数配置错误导致的,修复如下:
错误点整理
- 参数名拼写错误:Bitnami ExternalDNS Chart的过滤参数为驼峰命名规则,正确参数是
labelFilter、annotationFilter,你使用的全小写labelfilter、annotationfilter无法被Chart识别,等于未配置任何过滤规则,因此会同步所有Ingress。 - 标签匹配规则写错:你配置的标签过滤规则为
ingre=externaldns,但实际你的Ingress携带的标签键是ingress,键名不匹配。 - 使用了非法格式引号:配置中的过滤值使用了中文全角引号
”,Shell解析时会识别为无效字符,导致规则失效。 - 重复配置冲突:你重复定义了
txtOwnerId参数,后定义的az-frontend-ak会覆盖前面的az-frontend-aks,会导致后续DNS记录所有权校验异常。
正确的Helm安装命令
helm install external-dns-frontend-sint bitnami/external-dns \ --wait \ --namespace externaldns \ --set txtOwnerId=az-frontend-aks \ --set provider=azure \ --set azure.resourceGroup=az-tools \ --set azure.tenantId=xxxxxxxxxxxxxxxxxxxxxxx \ --set azure.subscriptionId=xxxxxxxxxxxxxxxxxxxxxxxx \ --set azure.aadClientId=xxxxxxxxxxxxxxxxx \ --set azure.aadClientSecret=xxxxxxxxxxxxxxx \ --set azure.cloud=AzurePublicCloud \ --set policy=sync \ --set labelFilter="ingress=externaldns" \ --set annotationFilter="ingress=externaldns" \ --set domainFilters={azdns.test.com}
验证配置生效
安装完成后执行以下命令检查Pod启动参数,确认过滤规则已经注入:
kubectl -n externaldns get pods -l app.kubernetes.io/name=external-dns -o yaml | grep label-filter
返回结果包含--label-filter=ingress=externaldns即为配置成功。
如果你不需要按Annotation过滤,可以删除
annotationFilter相关配置,仅保留labelFilter即可满足需求。
内容的提问来源于stack exchange,提问作者Inforedaster
相关产品推荐
相关产品推荐

