How to delete a building block

To delete a Building Block there at least 2 ways to delete a building block from your cluster.

The first approach is an automatic deletion process as described in the The automatic way section.

As a second solution you can also manually delete each building block. You have more control with this deletion process. This is described in The manual way.

The following 3 steps will delete your building block.

  1. Make sure your cluster with your building block(s) is accessible from your working environment.
  2. Delete the building block from your cluster with the manuel or automatic process described below.
  3. Delete or deactivate it from your gitlab pipeline (see the "Rework" section).

First figure out the details about your building block you would like to delete. With the following mkactl command we can find out the exact name and the version of the building block.

Use the mkactl command to get an overview of your building blocks.

mkactl block list

NAME                   VERSION         
 kube-prometheus-stack  24.1.0 

The manual way

To delete a building block you can proceed with the following steps :

  • get a static resource list of possible used resources within your cluster which resides in each directory of the dedicated Building Block e.g.kube-prometheus static-resources
  • For each resource the name and the kind is indicated. Delete those reosurces using kubectl delete -n
  • check whether there are pending resources in the cluster with kubectl get -n command.
  • delete the namespace with the kubectl delete ns -n <namespace> command to delete the building block from you metakube cluster.
  • proceed with Rework section on this page below.

The automatic way (recommended way)

Let's assume you have your kubernetes configuration in the default location check your deployed Building Block(s) with the following command sequence.


kubectl get ns 

NAME                              STATUS   AGE
cloud-init-settings               Active   4d7h
default                           Active   4d7h
kube-node-lease                   Active   4d7h
kube-public                       Active   4d7h
kube-system                       Active   4d7h
syseleven-kube-prometheus-stack   Active   20s

Now we would like to delete the syseleven-kube-prometheus-stack from our cluster.

in our example it would be :

docker run --rm -v ~/.kube/config:/kube/config --env KUBECONFIG=/kube/config --entrypoint /bin/bash registry.code.syseleven.de/syseleven/building-blocks/helmfiles/kube-prometheus-stack:24.1.0 -c "bash ./.gitlab/remove_bb.sh"

In general : The sequence for all Building Blocks would be the following command line where BB_NAME is the name of the Building Block and BB_VERSION would be the version you retrieve from the
mkactl block list command.

docker run --rm -v ~/.kube/config:/kube/config --env KUBECONFIG=/kube/config --entrypoint /bin/bash registry.code.syseleven.de/syseleven/building-blocks/helmfiles/<BB_NAME>:<BB_VERSION> -c "bash ./.gitlab/remove_bb.sh"

You should see the following process.

Try to delete all helm charts in syseleven-kube-prometheus-stack.
release "kube-prometheus-stack-extension" uninstalled
release "kube-prometheus-stack" uninstalled
Try to delete namespace: syseleven-kube-prometheus-stack.
namespace "syseleven-kube-prometheus-stack" deleted

You have successfully deleted your Building Block from your metakube cluster.

Rework

The Building Block still has its deployment information within your control repository. To prevent an accidental deployment of your deleted building block you need to disable or delete it from your pipeline definition.
This pipeline definition resides in you control repository.

Here we have an example of 2 Building Blocks, kube-prometheus-stack and elasticsearch, in our .gitlab-ci.yml.

stages:
  - diff
  - deploy

include:
  - /kube-prometheus-stack/.gitlab-ci.yml
  - /elasticsearch/.gitlab-ci.yml

Check out the .gitlab-ci.yml or alternatively you can use the gitlab editor as shown in the picture below.

Gitlab pipeline editor

You can delete the corresponding line or comment it by putting a # in front of the deleted building block. The deployment information for this deactivated or deleted building block still resides in your control repo.
This can ba mandatory as in regulated environment an audit can request a redeployment within a certain timeframe e.g 6 month recoverability requirement.