Skip to content

Deletion of AppSet doesn't trigger deletion of owned Application #23723

@jared-wallace

Description

@jared-wallace

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.

Describe the bug

After an upgrade from 2.12 to 3.0.5, a delete of an AppSet sets the deletion timestamp, but the application that the AppSet owns is untouched - no deletion timestamp, and no apparent effort to delete it.

We noticed that a few times, after several hours, the deletion did complete.

The quickest way to resolve it is to restart the ApplicationSet Controller - that results in an immediate deletion of the Application, followed by the AppSet.

To Reproduce

I tried to get this setup in Kind, but I suspect our corporate proxy might be causing me grief. I am assuming this can be reproduced with the manifests I provide.

AppSet (redacted somewhat), showing the deletion timestamp

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  annotations:
    changeId: CHG27818975
    product.e.com/name: rcp-cpu-test
  creationTimestamp: "2025-07-09T22:02:09Z"
  deletionGracePeriodSeconds: 0
  deletionTimestamp: "2025-07-09T22:03:16Z"
  finalizers:
  - resources-finalizer.argocd.argoproj.io
  generation: 3
  labels:
    app.kubernetes.io/managed-by: rcp-api
    app.kubernetes.io/name: rcp-api-test-app
    appdata.e.com/name: rcp-api-test-app
    k8s.e.com/application: rcp-api-test-app
    k8s.e.com/cloud-provider: aws
    k8s.e.com/environment-scope: commerce
    k8s.e.com/environment-tier: test
    k8s.e.com/experience: advanced
    k8s.e.com/instance: advanced
    k8s.e.com/island: runtime
    k8s.e.com/pci-category: oos
    k8s.e.com/region: us-east-1
    k8s.e.com/short-name: rcp
    k8s.e.com/suffix: test-us-east-1
    product.e.com/name: rcp-cpu-test
  name: rcp-api-test-app-test-us-east-1-advanced
  namespace: argocd
  resourceVersion: "1451671523"
  uid: 94035066-47d6-4589-8759-242979574c02
spec:
  generators:
  - matrix:
      generators:
      - clusters:
          selector:
            matchExpressions:
            - key: k8s.e.com/short-name
              operator: NotIn
              values:
              - rcp-core
              - rcp-core-sandbox
              - rcp-core-dev
            matchLabels:
              k8s.e.com/cloud-provider: aws
              k8s.e.com/environment-scope: commerce
              k8s.e.com/environment-tier: test
              k8s.e.com/island: runtime
              k8s.e.com/pci-category: oos
              k8s.e.com/region: us-east-1
              k8s.e.com/short-name: rcp
          template:
            metadata: {}
            spec:
              destination: {}
              project: ""
      - list:
          elements:
          - application:
              instance: advanced
              name: rcp-api-test-app
              release: test-us-east-1
              releaseName: rcp-api-test-app-advanced
            cluster:
              account: '{{ index .metadata.annotations "account" }}'
              accountAlias: '{{ index .metadata.annotations "accountAlias" }}'
              appSubnets: '{{ index .metadata.annotations "appSubnets" }}'
              cloudProvider: '{{ index .metadata.annotations "cloudProvider" }}'
              cluster: '{{ index .metadata.annotations "cluster" }}'
              clusterFullName: '{{ index .metadata.annotations "clusterFullName" }}'
              dnsSuffix: '{{ index .metadata.annotations "dnsSuffix" }}'
              environmentCategory: '{{ index .metadata.annotations "environmentCategory"
                }}'
              environmentScope: '{{ index .metadata.annotations "environmentScope"
                }}'
              environmentTier: '{{ index .metadata.annotations "environmentTier" }}'
              fcAccountEnv: '{{ index .metadata.annotations "fcAccountEnv" }}'
              ingressSubnets: '{{ index .metadata.annotations "ingressSubnets" }}'
              island: '{{ index .metadata.annotations "island" }}'
              oidcUrl: '{{ index .metadata.annotations "oidcIssuerUrl" }}'
              pciCategory: '{{ index .metadata.annotations "pciCategory" }}'
              region: '{{ index .metadata.annotations "region" }}'
              segment: '{{ index .metadata.annotations "segment" }}'
              vpcId: '{{ index .metadata.annotations "vpcId" }}'
            egdata:
              artifactoryHost: '{{ index .metadata.annotations "artifactoryHost" }}'
              vaultIslandNamespace: '{{ index .metadata.annotations "vaultIslandNamespace"
                }}'
              vaultNamespace: '{{ index .metadata.annotations "vaultNamespace" }}'
          template:
            metadata: {}
            spec:
              destination: {}
              project: ""
      template:
        metadata: {}
        spec:
          destination: {}
          project: ""
  goTemplate: true
  syncPolicy: {}
  template:
    metadata:
      annotations:
        changeId: CHG27818975
        product.e.com/name: rcp-cpu-test
      labels:
        app.kubernetes.io/managed-by: rcp-api
        app.kubernetes.io/name: rcp-api-test-app
        appdata.e.com/name: rcp-api-test-app
        k8s.e.com/application: rcp-api-test-app
        k8s.e.com/cloud-provider: aws
        k8s.e.com/environment-scope: commerce
        k8s.e.com/environment-tier: test
        k8s.e.com/experience: advanced
        k8s.e.com/instance: advanced
        k8s.e.com/island: runtime
        k8s.e.com/pci-category: oos
        k8s.e.com/region: us-east-1
        k8s.e.com/short-name: rcp
        k8s.e.com/suffix: test-us-east-1
        product.e.com/name: rcp-cpu-test
      name: rcp-api-test-app-advanced-{{ .metadata.annotations.clusterFullName }}
      namespace: argocd
    spec:
      destination:
        name: '{{ .metadata.annotations.clusterFullName }}'
        namespace: rcp-cpu-test
      project: rcp-api-test-app
      revisionHistoryLimit: 1
      sources:
      - chart: paved-road-service
        helm:
          parameters:
          - forceString: true
            name: global.account
            value: '{{ .cluster.account }}'
          - name: global.accountAlias
            value: '{{ .cluster.accountAlias }}'
          - name: global.appSubnets
            value: '{{ .cluster.appSubnets }}'
          - name: global.cloudProvider
            value: '{{ .cluster.cloudProvider }}'
          - name: global.clusterShortName
            value: '{{ .cluster.cluster }}'
          - name: global.clusterFullName
            value: '{{ .cluster.clusterFullName }}'
          - name: global.dnsSuffix
            value: '{{ .cluster.dnsSuffix }}'
          - name: global.environmentCategory
            value: '{{ .cluster.environmentCategory }}'
          - name: global.environmentScope
            value: '{{ .cluster.environmentScope }}'
          - name: global.environmentTier
            value: '{{ .cluster.environmentTier }}'
          - name: global.fcAccountEnv
            value: '{{ .cluster.fcAccountEnv }}'
          - name: global.helmTests.enabled
            value: "false"
          - name: global.ingressSubnets
            value: '{{ .cluster.ingressSubnets }}'
          - name: global.island
            value: '{{ .cluster.island }}'
          - name: global.pciCategory
            value: '{{ .cluster.pciCategory }}'
          - name: global.region
            value: '{{ .cluster.region }}'
          - name: global.segment
            value: '{{ .cluster.segment }}'
          - name: global.oidcUrl
            value: '{{ .cluster.oidcUrl }}'
          - name: global.vault.namespace
            value: '{{ .egdata.vaultNamespace }}'
          - name: global.vault.islandNamespace
            value: '{{ .egdata.vaultIslandNamespace }}'
          - name: global.vpcId
            value: '{{ .cluster.vpcId }}'
          - name: global.artifactoryHost
            value: artifactory-edge.e.biz
          - name: global.artifactoryRepository
            value: internal-docker-virtual
          - name: global.application
            value: rcp-api-test-app
          - forceString: true
            name: global.release
            value: test-us-east-1
          - name: global.instance
            value: advanced
          releaseName: rcp-api-test-app-advanced
          values: |
            datadog:
              openmetrics:
                - endpoint: "/metrics"
                  port: 8080
                  metricsToFetch: []
            deployment:
              replicas:
                max: 2
                min: 1
              resources:
                limits:
                  cpu: "0.3"
                  memory: "1024Mi"
                requests:
                  cpu: "0.3"
                  memory: "1024Mi"
            global:
              application: rcp-api-test-app
              version: 1a2268af50cbd3ef56fe585f1b3d933a9dc15994
              portMappings:
                - name: http
                  port: 8080
                  pathPrefixes:
                    - /
            paved-road-auth:
              workloadAuth:
                server:
                  enableDryRun: true
            management:
              livenessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
              readinessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
        repoURL: artifactory-edge.e.biz/all-oci-virtual
        targetRevision: 13.21.2
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        retry:
          backoff:
            duration: 5m
            factor: 2
            maxDuration: 30m
          limit: 4
        syncOptions:
        - CreateNamespace=true
        - RespectIgnoreDifferences=false
