argoproj / argo-cd

Declarative Continuous Deployment for Kubernetes
https://argo-cd.readthedocs.io
Apache License 2.0
16.45k stars 4.97k forks source link

server-side-diff with server-side-apply not applying changes #18251

Open sstarcher opened 2 weeks ago

sstarcher commented 2 weeks ago

Describe the bug

When server side diff and server side apply are turned on manifest diffs are not always detected and applied.

To Reproduce

See files at bottom

Expected behavior

I would expect argo to detect the diff in the ports array and remove the prometheus ports

Version

2.10.7+b060053

Live Manifest

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: app
    meta.helm.sh/release-namespace: app
  labels:
    app.kubernetes.io/instance: app
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: app
    app.kubernetes.io/part-of: app
    app.kubernetes.io/version: 2.0.0
    helm.sh/chart: app-2.0.0
  name: app
  namespace: app
  resourceVersion: '186013631'
  uid: b85dd3d8-0411-4f96-8314-ee6438688939
spec:
  ports:
    - name: http
      nodePort: 30171
      port: 80
      protocol: TCP
      targetPort: http
    - name: prometheus-http
      nodePort: 32577
      port: 2112
      protocol: TCP
      targetPort: prometheus-http
  selector:
    app.kubernetes.io/instance: app
    app.kubernetes.io/name: app
  sessionAffinity: None
  type: NodePort

Desired Manifest

apiVersion: v1
kind: Service
metadata:
  annotations:
  labels:
    app.kubernetes.io/instance: app
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: app
    app.kubernetes.io/part-of: app
    app.kubernetes.io/version: 2.0.0
    helm.sh/chart: app-2.0.0
  name: app
  namespace: app
spec:
  ports:
    - name: http
      nodePort: null
      port: 80
      protocol: TCP
      targetPort: http
  selector:
    app.kubernetes.io/instance: app
    app.kubernetes.io/name: app
  sessionAffinity: None
  type: NodePort