[alibaba/higress]ingress资源中无status.loadBalancer.ingress字段,导致argocd无法通过健康检测

2024-10-18 541 views
5
环境信息

higress helm安装,版本1.3.5

测试步骤:

argocd集成使用yaml创建ingress资源,yaml文件如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    higress.io/destination: dev-gitops-webapp-svc.argocd-dev.svc.cluster.local:80
    higress.io/ignore-path-case: 'false'
    higress.io/ssl-redirect: 'true'
  labels:
    app.kubernetes.io/instance: gitops-webapp-demo-dev
    higress.io/domain_argocd-prod.local.irain.top: 'true'
    higress.io/resource-definer: higress
  name: dev-gitops-webapp
  namespace: higress-system
spec:
  ingressClassName: higress
  rules:
    - host: argocd-dev.local.irain.top
      http:
        paths:
          - backend:
              resource:
                apiGroup: networking.higress.io
                kind: McpBridge
                name: default
            path: /
            pathType: Prefix
  tls:
    - hosts:
        - argocd-dev.local.irain.top
      secretName: irain.top
问题现象

argocd创建Ingress资源后会去检测status.loadBalancer.ingress字段是否非空进而判断健康状态,但ingress并未自动填充导致健康认证一直不通过,但实际资源是可用的 image

2424d83d2c659a0c25bb9ce5a306f5f 但是若是使用ingress-nginx则会自动填充该字段以通过argocd健康检查 e9612509aa6b702920f904d7cd77c5c

请问是否有办法填充该字段或者有更好的方式使argocd与higress结合

回答

8

建议更新到最新的 2.0.0 再试一下。我本地实测是有这个信息的:

image

8

image 已更新到最新版本,但是此处还是没有,我的集群为本地VM部署的k8s集群,流量路径: web->haproxy:443->higress-gatway:3xxxx(NodePort端口) 发现目前已有流量路径不行后,我再按照官网文档参考[运维参数配置](https://higress.io/zh-cn/docs/user/configurations),开启higress-core.gateway.hostNetwork,让 Higress 监听本机端口,再通过其他软/硬负载均衡器转发给固定机器 IP,更改helm的values.yaml

USER-SUPPLIED VALUES:
global:
  local: true
higress-console:
  o11y:
    enabled: false
  service:
    type: NodePort
higress-core:
  controller:
    nodeSelector:
      role: master
    replicas: 3
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/control-plane
      operator: Exists
  gateway:
    replicas: 3
    nodeSelector:
      role: master
    hostNetwork: true
    service:
      type: LoadBalancer
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/control-plane
      operator: Exists

发现还是没有LoadBalancer IP,那么若是在不变化其他配置的情况下,argocd基于locadbalance检测,本地k8s集群好像只有安装MetalLB这个方法了?

5

那这个地方的问题就是,Higress Gateway 使用 LoadBalancer service 类型,但你们的 K8s 集群不支持 LoadBalancer。

4

MetalLB使用该方法后能获取到LoadBalancer进而实现argocd的ingress检测