K8s中HAProxy Ingress配置backend-server-naming=pod不生效问题咨询
你使用的控制器镜像与参考的配置文档所属项目不匹配,是所有配置不生效的根本原因。你部署的是HAProxy Technologies官方维护的haproxytech/kubernetes-ingress控制器,而你参考的backend-server-naming、session-cookie-*等配置项,属于社区独立维护的另一款HAProxy Ingress控制器的专属配置,二者配置体系完全不互通。
方案1:继续使用当前haproxytech官方控制器
替换ConfigMap中的配置为官方控制器对应参数即可:
kind: ConfigMap metadata: name: haproxy-ingress namespace: haproxy-controller data: server-ssl: "true" scale-server-slots: "2" # 后端服务器命名匹配Pod名称 server-name-format: "%pod_name%" # Session Cookie完整配置,无需额外用snippet覆盖 cookie-persistence: "LFR_SRV" cookie-persistence-attributes: "indirect nocache insert maxidle 10m httponly secure"
修改后重启HAProxy控制器Pod,重新生成的配置中即可看到后端服务器名称替换为Pod名,Cookie参数也会直接写入默认配置段,无需snippet重复定义。
方案2:切换为社区版HAProxy Ingress控制器
如果你需要使用原参考文档的配置体系,将Deployment中的控制器镜像替换为社区版镜像即可:
containers: - name: haproxy-ingress image: quay.io/jcmoraisjr/haproxy-ingress # 其余启动参数保持不变
替换后你原有写的backend-server-naming: "pod"、session-cookie-*相关配置都会正常生效。
内容的提问来源于stack exchange,提问作者Marc W.
相关产品推荐
相关产品推荐

