nginx-ingress fluxcd HelmRelease 中的 loadBalancerIP 和注释在 azure AKS 上被忽略

loadBalancerIP and annotations in nginx-ingress fluxcd HelmRelease are ignored on azure AKS

我在 Azure AKS 集群上运行,其中 fluxcd 工作正常。 我正在尝试通过 fluxcd CDR HelmRelease 配置 nginx-ingress 图表。专门告诉 nginx-ingress 使用已经创建的静态 public IP,它位于另一个资源组中作为 AKS 节点资源组。

基础 AKS 服务主体在 ip 所在的资源组上具有网络贡献者角色。

使用以下 HelmRelease 配置文件时,将忽略 loadBalancerIP 属性(以及任何注释),并在 azure 中创建一个新的 public IP 并将其分配给 azure 负载均衡器。

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: helm-nginx-ingress
  namespace: nginx-ingress
spec:
  releaseName: nginx-ingress
  targetNamespace: nginx-ingress
  chart:
    repository: https://kubernetes-charts.storage.googleapis.com/
    name: nginx-ingress
    version: 1.24.4
  values:
    controller.service:
      loadBalancerIP: "12.234.162.41"
      annotations:
        service.beta.kubernetes.io/azure-load-balancer-resource-group: "name-of-resource-group"

为了让事情更简单,我还尝试了一个 ip,它直接存在于与 AKS 节点相同的资源组中(无济于事)。顺便说一句:从来没有错误。它只是忽略 属性 并创建一个新的 ip。

有趣的是,直接使用 helm 3 发布相同的图表(因此没有 fluxcd)工作完美,即使 ip 不在同一资源组的特殊情况也是如此:

helm upgrade nginx-ingress --install --wait --namespace nginx-ingress \
--set controller.service.loadBalancerIP="12.234.162.41" \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"="name-of-resource-group" \
stable/nginx-ingress

所以我猜问题出在 CDR HelmRelease 和值规范的翻译上。有人遇到过类似的问题吗?

AKS Kubernetes 版本:v1.14.8
fluxcd/flux 图片标签:1.17.0
本地 Helm 版本:v3.0.3

应该是这样的:

values:
  controller:
    service:
      loadBalancerIP: "12.234.162.41"
      xxx

https://github.com/helm/charts/blob/master/stable/nginx-ingress/values.yaml#L246