redhat-developer / redhat-developer/gitops-operator
resource.customizations.ignoreDifferences doesn't save configuration
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 188
- Forks
- 359
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 18
Description
Describe the bug
I have an argocd application that contains a following configmap:
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: >
{"apiVersion":"v1","data":{},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/instance":"kubecost","config.openshift.io/inject-trusted-cabundle":"true"},"name":"ca-inject","namespace":"kubecost"}}
creationTimestamp: '2023-12-16T02:24:01Z'
labels:
app.kubernetes.io/instance: kubecost
config.openshift.io/inject-trusted-cabundle: 'true'
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
'f:data':
'f:ca-bundle.crt': {}
manager: cluster-network-operator/configmap_ca
operation: Apply
time: '2023-12-16T02:24:01Z'
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
.: {}
'f:kubectl.kubernetes.io/last-applied-configuration': {}
'f:labels':
.: {}
'f:app.kubernetes.io/instance': {}
'f:config.openshift.io/inject-trusted-cabundle': {}
manager: argocd-controller
operation: Update
time: '2023-12-16T02:24:01Z'
name: ca-inject
namespace: kubecost
resourceVersion: '351766'
uid: 0955b2d6-daf1-4544-b392-926fc14b960b
As you can see cluster-network-operator/configmap_ca is managing that data field and inject openshift ca-bundle content there. Since that field is different from desired it is always out of sync. I tried to add a configuration to my ArgoCD CDR instance in these ways, but that configmap still out of sync. Also I've spotted that ArgoCD doesn't save a piece of the configuration:
# input:
resourceIgnoreDifferences:
all:
managedFieldsManagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# saved
resourceIgnoreDifferences:
all:
managedFieldsManagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# in configmap
resource.customizations.ignoreDifferences.all: |
jqpathexpressions: []
jsonpointers: []
managedfieldsmanagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# input
resourceIgnoreDifferences:
resourceIdentifiers:
- group: ''
kind: configmaps
customization:
managedFieldManagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# saved
resourceIgnoreDifferences:
resourceIdentifiers:
- customization: {}
group: ''
kind: configmaps
# configmap
resource.customizations.ignoreDifferences.configmaps: |
jqpathexpressions: []
jsonpointers: []
managedfieldsmanagers: []
# input
resourceIgnoreDifferences:
resourceIdentifiers:
- group: ''
kind: configmaps
customization:
jsonpointers:
- /data
managedFieldManagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# saved
resourceIgnoreDifferences:
resourceIdentifiers:
- customization:
jsonPointers:
- /data
group: ''
kind: configmaps
# configmap
resource.customizations.ignoreDifferences.configmaps: |
jqpathexpressions: []
jsonpointers:
- /data
managedfieldsmanagers: []
# input
resourceIgnoreDifferences:
resourceIdentifiers:
- group: ''
kind: configmaps
customization:
jqPathExpressions:
- .data
managedFieldManagers:
- cluster-network-operator/configmap_ca
- cluster-network-operator
- configmap_ca
# saved
resourceIgnoreDifferences:
resourceIdentifiers:
- customization:
jqPathExpressions:
- .data
group: ''
kind: configmaps
# configmap
resource.customizations.ignoreDifferences.configmaps: |
jqpathexpressions:
- .data
jsonpointers: []
managedfieldsmanagers: []
Expected behavior
Configmap is in sync
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No file, test, or code entry point is named; begin by tracing how resourceIgnoreDifferences is serialized into resource.customizations.ignoreDifferences and how the resulting Argo CD customization is consumed. Done means managedFieldManagers are preserved and the ConfigMap reports in sync for the shown configurations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100