当您的账号下有多个集群分布在不同的地域,您可以使用应用中心的多集群发布功能将一个应用同时发布到多个集群里。本文介绍如何使用编排模板将一个应用一键部署到2个不同地域的Kubernetes集群。

前提条件

已创建2个不同地域集群,且集群具有访问公网的能力。具体操作,请参见 创建Kubernetes托管版集群

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择多集群 > 应用中心
  3. 应用中心页面单击创建应用
  4. 应用来源配置向导页面配置参数。
    1. 安装应用发布组件区域选择集群,然后单击开始安装
      说明 仅首次安装应用需要执行此步骤。
    2. 应用来源区域单击YAML模板
    3. 单击下一步
  5. 应用配置配置向导页面中设置参数。
    1. 设置应用名称应用描述
    2. 设置模板,您可以选择已有模板或者新建模板, 本文以新建模板为例。
      1. 单击新建模板页签,然后单击右上角的通过YAML添加
      2. 将以下内容复制到文本框中,然后单击确定

        本文以Red版本的demo应用为例。

        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: demo
          labels:
            app: demo
        spec:
          minReadySeconds: 5
          revisionHistoryLimit: 5
          progressDeadlineSeconds: 60
          strategy:
            rollingUpdate:
              maxUnavailable: 1
            type: RollingUpdate
          selector:
            matchLabels:
              app: demo
          template:
            metadata:
              annotations:
                prometheus.io/scrape: "true"
                prometheus.io/port: "9797"
              labels:
                app: demo
            spec:
              containers:
              - name: demo
                image: registry.cn-hangzhou.aliyuncs.com/acs/rollouts-demo:red
                imagePullPolicy: IfNotPresent
                ports:
                - name: http
                  containerPort: 8080
                  protocol: TCP
                readinessProbe:
                  tcpSocket:
                    port: 8080
                  initialDelaySeconds: 5
                  timeoutSeconds: 5
                resources:
                  limits:
                    cpu: 2000m
                    memory: 512Mi
                  requests:
                    cpu: 100m
                    memory: 64Mi
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: demo-svc
        spec:
          selector:
            app: demo
          ports:
            - protocol: TCP
              port: 80
              targetPort: 8080
        ---
        apiVersion: extensions/v1beta1
        kind: Ingress
        metadata:
          name: demo
          labels:
            app: demo
        spec:
          rules:
            - host: app.demo.example.com
              http:
                paths:
                  - backend:
                      serviceName: demo-svc
                      servicePort: 80
    3. 单击下一步
  6. 发布配置配置向导页面中设置参数。
    1. 发布配置区域选择发布方式,可选全量发布灰度发布
      第一次发布应用时只能选择全量发布,后续对应用进行更新迭代时,可以选择全量发布或灰度发布。
    2. 可选集群区域单击集群左侧的添加,选择2个不同地域的集群。在目标集群区域可以看到选择的集群,然后选择应用要发布的命名空间
      说明可选集群区域显示当前账号下所有地域的集群。
    3. 单击开始发布
  7. 发布确认对话框单击确定

    发布日志配置页面中可以看到发布应用的进度。

  8. 发布日志配置向导页面中单击完成

结果验证

  1. 获取应用的端点。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 路由页面查看demo的端点。
  2. hosts文件输入以下内容。
    <端点> app.demo.example.com 
  3. 在浏览器中访问app.demo.example.com

    浏览器显示以下页面,说明应用部署成功。

    red
  4. hosts文件删除步骤1绑定的地址,重复步骤2步骤3,访问另一个集群部署的应用,显示以下页面,说明应用部署成功。
    red