status:
  conditions:
  - lastTransitionTime: "2025-07-09T22:02:09Z"
    message: Successfully generated parameters for all Applications
    reason: ApplicationSetUpToDate
    status: "False"
    type: ErrorOccurred
  - lastTransitionTime: "2025-07-09T22:02:09Z"
    message: Successfully generated parameters for all Applications
    reason: ParametersGenerated
    status: "True"
    type: ParametersGenerated
  - lastTransitionTime: "2025-07-09T22:02:09Z"
    message: ApplicationSet up to date
    reason: ApplicationSetUpToDate
    status: "True"
    type: ResourcesUpToDate
  resources:
  - group: argoproj.io
    health:
      lastTransitionTime: "2025-07-09T22:03:01Z"
      status: Healthy
    kind: Application
    name: rcp-api-test-app-advanced-runtime-test-rcp-us-east-1
    namespace: argocd
    status: Synced
    version: v1alpha1

Application (somewhat redacted)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  annotations:
    changeId: CHG27818975
    notified.notifications.argoproj.io: '{"sync-operation-change:[0].ViP4fdsA_UkVGfTOrAqWTa8q8Wk:datadog-events:":1752098529}'
    product.e.com/name: rcp-cpu-test
  creationTimestamp: "2025-07-09T22:02:09Z"
  finalizers:
  - resources-finalizer.argocd.argoproj.io
  generation: 16
  labels:
    app.kubernetes.io/managed-by: rcp-api
    app.kubernetes.io/name: rcp-api-test-app
    appdata.e.com/name: rcp-api-test-app
    k8s.e.com/application: rcp-api-test-app
    k8s.e.com/cloud-provider: aws
    k8s.e.com/environment-scope: commerce
    k8s.e.com/environment-tier: test
    k8s.e.com/experience: advanced
    k8s.e.com/instance: advanced
    k8s.e.com/island: runtime
    k8s.e.com/pci-category: oos
    k8s.e.com/region: us-east-1
    k8s.e.com/short-name: rcp
    k8s.e.com/suffix: test-us-east-1
    product.e.com/name: rcp-cpu-test
  name: rcp-api-test-app-advanced-runtime-test-rcp-us-east-1
  namespace: argocd
  ownerReferences:
  - apiVersion: argoproj.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: ApplicationSet
    name: rcp-api-test-app-test-us-east-1-advanced
    uid: 94035066-47d6-4589-8759-242979574c02
  resourceVersion: "1451681675"
  uid: ae9b1575-ec8e-41ef-94af-2e7638cf323e
spec:
  destination:
    name: runtime-test-rcp-us-east-1
    namespace: rcp-cpu-test
  project: rcp-api-test-app
  revisionHistoryLimit: 1
  sources:
  - chart: paved-road-service
    helm:
      parameters:
      - forceString: true
        name: global.account
        value: "344791879147"
      - name: global.accountAlias
        value: runtime-test
      - name: global.appSubnets
        value: subnet-09db0fa4bb983ab35,subnet-0fc4c46eb36e37653,subnet-05c5532bfd6ebf6cc
      - name: global.cloudProvider
        value: aws
      - name: global.clusterShortName
        value: rcp
      - name: global.clusterFullName
        value: runtime-test-rcp-us-east-1
      - name: global.dnsSuffix
        value: rcp.us-east-1.runtime.test.e-aws.net
      - name: global.environmentCategory
        value: test
      - name: global.environmentScope
        value: commerce
      - name: global.environmentTier
        value: test
      - name: global.fcAccountEnv
        value: lab
      - name: global.helmTests.enabled
        value: "false"
      - name: global.ingressSubnets
        value: subnet-0058d93ed83749b65,subnet-0512e425c9b344fb8,subnet-096dae0d0a9e0d54e
      - name: global.island
        value: runtime
      - name: global.pciCategory
        value: oos
      - name: global.region
        value: us-east-1
      - name: global.segment
        value: runtime
      - name: global.oidcUrl
        value: oidc.eks.us-east-1.amazonaws.com/id/F88FFF58B9A204AD295B89567BB1B4C6
      - name: global.vault.namespace
        value: lab/islands
      - name: global.vault.islandNamespace
        value: runtime
      - name: global.vpcId
        value: vpc-009df3012365b2b0a
      - name: global.artifactoryHost
        value: artifactory-edge.e.biz
      - name: global.artifactoryRepository
        value: internal-docker-virtual
      - name: global.application
        value: rcp-api-test-app
      - forceString: true
        name: global.release
        value: test-us-east-1
      - name: global.instance
        value: advanced
      releaseName: rcp-api-test-app-advanced
      values: |
        datadog:
          openmetrics:
            - endpoint: "/metrics"
              port: 8080
              metricsToFetch: []
        deployment:
          replicas:
            max: 2
            min: 1
          resources:
            limits:
              cpu: "0.3"
              memory: "1024Mi"
            requests:
              cpu: "0.3"
              memory: "1024Mi"
        global:
          application: rcp-api-test-app
          version: 1a2268af50cbd3ef56fe585f1b3d933a9dc15994
          portMappings:
            - name: http
              port: 8080
              pathPrefixes:
                - /
        paved-road-auth:
          workloadAuth:
            server:
              enableDryRun: true
        management:
          livenessProbe:
            httpGet:
              path: /ping
              port: 8080
            initialDelaySeconds: 30
          readinessProbe:
            httpGet:
              path: /ping
              port: 8080
            initialDelaySeconds: 30
    repoURL: artifactory-edge.e.biz/all-oci-virtual
    targetRevision: 13.21.2
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    retry:
      backoff:
        duration: 5m
        factor: 2
        maxDuration: 30m
      limit: 4
    syncOptions:
    - CreateNamespace=true
    - RespectIgnoreDifferences=false
