Skip to content

ArgoCD appears to be removing field from gateway.networking.k8s.io Gateway resource #25519

@thandleman-r7

Description

@thandleman-r7

Checklist:

  • I've searched in the docs and FAQ for my answer: https://bit.ly/argocd-faq.
  • I've included steps to reproduce the bug.
  • I've pasted the output of argocd version.

ArgoCD seems to be removing spec.infrastructure.parametersRef.group from the resource below. This causes the following error:

Gateway.gateway.networking.k8s.io "egress-istio-waypoint" is invalid: [spec.infrastructure.parametersRef.group: Required value, <nil>: Invalid value: "null": some validation rules were not checked because the object was invalid; correct the existing errors to complete validation]

Gateway:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: egress-istio-waypoint
  namespace: istio-egress
  annotations:
    argocd.argoproj.io/sync-options: Validate=false
spec:
  gatewayClassName: istio-waypoint
  infrastructure:
    parametersRef:
      group: ""
      kind: ConfigMap
      name:  egress-istio-waypoint-config
  listeners:
    - name: mesh
      protocol: HBONE
      port:  15008

ConfigMap:

apiVersion: v1
data:
  deployment: |
    spec:
      replicas: 3
      template:
        spec:
          containers:
            - name: istio-proxy
              resources: 
                limits:
                  memory: 256Mi
                requests:
                  cpu: 50m
                  memory: 128Mi
  horizontalPodAutoscaler: |
    spec:
      minReplicas: 2
      maxReplicas: 9
      scaleTargetRef:
        kind: Deployment
        name: egress
      metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              type: Utilization
              averageUtilization: 80
  podDisruptionBudget: |
    spec:
      minAvailable: 1
      matchLabels:
        gateway.networking.k8s.io/gateway-name: egress
kind: ConfigMap
metadata:
  name: egress-istio-waypoint-config
  namespace: istio-egress

This issue does not occur when trying to apply this resource via kubectl apply, so it appears to be something specific within ArgoCD. Additionally, the issue is not that it is treating an empty string as invalid. Any value placed in Group results in the same error.

Server-Side for Client-Side apply does not seem to be a factor here, as both result in the same error.

Here are some Istio docs showing support for this field: https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment

Here are the Gateway API docs that mention this field:

ArgoCD Version: v3.1.8+becb020
ArgoCD Cluster Version: v1.33.5-eks-3cfe0ce
Destination Cluster Version: v1.33.5-eks-3cfe0ce

To Reproduce

  1. Install the Gateway API CRDs to target cluster: kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.1/standard-install.yaml
  2. Install Istio in Ambient mode to target cluster: istioctl install --set profile=ambient --skip-confirmation
  3. Create a simple Application that generates the above Gateway and ConfigMap.

Expected behavior

ArgoCD should create the gateway as specified.

Screenshots

Diff shown in ArgoCD UI:

Image

Error:

Image

Version

argocd: v3.1.8+becb020
  BuildDate: 2025-09-30T15:33:46Z
  GitCommit: becb020064fe9be5381bf6e5818ff8587ca8f377
  GitTreeState: clean
  GoVersion: go1.24.6
  Compiler: gc
  Platform: linux/amd64

Logs

Couldn't find anything besides the error see in the UI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage/pendingThis issue needs further triage to be correctly classified

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions