当前位置: 代码网 > 服务器>服务器>Linux > 云器科技为何选择 Zadig 应对多云发布难题

云器科技为何选择 Zadig 应对多云发布难题

2024年08月04日 Linux 我要评论
杭州云之重器科技有限公司,业界简称「云器科技」,自 2021 年成立以来,以其创新的"Single-Engine"湖仓平台引领数据架构革新,统一了数据处理流程,成为多云数据管理的先锋。 云器科技汇聚了阿里云、字节跳动、微软、Oracle 等顶尖企业的资深专家,携手推动数据使用的转型。其旗舰产品 Lakehouse,提供企业级全托管数据平台,用户注册账户即可轻松进行数据管理和分析,无需涉足复杂的后台维护。 云器 Lakehouse 搭载的先进增量...

杭州云之重器科技有限公司,业界简称「云器科技」,自 2021 年成立以来,以其创新的"single-engine"湖仓平台引领数据架构革新,统一了数据处理流程,成为多云数据管理的先锋。

云器科技汇聚了阿里云、字节跳动、微软、oracle 等顶尖企业的资深专家,携手推动数据使用的转型。其旗舰产品 lakehouse,提供企业级全托管数据平台,用户注册账户即可轻松进行数据管理和分析,无需涉足复杂的后台维护。

云器 lakehouse 搭载的先进增量计算引擎,整合了批处理、流计算与交互式分析,适配多云环境,助力企业优化数据架构,减少冗余。云器科技以此确立了其在自动化和智能化数据平台领域的领先地位。

其背后的工程效率和技术运维团队,在云原生 devops 实践中扮演了关键角色。本文我们采访了云器工程效率团队——郑伟,给大家分享如何通过 zadig 平台,应对多云环境挑战,实现高效安全发布,保障业务连续性。

场景痛点

在我们的微服务的构建部署工程化实施过程中,原先采用的 jenkins 逐渐显露出一些局限性,主要表现在以下几个方面:

  1. 配置复杂性高

在使用 jenkins 进行新环境的 pipeline 配置时,我们遇到了相当复杂的设置流程。每当涉及到编译代码或构建镜像等环节的变更时,都需要对每一个 job 进行单独的修改,这不仅增加了工作量,也增加了出错的风险。

  1. 微服务项目的配置挑战

在微服务架构中,由于每个服务都需独立配置 pipeline,这导致管理工作变得繁琐。而且,每当需要增加新的环境时,我们不得不重复复制和调整相关 jobs,这一过程既耗时又容易出错。

随着公司业务发展,新开云厂商和 region 的增加,加剧了管理和使用的复杂性。

  1. jenkins job 界面灵活但极易出错

jenkins 的用户界面在处理复杂的构建流程配置时,不够直观和简洁。在执行发布操作或查看环境内服务状态、镜像 tag 时,界面操作显得不够直接,影响了工作效率。

选择 zadig 的原因

当时评估选型 devops 平台的过程中,我们不仅考虑了 zadig,还评估了其他备选方案。然而,zadig 最终以其独特的优势胜出,以下是我们选择 zadig 的主要原因:

  1. 集成 gerrit 的需求

我们代码库使用的是 gerrit。在评估过程中,发现 argocd、kubesphere 等不支持与 gerrit 集成,而 zadig 已支持集成 gerrit 的需求。

  1. 云原生和国内研发优势

zadig 是国内公司研发的云原生 devops 平台,提供一站式 ci/cd 解决方案。它的模板和工作流功能比 jenkins 更加强大,且集成了飞书审批功能,支持多云环境,确保了稳定高效的交付。

  1. 产品与技术团队的支持

zadig 的产品和技术团队给予了大力的支持,我们反馈的问题都能得到及时的响应和解决。

zadig 解决方案

  1. 强大的模板库

zadig 提供了包括 k8s yaml、dockerfile、构建和工作流等在内的模板库,极大提升了工程化效率。

模板的目的是为了能复用,比如前端有通用的 dockerfile 模板,后端有通用的 dockerfile 模板;构建模板也是相同的道理,多个不同的后端 maven 项目,可以使用相同的构建模板(相同的编译命令 mvn clean package 和 dockerfile),同样如果多个前端项目都是相同的编译命令和 dockerfile,也可设计构建模板来提高工程化效率。

无论是新增服务,还是构建、dockerfile、yaml 更新,只要修改模板就可以自动同步(对模板库操作应用到服务时,该服务配置将自动基于模板内容同步)。通过使用模板,更加方便地编排构建部署工作流,极大提升工程化效率。

  1. 使用变量的灵活性

模板中的变量使得不同服务的配置差异化变得简单,全局变量的运用进一步提高了配置的复用性。

一般大多数服务都用到的变量,在同一个环境下变量值相同的使用全局变量。全局变量值,一般会跟随环境变化,只要改一次,即可应用到所有服务。

  1. go 模板语法的高效性

go 模板语法允许根据不同的条件渲染模板,简化了 kubernetes 配置文件的生成。

我们用到 go 模板的几个场景:

  • pod 的 hostnetwork,配置 pod 是否使用宿主机的网络和相应的 dns 策略
spec:
  template:
    spec:
      hostaliases:
      {{- range .ip_hostnames}}
        - ip: {{ .ip }}
          hostnames: 
          {{- range .hostnames}}
            - {{ . }}
          {{- end}}
      {{- end}}

如果 .``hostnetwork 被设置为真,则 pod 使用宿主机的网络和 dns 设置;否则,pod 使用 kubernetes pod 网络和集群内的 dns 解析。

  • pod 的 hostaliases,hostaliases 定义 pod 的 hosts 文件(/etc/hosts)里的内容。
spec:
  template:
    spec:
      hostaliases:
      {{- range .ip_hostnames}}
        - ip: {{ .ip }}
          hostnames: 
          {{- range .hostnames}}
            - {{ . }}
          {{- end}}
      {{- end}}
  • go 模板语法来条件性地包含注释(annotations),用于支持个别的 cloudprovider 需要特殊的配置。
kind: service
apiversion: v1
metadata:
  annotations:
    {{- if .cloudprovidergcp }}
    cloud.google.com/neg: '{"ingress": true}'
    cloud.google.com/backend-config: '{"default": "{{.backend_config}}"}'
    {{- end }}
  1. 工作流的高效编排

zadig 的工作流支持多服务并行构建和部署,在一个工作流即可实现多个服务的构建、部署、测试等,提高了工作流程的管理和执行效率。

  1. 发布集成飞书审批

zadig 支持集成飞书审批流程,一定程度上增强了环境发布管控的便捷性和安全性。

实践成果

  • 多云高效发布

目前我们在阿里云、腾讯云、aws、gcp 的 10 个 region 开服,近期华为云等也即将开服。zadig 使我们在多云环境下的发布工作变得简单高效,已成功应用于阿里云、腾讯云、aws、gcp 等多个云服务区域。

  • 万级构建部署

使用 zadig 不到一年时间,执行的自动化构建和部署次数已达到 2 万次以上,显著提升了研发和部署的效率。

总之,通过引入 zadig,我们解决了之前使用 jenkins 时面临的配置复杂性问题,简化了用户界面操作,并通过强大的模板库和工作流功能,实现了工程化效率的显著提升。同时,zadig 的多云支持和飞书审批集成,进一步加强了我们在多云环境下的发布管控能力。

扫码即刻咨询
解锁企业专属最佳实践方案!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com