-
-
Notifications
You must be signed in to change notification settings - Fork 3
feat: Add uninstall demo/stack feature #429
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
c9aec77
d8476f3
5b366b4
d6dc693
f80624a
1066138
73515e2
0e0658f
9f9b923
7da2228
70fd483
c187cff
e71437a
4d1ff73
6d0edef
2367a88
1a00526
043f0f1
7dfe50e
d794c7e
5574319
1bc08a2
0f3cf7f
506fbcf
a6e2feb
18e7f70
ad7dd15
ba64478
a2fbb1c
cdbd185
73f231c
30f6d96
55eeceb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -89,3 +89,39 @@ Installed stack logging | |
| Use "stackablectl operator installed" to display the installed operators | ||
| Use "stackablectl stacklet list" to display the installed stacklets | ||
| ---- | ||
|
|
||
| == Uninstalling a Stack | ||
|
|
||
| To uninstall a stack, you can run the following command, specifying the namespace the stack was installed in. | ||
|
|
||
| [source,console] | ||
| ---- | ||
| $ stackablectl stack uninstall logging -n <NAMESPACE> | ||
|
|
||
| ---- | ||
|
|
||
| [NOTE] | ||
| ==== | ||
| The uninstall command deletes the namespace the stack was installed in. Therefore it is not possible to uninstall stacks in the `default` namespace. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as my comment about demos. |
||
| ==== | ||
|
|
||
| [WARNING] | ||
| ==== | ||
| Currently, some resources deployed by the stack are either still lingering after the deletion process or need to be deleted before running the uninstall command. | ||
|
|
||
| * All stacks | ||
| ** MutatingWebhookConfiguration `restarter-sts-enricher.stackable.tech` is not deleted | ||
| * argo-cd-git-ops, hdfs-hbase, jupyterhub-pyspark-hdfs | ||
| ** ClusterroleBinding `hdfs-clusterrolebinding-nodes` is not deleted | ||
| * argo-cd-git-ops | ||
| ** Delete the ArgoCD Applications `airflow`, `airflow-postgres`, `minio`, and `sealed-secrets` | ||
| ** Then you can delete the namespaces `stackable-airflow`, `minio`, and `sealed-secrets` | ||
| ** Delete the ArgoCD ApplicationSet `stackable-operators` and wait for ArgoCD to delete the Applications of that ApplicationSet | ||
| ** Only after deleting the above, run the `stackablectl stack uninstall` command, otherwise the deletion might get stuck | ||
| ** `*.argoproj.io` CRDs and `sealedsecrets.bitnami.com` CRD are not deleted | ||
| * monitoring | ||
| ** `*.monitoring.coreos.com` CRDs are not deleted | ||
| * observability | ||
| ** Delete OpenTelemetryCollector `otel-collector-grpc-external` and `otel-collector-grpc` | ||
| ** Only after deleting the above, run the `stackablectl stack uninstall` command, otherwise the deletion might get stuck | ||
| ==== | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like this should be opt-in behaviour. Or rather, if we created the namespace, it gets deleted.
There could be existing namespaces that shouldn't be deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One such example is if we have the monitoring stack installed, and want to add and remove demos.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to #187 (comment) "Update after a discussion on 2025-11-26:" it was decided the first version provides no option to be less destructive. Not sure which meeting that was or if it makes sense to change the requirements now.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There were also problems with deleting everything without deleting the namespace, see stackabletech/hdfs-operator#761 (comment). So maybe for the first version / MVP it is fine for now like this? But feel free to disagree
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left an idea below in how we could do it: #429 (comment)
But of course, if this implements what we agreed on, that's fine.
It does feel a little dangerous though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I agree it feels dangerous, tried to avoid it at first but ran into the problems above, which unfortunately won't be solved by your idea I think. The manifests we would delete with that approach were also deleted with the help of the labels, so would be the same situation, unless I misunderstood something 😞
Another thing might be adding a confirmation dialogue like the one I added to the installation for the namespace. That it asks if the user really wants to uninstall since that would delete the namespace, and cancel the deletion otherwise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0f3cf7f(this PR) Maybe this addresses your concern a bit, let me know what you think :)