Uninstall Consul
Uninstalling Consul requires running helm delete
and then manually cleaning up some resources that Helm does not delete.
First, run
helm delete
:$ helm delete hashicorp
release "hashicorp" uninstalled
If using Helm 2, run
helm delete --purge hashicorp
After deleting the Helm release, you need to delete the
PersistentVolumeClaim
‘s for the persistent volumes that store Consul’s data. These are not deleted by Helm due to a bug. To delete, run:$ kubectl get pvc -l chart=consul-helm
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-default-hashicorp-consul-server-0 Bound pvc-32cb296b-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
data-default-hashicorp-consul-server-1 Bound pvc-32d79919-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
data-default-hashicorp-consul-server-2 Bound pvc-331581ea-1213-11ea-b6f0-42010a8001db 10Gi RWO standard 17m
$ kubectl delete pvc -l chart=consul-helm
persistentvolumeclaim "data-default-hashicorp-consul-server-0" deleted
persistentvolumeclaim "data-default-hashicorp-consul-server-1" deleted
persistentvolumeclaim "data-default-hashicorp-consul-server-2" deleted
NOTE: This will delete all data stored in Consul and it can’t be recovered unless you’ve taken other backups.
If installing with ACLs enabled, you will need to then delete the ACL secrets:
$ kubectl get secret | grep consul | grep Opaque
consul-acl-replication-acl-token Opaque 1 41m
consul-bootstrap-acl-token Opaque 1 41m
consul-client-acl-token Opaque 1 41m
consul-connect-inject-acl-token Opaque 1 37m
consul-controller-acl-token Opaque 1 37m
consul-federation Opaque 4 41m
consul-mesh-gateway-acl-token Opaque 1 41m
Ensure that the secrets you’re about to delete are all created by Consul and not created by someone else that happen to have the word consul
.
$ kubectl get secret | grep consul | grep Opaque | awk '{print $1}' | xargs kubectl delete secret
secret "consul-acl-replication-acl-token" deleted
secret "consul-bootstrap-acl-token" deleted
secret "consul-client-acl-token" deleted
secret "consul-connect-inject-acl-token" deleted
secret "consul-controller-acl-token" deleted
secret "consul-federation" deleted
secret "consul-mesh-gateway-acl-token" deleted
secret "consul-gossip-encryption-key" deleted
If installing with
controller.enabled
then you will need to delete the webhook certificate:$ kubectl get secret consul-controller-webhook-cert
NAME TYPE DATA AGE
consul-controller-webhook-cert kubernetes.io/tls 2 47m
$ kubectl delete secret consul-controller-webhook-cert
secret "consul-consul-controller-webhook-cert" deleted
If installing with
tls.enabled
then there will be aServiceAccount
that is left behind:$ kubectl get serviceaccount consul-tls-init
NAME SECRETS AGE
consul-tls-init 1 47m
$ kubectl delete serviceaccount consul-tls-init
serviceaccount "consul-tls-init" deleted