status:
  controllerNamespace: argocd
  health:
    lastTransitionTime: "2025-07-09T22:03:01Z"
    status: Healthy
  history:
  - deployStartedAt: "2025-07-09T22:02:09Z"
    deployedAt: "2025-07-09T22:02:11Z"
    id: 0
    initiatedBy:
      automated: true
    revisions:
    - 13.21.2
    source:
      repoURL: ""
    sources:
    - chart: paved-road-service
      helm:
        parameters:
        - forceString: true
          name: global.account
          value: "344791879147"
        - name: global.accountAlias
          value: runtime-test
        - name: global.appSubnets
          value: subnet-09db0fa4bb983ab35,subnet-0fc4c46eb36e37653,subnet-05c5532bfd6ebf6cc
        - name: global.cloudProvider
          value: aws
        - name: global.clusterShortName
          value: rcp
        - name: global.clusterFullName
          value: runtime-test-rcp-us-east-1
        - name: global.dnsSuffix
          value: rcp.us-east-1.runtime.test.e-aws.net
        - name: global.environmentCategory
          value: test
        - name: global.environmentScope
          value: commerce
        - name: global.environmentTier
          value: test
        - name: global.fcAccountEnv
          value: lab
        - name: global.helmTests.enabled
          value: "false"
        - name: global.ingressSubnets
          value: subnet-0058d93ed83749b65,subnet-0512e425c9b344fb8,subnet-096dae0d0a9e0d54e
        - name: global.island
          value: runtime
        - name: global.pciCategory
          value: oos
        - name: global.region
          value: us-east-1
        - name: global.segment
          value: runtime
        - name: global.oidcUrl
          value: oidc.eks.us-east-1.amazonaws.com/id/F88FFF58B9A204AD295B89567BB1B4C6
        - name: global.vault.namespace
          value: lab/islands
        - name: global.vault.islandNamespace
          value: runtime
        - name: global.vpcId
          value: vpc-009df3012365b2b0a
        - name: global.artifactoryHost
          value: artifactory-edge.e.biz
        - name: global.artifactoryRepository
          value: internal-docker-virtual
        - name: global.application
          value: rcp-api-test-app
        - forceString: true
          name: global.release
          value: test-us-east-1
        - name: global.instance
          value: advanced
        releaseName: rcp-api-test-app-advanced
        values: |
          datadog:
            openmetrics:
              - endpoint: "/metrics"
                port: 8080
                metricsToFetch: []
          deployment:
            replicas:
              max: 2
              min: 1
            resources:
              limits:
                cpu: "0.3"
                memory: "1024Mi"
              requests:
                cpu: "0.3"
                memory: "1024Mi"
          global:
            application: rcp-api-test-app
            version: 1a2268af50cbd3ef56fe585f1b3d933a9dc15994
            portMappings:
              - name: http
                port: 8080
                pathPrefixes:
                  - /
          paved-road-auth:
            workloadAuth:
              server:
                enableDryRun: true
          management:
            livenessProbe:
              httpGet:
                path: /ping
                port: 8080
              initialDelaySeconds: 30
            readinessProbe:
              httpGet:
                path: /ping
                port: 8080
              initialDelaySeconds: 30
      repoURL: artifactory-edge.e.biz/all-oci-virtual
      targetRevision: 13.21.2
  operationState:
    finishedAt: "2025-07-09T22:02:11Z"
    message: successfully synced (all tasks run)
    operation:
      initiatedBy:
        automated: true
      retry:
        backoff:
          duration: 5m
          factor: 2
          maxDuration: 30m
        limit: 4
      sync:
        prune: true
        revisions:
        - 13.21.2
        syncOptions:
        - CreateNamespace=true
        - RespectIgnoreDifferences=false
    phase: Succeeded
    startedAt: "2025-07-09T22:02:09Z"
    syncResult:
      resources:
      - group: ""
        hookPhase: Running
        kind: ServiceAccount
        message: serviceaccount/rcp-api-test-app-test-us-east-1-advanced-template
          created
        name: rcp-api-test-app-test-us-east-1-advanced-template
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1
      - group: ""
        hookPhase: Running
        kind: Service
        message: service/rcp-api-test-app-advanced created
        name: rcp-api-test-app-advanced
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1
      - group: apps
        hookPhase: Running
        kind: Deployment
        message: deployment.apps/rcp-api-test-app-test-us-east-1-advanced-template
          created
        name: rcp-api-test-app-test-us-east-1-advanced-template
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1
      - group: autoscaling
        hookPhase: Running
        kind: HorizontalPodAutoscaler
        message: horizontalpodautoscaler.autoscaling/rcp-api-test-app-advanced created
        name: rcp-api-test-app-advanced
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v2
      - group: networking.istio.io
        hookPhase: Running
        kind: VirtualService
        message: virtualservice.networking.istio.io/rcp-api-test-app-advanced created
        name: rcp-api-test-app-advanced
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1alpha3
      - group: networking.istio.io
        hookPhase: Running
        kind: Gateway
        message: gateway.networking.istio.io/rcp-api-test-app-advanced created
        name: rcp-api-test-app-advanced
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1alpha3
      - group: security.istio.io
        hookPhase: Running
        kind: PeerAuthentication
        message: peerauthentication.security.istio.io/rcp-api-test-app-advanced created
        name: rcp-api-test-app-advanced
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1beta1
      - group: security.istio.io
        hookPhase: Running
        kind: AuthorizationPolicy
        message: authorizationpolicy.security.istio.io/rcp-api-test-app-advanced-allow-authenticated
          created
        name: rcp-api-test-app-advanced-allow-authenticated
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1beta1
      - group: networking.istio.io
        hookPhase: Running
        kind: VirtualService
        message: virtualservice.networking.istio.io/rcp-api-test-app-advanced-global
          created
        name: rcp-api-test-app-advanced-global
        namespace: rcp-cpu-test
        status: Synced
        syncPhase: Sync
        version: v1alpha3
      - group: cert-manager.io
        hookPhase: Running
        kind: Certificate
        message: certificate.cert-manager.io/rcp-api-test-app-rcp-cpu-test--test-us-east-1-advanced-cert
          created
        name: rcp-api-test-app-rcp-cpu-test--test-us-east-1-advanced-cert
        namespace: istio-system
        status: Synced
        syncPhase: Sync
        version: v1
      revision: ""
      revisions:
      - 13.21.2
      source:
        repoURL: ""
      sources:
      - chart: paved-road-service
        helm:
          parameters:
          - forceString: true
            name: global.account
            value: "344791879147"
          - name: global.accountAlias
            value: runtime-test
          - name: global.appSubnets
            value: subnet-09db0fa4bb983ab35,subnet-0fc4c46eb36e37653,subnet-05c5532bfd6ebf6cc
          - name: global.cloudProvider
            value: aws
          - name: global.clusterShortName
            value: rcp
          - name: global.clusterFullName
            value: runtime-test-rcp-us-east-1
          - name: global.dnsSuffix
            value: rcp.us-east-1.runtime.test.e-aws.net
          - name: global.environmentCategory
            value: test
          - name: global.environmentScope
            value: commerce
          - name: global.environmentTier
            value: test
          - name: global.fcAccountEnv
            value: lab
          - name: global.helmTests.enabled
            value: "false"
          - name: global.ingressSubnets
            value: subnet-0058d93ed83749b65,subnet-0512e425c9b344fb8,subnet-096dae0d0a9e0d54e
          - name: global.island
            value: runtime
          - name: global.pciCategory
            value: oos
          - name: global.region
            value: us-east-1
          - name: global.segment
            value: runtime
          - name: global.oidcUrl
            value: oidc.eks.us-east-1.amazonaws.com/id/F88FFF58B9A204AD295B89567BB1B4C6
          - name: global.vault.namespace
            value: lab/islands
          - name: global.vault.islandNamespace
            value: runtime
          - name: global.vpcId
            value: vpc-009df3012365b2b0a
          - name: global.artifactoryHost
            value: artifactory-edge.e.biz
          - name: global.artifactoryRepository
            value: internal-docker-virtual
          - name: global.application
            value: rcp-api-test-app
          - forceString: true
            name: global.release
            value: test-us-east-1
          - name: global.instance
            value: advanced
          releaseName: rcp-api-test-app-advanced
          values: |
            datadog:
              openmetrics:
                - endpoint: "/metrics"
                  port: 8080
                  metricsToFetch: []
            deployment:
              replicas:
                max: 2
                min: 1
              resources:
                limits:
                  cpu: "0.3"
                  memory: "1024Mi"
                requests:
                  cpu: "0.3"
                  memory: "1024Mi"
            global:
              application: rcp-api-test-app
              version: 1a2268af50cbd3ef56fe585f1b3d933a9dc15994
              portMappings:
                - name: http
                  port: 8080
                  pathPrefixes:
                    - /
            paved-road-auth:
              workloadAuth:
                server:
                  enableDryRun: true
            management:
              livenessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
              readinessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
        repoURL: artifactory-edge.e.biz/all-oci-virtual
        targetRevision: 13.21.2
  reconciledAt: "2025-07-09T22:06:54Z"
  resourceHealthSource: appTree
  resources:
  - kind: Service
    name: rcp-api-test-app-advanced
    namespace: rcp-cpu-test
    status: Synced
    version: v1
  - kind: ServiceAccount
    name: rcp-api-test-app-test-us-east-1-advanced-template
    namespace: rcp-cpu-test
    status: Synced
    version: v1
  - group: apps
    kind: Deployment
    name: rcp-api-test-app-test-us-east-1-advanced-template
    namespace: rcp-cpu-test
    status: Synced
    version: v1
  - group: autoscaling
    kind: HorizontalPodAutoscaler
    name: rcp-api-test-app-advanced
    namespace: rcp-cpu-test
    status: Synced
    version: v2
  - group: cert-manager.io
    kind: Certificate
    name: rcp-api-test-app-rcp-cpu-test--test-us-east-1-advanced-cert
    namespace: istio-system
    status: Synced
    version: v1
  - group: networking.istio.io
    kind: Gateway
    name: rcp-api-test-app-advanced
    namespace: rcp-cpu-test
    status: Synced
    version: v1alpha3
  - group: networking.istio.io
    kind: VirtualService
    name: rcp-api-test-app-advanced
    namespace: rcp-cpu-test
    status: Synced
    version: v1alpha3
  - group: networking.istio.io
    kind: VirtualService
    name: rcp-api-test-app-advanced-global
    namespace: rcp-cpu-test
    status: Synced
    version: v1alpha3
  - group: security.istio.io
    kind: AuthorizationPolicy
    name: rcp-api-test-app-advanced-allow-authenticated
    namespace: rcp-cpu-test
    status: Synced
    version: v1beta1
  - group: security.istio.io
    kind: PeerAuthentication
    name: rcp-api-test-app-advanced
    namespace: rcp-cpu-test
    status: Synced
    version: v1beta1
  sourceHydrator: {}
  sourceTypes:
  - Helm
  summary:
    images:
    - 782273268637.dkr.ecr.us-east-1.amazonaws.com/public-docker-virtual/istio/proxyv2:1.22.8-distroless
    - artifactory-edge.e.biz/internal-docker-virtual/library/rcp-api-test-app:1a2268af50cbd3ef56fe585f1b3d933a9dc15994
  sync:
    comparedTo:
      destination:
        name: runtime-test-rcp-us-east-1
        namespace: rcp-cpu-test
      source:
        repoURL: ""
      sources:
      - chart: paved-road-service
        helm:
          parameters:
          - forceString: true
            name: global.account
            value: "344791879147"
          - name: global.accountAlias
            value: runtime-test
          - name: global.appSubnets
            value: subnet-09db0fa4bb983ab35,subnet-0fc4c46eb36e37653,subnet-05c5532bfd6ebf6cc
          - name: global.cloudProvider
            value: aws
          - name: global.clusterShortName
            value: rcp
          - name: global.clusterFullName
            value: runtime-test-rcp-us-east-1
          - name: global.dnsSuffix
            value: rcp.us-east-1.runtime.test.e-aws.net
          - name: global.environmentCategory
            value: test
          - name: global.environmentScope
            value: commerce
          - name: global.environmentTier
            value: test
          - name: global.fcAccountEnv
            value: lab
          - name: global.helmTests.enabled
            value: "false"
          - name: global.ingressSubnets
            value: subnet-0058d93ed83749b65,subnet-0512e425c9b344fb8,subnet-096dae0d0a9e0d54e
          - name: global.island
            value: runtime
          - name: global.pciCategory
            value: oos
          - name: global.region
            value: us-east-1
          - name: global.segment
            value: runtime
          - name: global.oidcUrl
            value: oidc.eks.us-east-1.amazonaws.com/id/F88FFF58B9A204AD295B89567BB1B4C6
          - name: global.vault.namespace
            value: lab/islands
          - name: global.vault.islandNamespace
            value: runtime
          - name: global.vpcId
            value: vpc-009df3012365b2b0a
          - name: global.artifactoryHost
            value: artifactory-edge.e.biz
          - name: global.artifactoryRepository
            value: internal-docker-virtual
          - name: global.application
            value: rcp-api-test-app
          - forceString: true
            name: global.release
            value: test-us-east-1
          - name: global.instance
            value: advanced
          releaseName: rcp-api-test-app-advanced
          values: |
            datadog:
              openmetrics:
                - endpoint: "/metrics"
                  port: 8080
                  metricsToFetch: []
            deployment:
              replicas:
                max: 2
                min: 1
              resources:
                limits:
                  cpu: "0.3"
                  memory: "1024Mi"
                requests:
                  cpu: "0.3"
                  memory: "1024Mi"
            global:
              application: rcp-api-test-app
              version: 1a2268af50cbd3ef56fe585f1b3d933a9dc15994
              portMappings:
                - name: http
                  port: 8080
                  pathPrefixes:
                    - /
            paved-road-auth:
              workloadAuth:
                server:
                  enableDryRun: true
            management:
              livenessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
              readinessProbe:
                httpGet:
                  path: /ping
                  port: 8080
                initialDelaySeconds: 30
        repoURL: artifactory-edge.e.biz/all-oci-virtual
        targetRevision: 13.21.2
    revisions:
    - 13.21.2
    status: Synced

