通过 YAML 创建多云 Deployment¶
支持通过镜像和 YAML 文件两种方式创建多云无状态负载(Deployment)。您可以根据实际情况选择适合自己的创建方式。
- 镜像创建通过表单填写各项配置,通俗易懂、简单易用,但步骤较为繁琐。
 - YAML 创建通过 YAML 文件配置各项信息,操作步骤更少、效率更高,但要求操作者掌握一定的后端技术知识。
 
本文介绍如何通过 YAML 创建多云 Deployment。如需了解镜像创建方式,可参考通过镜像创建多云 Deployment。
前提条件¶
- 创建多云实例
 - 在多云实例中添加至少一个工作集群
 
操作步骤¶
-  
在左侧导航栏中,点击 多云工作负载 -> 无状态负载 ,然后在右上角点击 YAML 创建 。

 -  
输入或导入资源的 YAML 文件,支持同时填写工作负载相关联的配置项、密钥信息,然后点击 下一步 。
点击 下载 可以将当前的 YAML 文件下载并保存到本地,便于后续在其他场景中使用。

 -  
输入或导入部署策略的 YAML 文件,然后点击 下一步 。

 -  
输入或导入差异化策略的 YAML 文件,然后点击 确定 。
Note
差异化策略为可选配置。如无需差异化配置,则不用在此输入任何内容,直接点击 确定 即可。

 
页面会自动返回多云工作负载列表,点击列表右侧的 ⋮ ,可以编辑修改 YAML,还可以暂停、重启和删除该负载。

YAML 文件示例¶
多云编排模块自带的 YAML 编辑器中会自动检测 YAML 语法。如有错误,会用红色波浪线标记错误点。
下面提供一些常用的 YAML 文件示例,您稍加修改就可以使用。
Deployment 示例¶
# 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
部署策略示例¶
# 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.
 
差异化策略示例¶
# 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