diff --git a/README.md b/README.md
index a53bc93f0217f11afa670ebab97095fc1a94f63d..13bf2c8d53c23fb13f1709f53e80c98416bf2829 100644
--- a/README.md
+++ b/README.md
@@ -110,14 +110,14 @@ Though for a quickstart a compiled version of the Kubernetes [manifests](manifes
 
 ```shell
 # Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources
-kubectl create -f manifests/setup
+kubectl apply --server-side -f manifests/setup
 until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
-kubectl create -f manifests/
+kubectl apply -f manifests/
 ```
 
 We create the namespace and CustomResourceDefinitions first to avoid race conditions when deploying the monitoring components.
 Alternatively, the resources in both folders can be applied with a single command
-`kubectl create -f manifests/setup -f manifests`, but it may be necessary to run the command multiple times for all components to
+`kubectl apply --server-side -f manifests/setup -f manifests`, but it may be necessary to run the command multiple times for all components to
 be created successfullly.
 
 * And to teardown the stack:
@@ -274,12 +274,16 @@ Now simply use `kubectl` to install Prometheus and Grafana as per your configura
 
 ```shell
 # Update the namespace and CRDs, and then wait for them to be available before creating the remaining resources
-$ kubectl apply -f manifests/setup
+$ kubectl apply --server-side -f manifests/setup
 $ kubectl apply -f manifests/
 ```
 
+> Note that due to some CRD size we are using kubeclt server-side apply feature which is generally available since
+> kubernetes 1.22. If you are using previous kubernetes versions this feature may not be available and you would need to
+> use `kubectl create` instead.
+
 Alternatively, the resources in both folders can be applied with a single command
-`kubectl apply -Rf manifests`, but it may be necessary to run the command multiple times for all components to
+`kubectl apply --server-side -Rf manifests`, but it may be necessary to run the command multiple times for all components to
 be created successfullly.
 
 Check the monitoring namespace (or the namespace you have specific in `namespace: `) and make sure the pods are running. Prometheus and Grafana should be up and running soon.
diff --git a/developer-workspace/common/deploy-kube-prometheus.sh b/developer-workspace/common/deploy-kube-prometheus.sh
index 6dc6daf736cc526f933994806862fe337f262516..84f285c8b6bd685582f85fb29f0d2989ea55a1b4 100755
--- a/developer-workspace/common/deploy-kube-prometheus.sh
+++ b/developer-workspace/common/deploy-kube-prometheus.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-kubectl apply -f manifests/setup
+kubectl apply --server-side -f manifests/setup
 
 # Safety wait for CRDs to be working
 sleep 30
@@ -17,4 +17,4 @@ kubectl rollout status -n monitoring deployment kube-state-metrics
 
 kubectl port-forward -n monitoring svc/grafana 3000 > /dev/null 2>&1 &
 kubectl port-forward -n monitoring svc/alertmanager-main 9093 > /dev/null 2>&1 &
-kubectl port-forward -n monitoring svc/prometheus-k8s 9090 > /dev/null 2>&1 &
\ No newline at end of file
+kubectl port-forward -n monitoring svc/prometheus-k8s 9090 > /dev/null 2>&1 &