safeguard from adoption of a resource by kapp
- Dominant language
- Go
- Stars
- 1.1k
- Forks
- 134
- PR merge metrics
- No merged PRs in 30d
Description
This morning `kapp` created major havoc on the cluster when I was trying it out
Deployment command:
```
helmfile -e sandbox template | kapp -y deploy -a postgres -f -
```
`helmfile` is a wrapper on top of help, and the `helmfile -e sandbox template` generates definitions for **four objects**, all objects listed below __except the first one__. I am not sure why `kapp` thinks it needs to update the `postgres/PostgresVersion` resource.
```
Namespace Name Kind Conds. Age Op Wait to Rs Ri
(cluster) postgres PostgresVersion - 5m update reconcile ok -
pg2 postgres Postgres - - create reconcile - -
^ postgres-gcs-secret Secret - - create reconcile - -
^ postgres-init ConfigMap - - create reconcile - -
^ postgres-secret Secret - - create reconcile - -
Op: 4 create, 0 delete, 1 update, 0 noop
Wait to: 5 reconcile, 0 delete, 0 noop
```
I then ran
```
kapp delete -a postgres
```
and as you can see `kapp` decided to delete the `postgres/PostgresVersion` resource it didn't create
```
Namespace Name Kind Conds. Age Op Wait to Rs Ri
(cluster) postgres PostgresVersion - 13m delete delete ok -
pg2 postgres AppBinding - 7m - delete ok -
^ postgres Endpoints - 7m - delete ok -
^ postgres Postgres - 7m delete delete ok -
^ postgres Role - 7m - delete ok -
^ postgres RoleBinding - 7m - delete ok -
^ postgres Service - 7m - delete ok -
^ postgres ServiceAccount - 7m - delete ok -
^ postgres StatefulSet - 7m - delete ok -
^ postgres-gcs-secret Secret - 7m delete delete ok -
^ postgres-init ConfigMap - 7m delete delete ok -
^ postgres-replicas Endpoints - 7m - delete ok -
^ postgres-replicas Service - 7m - delete ok -
^ postgres-secret Secret - 7m delete delete ok -
^ postgres-snapshot Role - 7m - delete ok -
^ postgres-snapshot RoleBinding - 7m - delete ok -
^ postgres-snapshot ServiceAccount - 7m - delete ok -
Op: 0 create, 5 delete, 0 update, 12 noop
Wait to: 0 reconcile, 17 delete, 0 noop
```
I didn't spot it right away, my fault, but needless to say, I don't think `kapp` should be deleting the (cluster-wide) resource it didn't create.
Note: the `postgres` resources in the chart are managed by [kubedb operator](for https://kubedb.com/docs/0.12.0/welcome/)
I had to re-install the `kubedb` operator to fix the cluster operations.
I was really excited about `kapp`, but the above is a major issue, which obviously prevents us from using the tool. I am just curious as to why `kapp` behaves this way.
This very well might be an issue with `kubedb`, but a lack of safeguard in `kapp` for deleting something it didn't create still worries me.
Contributor guide
Assessment
This issue has not been assessed yet.