In the Kubernetes world, you can choose from two approaches when managing your applications: imperative management and declarative management. The imperative approach consists of executing imperative kubectl commands, such as kubectl run or kubectl expose, and imperative object configuration management, where you use commands such as kubectl create or kubectl replace. In short, you manage the cluster by executing ad-hoc commands that modify the Kubernetes objects and result in a changed desired state for the cluster—sometimes, you may not even know how the desired state has exactly changed after an imperative command. By contrast, in the declarative approach, you modify object configurations (manifest files) and create or update them in the cluster using the kubectl apply command (alternatively, you can use Kustomization files).
Using...