argocd-cm config map, in case that helps, lightly redacted:

apiVersion: v1
data:
  accounts.rcpapi: apiKey, login
  accounts.rollback-controller: apiKey,login
  accounts.teleport-token-refresher: apiKey
  accounts.venafi-token-refresher: apiKey
  admin.enabled: "true"
  application.instanceLabelKey: argocd.argoproj.io/instance
  application.resourceTrackingMethod: annotation+label
  application.sync.impersonation.enabled: "false"
  controller.log.level: debug
  exec.enabled: "false"
  globalProjects: |
    - projectName: global-default-app-permissions
      labelSelector:
        matchExpressions:
          - key: argocd.egroup.com/default-app-permissions
            operator: In
            values:
              - enabled
    - projectName: global-default-contributor-permissions
      labelSelector:
        matchExpressions:
          - key: argocd.egroup.com/default-contributor-permissions
            operator: In
            values:
              - enabled
  oidc.config: |
    name: Okta
    issuer: https://egroup.okta.com
    clientID: 0oa16cd99qkgHZ2qi358
    clientSecret: $argocd-okta-oidc:oidc.auth0.clientSecret
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}}
  resource.compareoptions: |
    ignoreDifferencesOnResourceUpdates: true
  resource.customizations: |
    argoproj.io/Application:
      health.lua: |
        hs = {}
        hs.status = "Progressing"
        hs.message = ""
        if obj.status ~= nil then
          if obj.status.health ~= nil then
            hs.status = obj.status.health.status
            if obj.status.health.message ~= nil then
              hs.message = obj.status.health.message
            end
          end
        end
        return hs
    keda.sh/ScaledObject:
      health.lua: |
        -- from https://github.com/argoproj/argo-cd/blob/master/resource_customizations/keda.sh/ScaledObject/health.lua, but we keep status as healhty if condition.type = "Paused"
        hs = {}
        healthy = false
        degraded = false
        suspended = false
        if obj.status ~= nil then
          if obj.status.conditions ~= nil then
            for i, condition in ipairs(obj.status.conditions) do
              if condition.status == "False" and condition.type == "Ready" then
                hs.message = condition.message
                degraded = true
              end
              if condition.status == "True" and condition.type == "Ready" then
                hs.message = condition.message
                healthy = true
              end
              if condition.status == "True" and condition.type == "Paused" then
                hs.message = condition.message
                suspended = true
              end
            end
          end
        end
        if degraded == true then
          hs.status = "Degraded"
          return hs
        elseif healthy == true and suspended == false then
          hs.status = "Healthy"
          return hs
        elseif healthy == true and suspended == true then
          -- We don't set suspended to true because this may block Progressive Deployment's method of managing multiple ScaledObjects
          hs.status = "Healthy"
          return hs
        end
        hs.status = "Progressing"
        hs.message = "Creating HorizontalPodAutoscaler Object"
        return hs
    egroup.com/RolePolicy:
      health.lua: |
        if obj.status == nil or obj.status.conditions == nil or obj.status.observed == nil then
            return {status = "Progressing", message="Waiting on dependencies or current resource to be healthy"}
        else
            for key, value in pairs(obj.status.observed) do
                local ready = false
                local synced = false
                local suspended = false
                for _, condition in ipairs(value.conditions) do
                    if condition.type == "Ready" then
                        ready = condition.status == "True"
                    elseif condition.type == "Synced" then
                        synced = condition.status == "True"
                        if condition.reason == "ReconcileError" then
                            synced_message = condition.message
                        elseif condition.reason == "ReconcilePaused" then
                            suspended = true
                            suspended_message = condition.reason
                        end
                    end
                end
                if ready ~= true or synced ~= true then
                    if synced == false and suspended == true then
                        return {status="Suspended", message="Waiting on " .. (key or "rsc") .. " due to " .. (suspended_message or "'no message reported'")}
                    elseif ready == false and synced == true and suspended == false then
                        return {status="Progressing", message="Waiting on " .. (key or "rsc") .. " to become available"}
                    else
                        return {status="Degraded", message="Waiting on " .. (key or "rsc") .. " due to " .. (synced_message or "'no message reported'")}
                    end
                end
            end
            return {status="Healthy", message="all observed resources have status 'Healthy'"}
        end
    egroup.com/S3BucketPolicy:
      health.lua: |
        local hs = {}
        if obj.status ~= nil then
          if obj.status.conditions ~= nil then
            local ready = false
            local synced = false
            local suspended = false
            for i, condition in ipairs(obj.status.conditions) do

              if condition.type == "Ready" then
                ready = condition.status == "True"
                ready_message = condition.reason
              elseif condition.type == "Synced" then
                synced = condition.status == "True"
                if condition.reason == "ReconcileError" then
                  synced_message = condition.message
                elseif condition.reason == "ReconcilePaused" then
                  suspended = true
                  suspended_message = condition.reason
                end
              end
            end
            if ready and synced then
              hs.status = "Healthy"
              hs.message = ready_message
            elseif synced == false and suspended == true then
              hs.status = "Suspended"
              hs.message = suspended_message
            elseif ready == false and synced == true and suspended == false then
              hs.status = "Progressing"
              hs.message = "Waiting for Bucket to be available"
            else
              hs.status = "Degraded"
              hs.message = synced_message
            end
            return hs
          end
        end
        hs.status = "Progressing"
        hs.message = "Waiting for Bucket to be created"
        return hs
    egroup.com/RCPQueue:
      health.lua: |
        if obj.status == nil or obj.status.conditions == nil or obj.status.observed == nil then
            return {status = "Progressing", message="Waiting on queue to be healthy"}
        else
            local ready = false
            local synced = false
            local suspended = false
            local hs = {}
            for key, value in pairs(obj.status.observed) do
                for _, condition in ipairs(value.conditions) do
                    if condition.type == "Ready" then
                        ready = condition.status == "True"
                        ready_message = condition.reason
                    elseif condition.type == "Synced" then
                        synced = condition.status == "True"
                        if condition.reason == "ReconcileError" then
                            synced_message = condition.message
                        elseif condition.reason == "ReconcilePaused" then
                            suspended = true
                            suspended_message = condition.reason
                        end
                    end
                    if ready and synced then
                        hs.status = "Healthy"
                        hs.message = ready_message
                    elseif synced == false and suspended == true then
                        hs.status = "Suspended"
                        hs.message = suspended_message
                    elseif ready == false and synced == true and suspended == false then
                        hs.status = "Progressing"
                        hs.message = "Waiting for queue to be available"
                    else
                        hs.status = "Degraded"
                        hs.message = synced_message
                    end
                end
                return hs
            end
        end
  resource.customizations.ignoreDifferences.Service: |
    jqPathExpressions:
    - '.metadata.annotations | to_entries | map(select(.key!="aws-load-balancer-additional-resource-tags")) | .[].value'
  resource.customizations.ignoreDifferences.admissionregistration.k8s.io_MutatingWebhookConfiguration: |
    jqPathExpressions:
    - '.webhooks[]?.clientConfig.caBundle'
  resource.customizations.ignoreDifferences.admissionregistration.k8s.io_ValidatingWebhookConfiguration: |
    jqPathExpressions:
    - '.webhooks[]?.clientConfig.caBundle'
  resource.customizations.ignoreDifferences.all: |
    managedFieldsManagers:
    - kube-controller-manager
    jsonPointers:
    - /spec/replicas
    - /spec/forProvider/tags
    jqPathExpressions:
    - '.spec.template.spec.containers[]?.resources'
    - '.spec.jobTemplate.spec.template.spec.containers[]?.resources'
  resource.customizations.ignoreDifferences.apiextensions.k8s.io_CustomResourceDefinition: |
    jsonPointers:
    - /status/storedVersions
  resource.customizations.ignoreDifferences.apps_Deployment: |
    jsonPointers:
    - /spec/replicas
    - /spec/template/metadata/annotations/sidecar.istio.io~1bootstrapOverride
    jqPathExpressions:
    - '.metadata.annotations | to_entries | map(select(.key!="workload-auth.k8s.egroup.com/egress-hosts")) | .[].value'
  resource.customizations.ignoreDifferences.autoscaling_HorizontalPodAutoscaler: |
    jsonPointers:
    - /metadata/annotations
    - /spec/minReplicas
    - /spec/maxReplicas
  resource.customizations.ignoreDifferences.iam.aws.crossplane.io_Policy: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.iam.aws.crossplane.io_Role: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.iam.aws.crossplane.io_RolePolicyAttachment: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.keda.sh_ScaledObject: |
    jsonPointers:
    - /spec/minReplicaCount
    - /spec/maxReplicaCount
  resource.customizations.ignoreDifferences.networking.istio.io_VirtualService: |
    jsonPointers:
    - /metadata/annotations
    - /spec/http
    - /spec/gateways
    - /spec/hosts
  resource.customizations.ignoreDifferences.policy_PodDisruptionBudget: |
    jsonPointers:
    - /spec/minAvailable
    - /spec/maxUnavailable
  resource.customizations.ignoreDifferences.progressivedeployment.egroup.com_ProgressiveDeployment: |
    jsonPointers:
    - /spec
    - /status
  resource.customizations.ignoreDifferences.s3.aws.crossplane.io_Bucket: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.s3.aws.crossplane.io_BucketPolicy: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.serving.kserve.io_InferenceService: |
    jsonPointers:
      - /spec
  resource.customizations.ignoreDifferences.sns.aws.crossplane.io_Subscription: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.sns.aws.crossplane.io_Topic: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreDifferences.sqs.aws.crossplane.io_Queue: |
    jsonPointers:
      - /spec/providerRef
  resource.customizations.ignoreResourceUpdates.ConfigMap: |
    jqPathExpressions:
      # Ignore the cluster-autoscaler status
      - '.metadata.annotations."cluster-autoscaler.kubernetes.io/last-updated"'
      # Ignore the annotation of the legacy Leases election
      - '.metadata.annotations."control-plane.alpha.kubernetes.io/leader"'
  resource.customizations.ignoreResourceUpdates.Endpoints: |
    jsonPointers:
      - /metadata
      - /subsets
  resource.customizations.ignoreResourceUpdates.all: |
    jsonPointers:
    - /metadata/generation
    - /metadata/resourceVersion
    - /status/conditions
    - /status/lastScheduleTime
    - /status/lastSuccessfulTime
  resource.customizations.ignoreResourceUpdates.apps_ReplicaSet: |
    jqPathExpressions:
      - '.metadata.annotations."deployment.kubernetes.io/desired-replicas"'
      - '.metadata.annotations."deployment.kubernetes.io/max-replicas"'
      - '.metadata.annotations."rollout.argoproj.io/desired-replicas"'
  resource.customizations.ignoreResourceUpdates.argoproj.io_Application: |
    jqPathExpressions:
      - '.metadata.annotations."notified.notifications.argoproj.io"'
      - '.metadata.annotations."argocd.argoproj.io/refresh"'
      - '.metadata.annotations."argocd.argoproj.io/hydrate"'
      - '.operation'
  resource.customizations.ignoreResourceUpdates.argoproj.io_Rollout: |
    jqPathExpressions:
      - '.metadata.annotations."notified.notifications.argoproj.io"'
  resource.customizations.ignoreResourceUpdates.autoscaling_HorizontalPodAutoscaler: |
    jqPathExpressions:
      - '.metadata.annotations."autoscaling.alpha.kubernetes.io/behavior"'
      - '.metadata.annotations."autoscaling.alpha.kubernetes.io/conditions"'
      - '.metadata.annotations."autoscaling.alpha.kubernetes.io/metrics"'
      - '.metadata.annotations."autoscaling.alpha.kubernetes.io/current-metrics"'
  resource.customizations.ignoreResourceUpdates.discovery.k8s.io_EndpointSlice: |
    jsonPointers:
      - /metadata
      - /endpoints
      - /ports
  resource.exclusions: |
    - apiGroups:
      - "*"
      kinds:
      - ClusterPolicyReport
      - EphemeralReport
      - EndpointSlice
      - PolicyReport
      - ClusterEphemeralReport
      - Node
      - Endpoints
      clusters:
      - "*"
  resource.ignoreResourceUpdatesEnabled: "true"
  server.rbac.disableApplicationFineGrainedRBACInheritance: "false"
  server.rbac.log.enforce.enable: "false"
  statusbadge.enabled: "true"
  statusbadge.url: https://argocd.example.com/
  timeout.hard.reconciliation: 0s
  timeout.reconciliation: 180s
  ui.bannercontent: dev-us-east-1 - us-east-1
  ui.bannerpermanent: "true"
  ui.cssurl: ./custom/custom.styles.css
  url: https://argocd.rcp-core-dev.us-east-1.runtime.test.e-aws.net
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"accounts.rcpapi":"apiKey,login","accounts.teleport-token-refresher":"apiKey","accounts.venafi-token-refresher":"apiKey","admin.enabled":"true","application.instanceLabelKey":"argocd.argoproj.io/instance","application.resourceTrackingMethod":"annotation+label","controller.log.level":"debug","exec.enabled":"false","globalProjects":"- projectName: global-default-app-permissions\n  labelSelector:\n    matchExpressions:\n      - key: argocd.egroup.com/default-app-permissions\n        operator: In\n        values:\n          - enabled\n- projectName: global-default-contributor-permissions\n  labelSelector:\n    matchExpressions:\n      - key: argocd.egroup.com/default-contributor-permissions\n        operator: In\n        values:\n          - enabled\n","oidc.config":"name: Okta\nissuer: https://egroup.okta.com\nclientID: 0oa16cd99qkgHZ2qi358\nclientSecret: $argocd-okta-oidc:oidc.auth0.clientSecret\nrequestedScopes: [\"openid\", \"profile\", \"email\", \"groups\"]\nrequestedIDTokenClaims: {\"groups\": {\"essential\": true}}\n","resource.compareoptions":"ignoreDifferencesOnResourceUpdates: true\n","resource.customizations":"argoproj.io/Application:\n  health.lua: |\n    hs = {}\n    hs.status = \"Progressing\"\n    hs.message = \"\"\n    if obj.status ~= nil then\n      if obj.status.health ~= nil then\n        hs.status = obj.status.health.status\n        if obj.status.health.message ~= nil then\n          hs.message = obj.status.health.message\n        end\n      end\n    end\n    return hs\nkeda.sh/ScaledObject:\n  health.lua: |\n    -- from https://github.com/argoproj/argo-cd/blob/master/resource_customizations/keda.sh/ScaledObject/health.lua, but we keep status as healhty if condition.type = \"Paused\"\n    hs = {}\n    healthy = false\n    degraded = false\n    suspended = false\n    if obj.status ~= nil then\n      if obj.status.conditions ~= nil then\n        for i, condition in ipairs(obj.status.conditions) do\n          if condition.status == \"False\" and condition.type == \"Ready\" then\n            hs.message = condition.message\n            degraded = true\n          end\n          if condition.status == \"True\" and condition.type == \"Ready\" then\n            hs.message = condition.message\n            healthy = true\n          end\n          if condition.status == \"True\" and condition.type == \"Paused\" then\n            hs.message = condition.message\n            suspended = true\n          end\n        end\n      end\n    end\n    if degraded == true then\n      hs.status = \"Degraded\"\n      return hs\n    elseif healthy == true and suspended == false then\n      hs.status = \"Healthy\"\n      return hs\n    elseif healthy == true and suspended == true then\n      -- We don't set suspended to true because this may block Progressive Deployment's method of managing multiple ScaledObjects\n      hs.status = \"Healthy\"\n      return hs\n    end\n    hs.status = \"Progressing\"\n    hs.message = \"Creating HorizontalPodAutoscaler Object\"\n    return hs\negroup.com/RolePolicy:\n  health.lua: |\n    if obj.status == nil or obj.status.conditions == nil or obj.status.observed == nil then\n        return {status = \"Progressing\", message=\"Waiting on dependencies or current resource to be healthy\"}\n    else\n        for key, value in pairs(obj.status.observed) do\n            local ready = false\n            local synced = false\n            local suspended = false\n            for _, condition in ipairs(value.conditions) do\n                if condition.type == \"Ready\" then\n                    ready = condition.status == \"True\"\n                elseif condition.type == \"Synced\" then\n                    synced = condition.status == \"True\"\n                    if condition.reason == \"ReconcileError\" then\n                        synced_message = condition.message\n                    elseif condition.reason == \"ReconcilePaused\" then\n                        suspended = true\n                        suspended_message = condition.reason\n                    end\n                end\n            end\n            if ready ~= true or synced ~= true then\n                if synced == false and suspended == true then\n                    return {status=\"Suspended\", message=\"Waiting on \" .. (key or \"rsc\") .. \" due to \" .. (suspended_message or \"'no message reported'\")}\n                elseif ready == false and synced == true and suspended == false then\n                    return {status=\"Progressing\", message=\"Waiting on \" .. (key or \"rsc\") .. \" to become available\"}\n                else\n                    return {status=\"Degraded\", message=\"Waiting on \" .. (key or \"rsc\") .. \" due to \" .. (synced_message or \"'no message reported'\")}\n                end\n            end\n        end\n        return {status=\"Healthy\", message=\"all observed resources have status 'Healthy'\"}\n    end\negroup.com/S3BucketPolicy:\n  health.lua: |\n    local hs = {}\n    if obj.status ~= nil then\n      if obj.status.conditions ~= nil then\n        local ready = false\n        local synced = false\n        local suspended = false\n        for i, condition in ipairs(obj.status.conditions) do\n\n          if condition.type == \"Ready\" then\n            ready = condition.status == \"True\"\n            ready_message = condition.reason\n          elseif condition.type == \"Synced\" then\n            synced = condition.status == \"True\"\n            if condition.reason == \"ReconcileError\" then\n              synced_message = condition.message\n            elseif condition.reason == \"ReconcilePaused\" then\n              suspended = true\n              suspended_message = condition.reason\n            end\n          end\n        end\n        if ready and synced then\n          hs.status = \"Healthy\"\n          hs.message = ready_message\n        elseif synced == false and suspended == true then\n          hs.status = \"Suspended\"\n          hs.message = suspended_message\n        elseif ready == false and synced == true and suspended == false then\n          hs.status = \"Progressing\"\n          hs.message = \"Waiting for Bucket to be available\"\n        else\n          hs.status = \"Degraded\"\n          hs.message = synced_message\n        end\n        return hs\n      end\n    end\n    hs.status = \"Progressing\"\n    hs.message = \"Waiting for Bucket to be created\"\n    return hs\negroup.com/RCPQueue:\n  health.lua: |\n    if obj.status == nil or obj.status.conditions == nil or obj.status.observed == nil then\n        return {status = \"Progressing\", message=\"Waiting on queue to be healthy\"}\n    else\n        local ready = false\n        local synced = false\n        local suspended = false\n        local hs = {}\n        for key, value in pairs(obj.status.observed) do\n            for _, condition in ipairs(value.conditions) do\n                if condition.type == \"Ready\" then\n                    ready = condition.status == \"True\"\n                    ready_message = condition.reason\n                elseif condition.type == \"Synced\" then\n                    synced = condition.status == \"True\"\n                    if condition.reason == \"ReconcileError\" then\n                        synced_message = condition.message\n                    elseif condition.reason == \"ReconcilePaused\" then\n                        suspended = true\n                        suspended_message = condition.reason\n                    end\n                end\n                if ready and synced then\n                    hs.status = \"Healthy\"\n                    hs.message = ready_message\n                elseif synced == false and suspended == true then\n                    hs.status = \"Suspended\"\n                    hs.message = suspended_message\n                elseif ready == false and synced == true and suspended == false then\n                    hs.status = \"Progressing\"\n                    hs.message = \"Waiting for queue to be available\"\n                else\n                    hs.status = \"Degraded\"\n                    hs.message = synced_message\n                end\n            end\n            return hs\n        end\n    end\n","resource.customizations.ignoreDifferences.Service":"jsonPointers:\n- /metadata/annotations\n","resource.customizations.ignoreDifferences.admissionregistration.k8s.io_MutatingWebhookConfiguration":"jqPathExpressions:\n- '.webhooks[]?.clientConfig.caBundle'\n","resource.customizations.ignoreDifferences.admissionregistration.k8s.io_ValidatingWebhookConfiguration":"jqPathExpressions:\n- '.webhooks[]?.clientConfig.caBundle'\n","resource.customizations.ignoreDifferences.all":"managedFieldsManagers:\n- kube-controller-manager\njsonPointers:\n- /spec/replicas\n- /spec/forProvider/tags\njqPathExpressions:\n- '.spec.template.spec.containers[]?.resources'\n- '.spec.jobTemplate.spec.template.spec.containers[]?.resources'\n","resource.customizations.ignoreDifferences.apiextensions.k8s.io_CustomResourceDefinition":"jsonPointers:\n- /status/storedVersions\n","resource.customizations.ignoreDifferences.apps_Deployment":"jsonPointers:\n- /metadata/annotations\n- /spec/replicas\n","resource.customizations.ignoreDifferences.autoscaling_HorizontalPodAutoscaler":"jsonPointers:\n- /metadata/annotations\n- /spec/minReplicas\n- /spec/maxReplicas\n","resource.customizations.ignoreDifferences.iam.aws.crossplane.io_Policy":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.iam.aws.crossplane.io_Role":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.iam.aws.crossplane.io_RolePolicyAttachment":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.keda.sh_ScaledObject":"jsonPointers:\n- /spec/minReplicaCount\n- /spec/maxReplicaCount\n","resource.customizations.ignoreDifferences.networking.istio.io_VirtualService":"jsonPointers:\n- /metadata/annotations\n- /spec/http\n- /spec/gateways\n- /spec/hosts\n","resource.customizations.ignoreDifferences.policy_PodDisruptionBudget":"jsonPointers:\n- /spec/minAvailable\n- /spec/maxUnavailable\n","resource.customizations.ignoreDifferences.progressivedeployment.egroup.com_ProgressiveDeployment":"jsonPointers:\n- /spec\n- /status\n","resource.customizations.ignoreDifferences.s3.aws.crossplane.io_Bucket":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.s3.aws.crossplane.io_BucketPolicy":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.serving.kserve.io_InferenceService":"jsonPointers:\n  - /spec\n","resource.customizations.ignoreDifferences.sns.aws.crossplane.io_Subscription":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.sns.aws.crossplane.io_Topic":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreDifferences.sqs.aws.crossplane.io_Queue":"jsonPointers:\n  - /spec/providerRef\n","resource.customizations.ignoreResourceUpdates.all":"jsonPointers:\n- /metadata/generation\n- /metadata/resourceVersion\n- /status/conditions\n- /status/lastScheduleTime\n- /status/lastSuccessfulTime\n","resource.exclusions":"- apiGroups:\n  - \"*\"\n  kinds:\n  - ClusterPolicyReport\n  - EphemeralReport\n  - EndpointSlice\n  - PolicyReport\n  - ClusterEphemeralReport\n  - Node\n  - Endpoints\n  clusters:\n  - \"*\"\n","resource.ignoreResourceUpdatesEnabled":"true","server.rbac.log.enforce.enable":"false","statusbadge.enabled":"true","statusbadge.url":"https://argocd.example.com/","timeout.hard.reconciliation":"0s","timeout.reconciliation":"180s","ui.bannercontent":"dev-us-east-1 - us-east-1","ui.bannerpermanent":"true","ui.cssurl":"./custom/custom.styles.css","url":"https://argocd.rcp-core-dev.us-east-1.runtime.test.e-aws.net"},"kind":"ConfigMap","metadata":{"annotations":{"meta.helm.sh/release-name":"argocd","meta.helm.sh/release-namespace":"argocd"},"creationTimestamp":"2024-04-19T10:05:41Z","labels":{"app.kubernetes.io/component":"server","app.kubernetes.io/instance":"argocd","app.kubernetes.io/managed-by":"Helm","app.kubernetes.io/name":"argocd-cm","app.kubernetes.io/part-of":"argocd","app.kubernetes.io/version":"v2.12.7","helm.sh/chart":"argo-cd-7.6.12","k8slens-edit-resource-version":"v1"},"name":"argocd-cm","namespace":"argocd","resourceVersion":"1254666363","uid":"ca664c6c-98e1-4b9a-bfbf-bb0f2ba5f188"}}
    meta.helm.sh/release-name: argocd
    meta.helm.sh/release-namespace: argocd
  creationTimestamp: "2024-04-19T10:05:41Z"
  labels:
    app.kubernetes.io/component: server
    app.kubernetes.io/instance: argocd
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
    app.kubernetes.io/version: v3.0.5
    helm.sh/chart: argo-cd-8.0.16
    k8slens-edit-resource-version: v1
  name: argocd-cm
  namespace: argocd
  resourceVersion: "1478717097"
  uid: ca664c6c-98e1-4b9a-bfbf-bb0f2ba5f188

Expected behavior

Deletes ought to be pretty much immediate.

Screenshots

Version

argocd-server: v3.0.5+af9ebac

Logs

Logs, again redacted somewhat. These are from the same app, in a different environment/cluster. Timeline:

13:15:24 - appset created
13:18:11 - appset deletion performed (deletion timestamp set, app unaffected)
13:21:23 - appset controller restarted, app and appset disappear

"target" cluster (where the Application landed):

full-target-cluster-logs.csv

control plane cluster, from argocd namespace only:

full-argocd-namespace-logs.csv

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions