Delete a cluster
This page covers the various available methods for deleting a cloud platform test cluster.
In most cases, it is recommended to pass responsibility for deleting a test cluster off to Concourse. It’s easy to make a mistake locally and end up deleting something you shouldn’t e.g. switching context to live whilst running a delete cluster in another terminal
Delete the cluster with Concourse delete-cluster
pipeline
We have a dedicated pipeline for deleting test clusters.
You can configure and trigger this pipeline against your test cluster for removal by utilising the associated cloud-platform cli pipeline delete-cluster
command.
In order to use this command, ensure you have the following installed:
- Concourse fly cli
wget
Execute the following command, providing the name of the cluster you wish to delete:
cloud-platform pipeline delete-cluster --cluster-name <cluster-name> --branch-name <branch-name-defaults-to-main>
You’ll be prompted to authenticate to Concourse:
logging in to team 'main'
navigate to the following URL in your browser:
https://concourse.cloud-platform.service.justice.gov.uk/login?fly_port=12345
Once you click the link, fly
will render the delete-cluster
pipeline with your cluster name:
- CLUSTER_NAME: ((cluster_name))
+ CLUSTER_NAME: <cluster-name>
And will then trigger the job:
configuration updated
started delete-cluster/delete #123
Additionally, if you’ve made changes in your infrastructure branch that render a destroy from the main branch impossible, you can optionally pass your branch name to use that terraform source instead:
cloud-platform pipeline delete-cluster --cluster-name <cluster-name> --branch-name <your-branch-name>
Delete an EKS cluster manually
Follow these steps, to delete the EKS cluster.
First, set the kubectl context for the EKS cluster you are deleting. The easiest way to do this is with aws command:
$ export KUBECONFIG=~/.kube/config
$ export cluster=<cluster-name>
$ aws eks --region eu-west-2 update-kubeconfig --name ${cluster}
You should see this output:
Added new context arn:aws:eks:eu-west-2:754256621582:cluster/<cluster-name> to .kube/config
Then, from the root of a checkout of the cloud-platform-infrastructure
repository, run
these commands to destroy all cluster components, and delete the terraform workspace:
$ cd terraform/aws-accounts/cloud-platform-aws/vpc/eks/core/components
$ terraform init
$ terraform workspace select ${cluster}
$ terraform destroy
The destroy process often gets stuck on prometheus operator. If that happens, running this in a separate window usually works:
kubectl -n monitoring delete job prometheus-operator-operator-cleanup
$ terraform workspace select default
$ terraform workspace delete ${cluster}
Change directories and perform the following to destroy the EKS cluster, and delete the terraform workspace.
$ cd .. # working dir is now `eks`
$ terraform init
$ terraform workspace select ${cluster}
$ terraform destroy
$ terraform workspace select default
$ terraform workspace delete ${cluster}
Change directories and perform the following to destroy the cluster VPC, and delete the terraform workspace.
$ cd .. # working dir is now `vpc`
$ terraform init
$ terraform workspace select ${cluster}
$ terraform destroy
$ terraform workspace select default
$ terraform workspace delete ${cluster}