carvel-dev / carvel-dev/kapp

Kapp shows "update" operation for ConfigMap that has no changes

Open
#603 10 comments 0 reactions 0 assignees View on GitHub
bug carvel accepted priority/important-longterm
Dominant language
Go
Stars
1.1k
Forks
134
PR merge metrics
No merged PRs in 30d

Description

**What steps did you take:**

I have a simple, static ConfigMap where kapp insists that deploying the ConfigMap will result in an `update` operation, although the ConfigMap is exactly the same as the deployed one. If I deploy the file multiple times in a row, kapp still announces the `update` operation every time.

**What did you expect:**

When the ConfigMap has not changed, kapp should not show an `update` operation.

**Anything else you would like to add:**

Using `kapp deploy -c` shows the removal of an empty `metadata.annotations` element:

```
kapp deploy -a clustering -f configmap.yaml -c
Target cluster 'https://127.0.0.1:6443' (nodes: mngr1.censored 8+)

@@ update configmap/clustering-cacerts-m7b68mk2mm (v1) namespace: default @@
...
4776,4776 metadata:
4777 - annotations: {}
4778,4777 creationTimestamp: "2022-09-12T14:26:59Z"
4779,4778 labels:

Changes

Namespace Name Kind Age Op Op st. Wait to Rs Ri
default clustering-cacerts-m7b68mk2mm ConfigMap 16m update - reconcile ok -
```

I don't know where this `annotations` field comes from. The metadata of our ConfigMap does not include an `annotations` field:
```yaml
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/part-of: clustering
name: clustering-cacerts-m7b68mk2mm
namespace: default
```
Kapp seems to think that the absence of an `annotations` field is different from an *empty* one.

**Environment:**

- kapp version (use `kapp --version`): kapp version 0.52.0
- OS (e.g. from `/etc/os-release`): AlmaLinux 8.6 (Sky Tiger)
- Kubernetes version (use `kubectl version`): `Server Version: version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.1+k3s1", GitCommit:"0581808f5c160b0c0cafec5b8f20430835f34f44", GitTreeState:"clean", BuildDate:"2022-06-11T17:26:28Z", GoVersion:"go1.18.1", Compiler:"gc", Platform:"linux/amd64"}`

---
Vote on this request

This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.

👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"

We are also happy to receive and review Pull Requests if you want to help working on this issue.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.