## [Declarative Cluster Lifecycle Management](https://docs.rafay.co/blog/2023/07/20/declarative-cluster-lifecycle-management/)

Every Kubernetes user is familiar with the **[kubectl apply](https://kubernetes.io/docs/reference/kubectl/)** command. This is used to **create** or **modify** Kubernetes resources as defined in a manifest file.

This pattern is referred to as **Declarative** usage where the state of the resource is "declared" in the manifest file and the command is used to implement the declared state. Unlike an imperative approach where the user needs to specify both **what** and **how** to perform a task, with the declarative approach, the user just needs to specify **what to do** and not worry about **how to do it**.

The **apply** approach is preferred and recommended because it is well suited for version control. The **kubectl apply** command works extremely well for resources inside the Kubernetes cluster.

> What if there was a way to bring this declarative approach for **cluster lifecycle management** as well?
