Propagate a deployment by Karmada
This guide will cover:
- Install 
karmadacontrol plane components in a Kubernetes cluster which is known ashost cluster. - Join a member cluster to 
karmadacontrol plane. - Propagate an application by using 
karmada. 
Prerequisitesâ
Install the Karmada control planeâ
1. Clone this repo to your machine:â
git clone https://github.com/karmada-io/karmada
2. Change to the karmada directory:â
cd karmada
3. Deploy and run Karmada control plane:â
run the following script:
hack/local-up-karmada.sh
This script will do the following tasks for you:
- Start a Kubernetes cluster to run the Karmada control plane, aka. the 
host cluster. - Build Karmada control plane components based on a current codebase.
 - Deploy Karmada control plane components on the 
host cluster. - Create member clusters and join Karmada.
 
If everything goes well, at the end of the script output, you will see similar messages as follows:
Local Karmada is running.
To start using your Karmada environment, run:
  export KUBECONFIG="$HOME/.kube/karmada.config"
Please use 'kubectl config use-context karmada-host/karmada-apiserver' to switch the host and control plane cluster.
To manage your member clusters, run:
  export KUBECONFIG="$HOME/.kube/members.config"
Please use 'kubectl config use-context member1/member2/member3' to switch to the different member cluster.
There are two contexts in Karmada:
- karmada-apiserver 
kubectl config use-context karmada-apiserver - karmada-host 
kubectl config use-context karmada-host 
The karmada-apiserver is the main kubeconfig to be used when interacting with the Karmada control plane, while karmada-host is only used for debugging Karmada installation with the host cluster. You can check all clusters at any time by running: kubectl config view. To switch cluster contexts, run kubectl config use-context [CONTEXT_NAME]
Demoâ
Propagate applicationâ
In the following steps, we are going to propagate a deployment by Karmada.
1. Create nginx deployment in Karmada.â
First, create a deployment named nginx:
kubectl create -f samples/nginx/deployment.yaml
2. Create PropagationPolicy that will propagate nginx to member clusterâ
Then, we need to create a policy to propagate the deployment to our member cluster.
kubectl create -f samples/nginx/propagationpolicy.yaml
3. Check the deployment status from Karmadaâ
You can check deployment status from Karmada, don't need to access member cluster:
$ kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           20s