当不同的 pod 启动失败时,AGIC 删除工作后端

AGIC deletes a working backend when a different pod fails to start

部署概览

我们正在使用 Azure 网关入口控制器 (AGIC) 在应用程序网关上为我们的 AKS 集群中的入口自动创建侦听器和后端

ArgoCD部署到K8s集群创建应用。 当 ArgoCD 创建应用程序时,它会从为我们的应用程序实例创建的 git 存储库中提取一个 helm chart,并创建应用程序

该应用程序是通过对 Azure 存储文件文件夹的持久卷声明来创建的,以存储用户数据。它还为已标记的应用程序获取入口,以便 AGIC 在 App Gateway 中创建它。

当一切正常时,一切都很好。我可以在一个主机名上访问我的 argocd,并在它们的主机名上访问我部署的每个应用程序 - 所有这些都是通过 AGIC

维护的应用程序网关

问题描述

当我的 pods 之一无法启动时(因为 PVC 使用的存储密钥不正确),然后 AGIC 更新应用程序网关以删除我的 argoCD 后端,它仍然可以正常工作。

AGIC 删除 我的工作 ARGOCD 后端。

如果我删除失败的 pod,AGIC 会在应用程序网关上再次为 ArgoCD 部署我的 HTTP 后端。

问题:

  1. 我如何解决为什么 AGIC 删除ArgoCD 后端?是否有我可以启用的日志,它会详细告诉我它是如何做出部署决策的?
  2. 我可以在 AKS 上做些什么来尝试将 ArgoCD 与 pods 分开,以便 AGIC 在 pod 损坏时不会删除 ArgoCD 的后端吗? (它们已经部署在不同的命名空间中)

AGIC 中似乎存在一个错误,当某些后端已解析而某些后端未解析时,只要列表中的第一个后端未解析,就不会创建其余后端。

我已在 Github 中记录以下问题以修复它:https://github.com/Azure/application-gateway-kubernetes-ingress/issues/1054

我通过将 AGIC 的日志记录参数设置为级别 5、查看日志并将日志消息与该存储库中的 AGIC 源代码进行匹配来发现这一点。