当其他Pod无法启动时,AGIC删除工作的后端

问题描述

部署概述

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

ArgoCD被部署到K8s集群以创建应用程序。 ArgoCD创建应用程序时,会从为该应用程序实例创建的git repo中提取头盔图表,并创建该应用程序

该应用的创建具有对Azure存储文件文件夹的持久卷声明以存储用户数据。它还会为带有标签的应用提供一个Ingress,以便AGIC在App Gateway中创建它。

一切正常时,一切都很好。我可以通过一个主机名访问argocd,并可以通过其主机名访问每个已部署的应用程序-全部通过AGIC维护的App Gateway

问题描述

当我的一个Pod无法启动(因为PVC使用的存储密钥不正确)时,AGIC将更新应用程序网关,以删除仍然正常运行的argoCD后端。

AGIC 删除我正在使用的ARGOCD后端。

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

问题:

  1. 如何解决为什么 AGIC移除ArgoCD后端?有没有我可以启用的日志,可以详细告诉我它是如何制定部署决策的?
  2. 在AKS上我可以做些什么,以尝试将ArgoCD从吊舱中分离出来,以便在吊舱损坏时AGIC不会移除ArgoCD的后端吗? (它们已经部署在不同的名称空间中)

解决方法

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

>

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

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