Create Multicloud Deployment from YAML¶
You can create multicloud deployments either from an image or a YAML file.
- Image creation involves filling out a form with various configuration options. It is user-friendly and easy-to-perform, but it requires more steps.
- YAML creation involves configuring the necessary information in a YAML file. It requires fewer steps and is more efficient, but it assumes some backend technical knowledge.
This guide explains how to create a multicloud deployment using a YAML file. If you want to learn about the image creation method, refer to Create Multicloud Deployment from Image.
Prerequisites¶
- Create a Multicloud instance
- Add at least one worker cluster in the multicloud instance. (See Cluster for details)
Steps¶
-  Click Multicloud Workloads -> Deployments , and Create from YAML in the top-right corner.  
-  Enter or import the YAML file for the Deployment, then click Next . The Download button allows you to download the current YAML file and save it locally for future use.  
-  Enter or import the YAML file for the deployment policy, then click Next .  
-  Enter or import the YAML file for the override policy, then click OK . Note The override policy is an optional configuration. If you don't need any override configurations, just leave this field empty and click OK . 
Then you will be automatically directed to the multicloud deployment list. You can click the ⋮ icon on the right of the list to edit the YAML, pause, restart, or delete the workload.

YAML File Examples¶
The built-in YAML editor can detect your YAML syntax. If there are any errors, they will be marked with a red squiggly line.
Here are some common YAML file examples that you can modify for your own use.
Deployment Example¶
# Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-nginx
  labels:
    app: demo-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-nginx
  template:
    metadata:
      labels:
        app: demo-nginx
    spec:
      containers:
      - image: nginx
        name: nginx
Propagation Policy Example¶
# Karmada PropagationPolicy
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: demo-nginx-pp
  namespace: default    # (1)!
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: demo-nginx # (2)!
  placement:
    clusterAffinity:
      clusterNames:
        - demo-stage
        - demo-dev
- The default namespace is default .
- If no namespace is specified, the namespace is inherited from the parent object scope.
Override Policy Example¶
# Karmada OverridePolicy
apiVersion: policy.karmada.io/v1alpha1
kind: OverridePolicy
metadata:
  name: demo-nginx-op
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: demo-nginx
  overrideRules:
    - targetCluster:
        clusterNames:
          - demo-dev
      overriders:
        plaintext:
          - path: "/metadata/labels/env"
            operator: add
            value: demo-dev
    - targetCluster:
        clusterNames:
          - demo-stage
      overriders:
        plaintext:
          - path: "/metadata/labels/env"
            operator: add
            value: demo-stage