carvel-dev / carvel-dev/kapp

safeguard from adoption of a resource by kapp

Open
#99 7 comments 0 reactions 0 assignees View on GitHub
helping with an issue
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

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.