专访Rancher CEO 梁胜博士:企业应该如何理解云原生CI/CD?

2023-12-01 00:30

本文主要是介绍专访Rancher CEO 梁胜博士:企业应该如何理解云原生CI/CD?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=jpeg
嘉宾 | 梁胜
编辑 | 张婵
使用新一代面向云计算的工具和技术搭建 CI/CD 流水线可以实现应用程序的自动构建、自动测试和自动部署,提高发布频率,利于构建可高效迭代的云原生应用。近期以 Jenkins 带头发起的持续交付基金会(CDF)的成立,也说明了 CI/CD 理念及工具得到了越来越多的认可和应用,在研发和软件交付过程中有很大的价值。
前言  

云计算技术的普及全面变革了 IT 基础设施,技术团队组织架构、研发流程也随之变化,越来越多的组织和团队开始接受 DevOps 理念。在 DevOps 的趋势下,持续集成(CI)和持续交付(CD)具有支柱性地位,使用新一代面向云计算的工具和技术搭建 CI/CD 流水线可以实现应用程序的自动构建、自动测试和自动部署,提高发布频率,利于构建可高效迭代的云原生应用。

近期以 Jenkins 带头发起的持续交付基金会(CDF)的成立,也说明了 CI/CD 理念及工具得到了越来越多的认可和应用,在研发和软件交付过程中有很大的价值。此次 InfoQ 采访了 Rancher Labs CEO 梁胜博士,谈谈如何理解云原生环境下的 CI/CD,以及 CDF 成立的意义。

上云 VS 云原生

在梁胜博士看来,上云≠云原生。

云原生(Cloud Native)的字面意思是开发应用的时候要遵循云端的原生技术。现在我们说的云原生,主要包含以下的含义:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行弹性可扩展的应用。通过构建容错性好、易于管理和便于观察的松耦合系统,结合可靠的自动化手段,云原生技术可以使工程师能够轻松地对系统作出频繁和可预测的重大变更(CNCF 对云原生的定义)。

具体的云原生技术包括:

  • 微服务

  • 容器

  • Serverless

  • Service Mesh

  • 不可变基础设施

  • 声明式 API

  • ……

这些技术在传统的应用架构或基础设施里是不存在的。

云原生架构最关键的特性是动态扩展以支持大量用户及大型分布式开发和运营团队。因此,一些需要解决的典型问题如下:

1. 动态扩缩容能力;

如果仅仅只是把传统应用打包一下搬到公有云或者私有云上,而没有利用云原生相关技术,应用不能做到弹性可扩展、高可用、按需交付等,这就不算云原生。

CI/CD 给企业带来的价值

CI/CD 的存在已经有十几年的时间了,其主要作用就是可以使企业在提升开发和发布的迭代速度的同时,还保证应用程序的质量。虽然一般 CI/CD 连着说,但是 CI 跟 CD 的概念不一样。

  • CI (Continuous Integration)代表持续集成,意味着研发人员对代码做了改变之后,可以直接来编译和构建二进制代码,用二进制代码来运行一些测试。

  • CD 代表持续交付(continuous delivery)和持续部署(continuous deployment),持续部署要比连续集成要复杂很多,部署时要考虑很多方面:应用需要部署到哪些环境、其依赖包的版本怎么使用、如何做环境配置管理等都需要考虑在其中。

所以很多企业和团队能做到连续集成的层面,但其实并没有达到持续部署的状态。

云原生的环境本质上很适合应用部署。传统的应用在做部署的时候,常常有一些手动的步骤,会比较困难。而云原生技术本身就强调自动化,相对而言更适应 CI/CD 框架。一般来说云原生应用的用户在开发过程中,集成、部署和测试等流程上的自动化程度已经比较高了,所以云原生 CI/CD 实施起来会更容易。

云原生场景下的 CI/CD 当然也会有一些挑战。云原生的应用模块较多,可以有多个微服务,相对来说结构很复杂。所以在云原生环境下,部署、集成、构建和测试等步骤都比较多,做好每个步骤之间的连续性也相对复杂。

云原生部署策略

在应用部署的时候,我们当然可以把整个现有的应用完全切换过来,但是万一中途出问题了怎么办?为了应对这种情况,在云原生环境下 Kubernetes、Istio 等工具都能支持持续部署,可以进行蓝绿部署和金丝雀部署。

蓝绿部署:蓝绿部署能自动防御故障的流程。在这个方法中,两个相同的生产环境并行工作。一个是当前运行的生产环境,接收所有的用户流量(称之为蓝)。另一个是它的副本,但是闲置(称之为绿)。两者使用相同的数据库后端和应用配置:

640?wx_fmt=png

应用的新版本部署在绿色版本环境中,进行功能和性能测试。一旦测试通过,应用的流量从蓝色版本路由到绿色版本。然后绿色版本变成新的生产环境。

640?wx_fmt=png

如果绿色版本激活后发现了问题,则将流量路由回到蓝色版本中。

金丝雀部署:金丝雀部署和蓝绿有点像,但是它更加规避风险。你可以阶段性的进行,而不用一次性从蓝色版本切换到绿色版本。

采用金丝雀部署,你可以在生产环境的基础设施中小范围的部署新的应用代码。一旦应用签署发布,只有少数用户被路由到它。最大限度的降低影响。

如果没有错误发生,新版本可以逐渐推广到整个基础设施。

640?wx_fmt=png

现在的 CI/CD 基本上都是用这两种方法来降低软件的部署风险,Kubernetes 和 Istio 也支持这两种部署方式。所以云原生环境下的 CI/CD 也是依赖于 kubernetes 或 Istio 平台里的高级发布功能来保障软件交付的稳定性,让一小部分用户先使用新版本,等这一小部分成功以后再让更多的用户使用,中间如果出问题随时可以回滚到原来的版本。

CI/CD 管道构建

下图展示了一个软件在其最终交付给客户或者投入上线之前,它在其生命周期内各个阶段中的移动过程,也就是一套 CI/CD 管道的流程,整个周期包括:

构建 - 测试 - 部署 - 自动测试 - 部署到生产环境 - 度量和验证。

640?wx_fmt=png

传统意义上,管道中使用的各个硬件系统都有配套的软件(操作系统、应用程序、开发工具等)。在极端情况下,每个系统都是手工设置来定制的。这意味着当系统出现问题或需要更新时,这通常也是一项自定义任务。这种方法违背了持续交付的基本理念,即具有易于重现和可跟踪的环境。

梁胜博士介绍,在云原生环境下容器技术被大量采用,但是实际上 CI/CD 并不需要容器,直接用基础设施云的 API 就可以实现。不过用容器有一些好处:

1. 可以加快应用的迭代速度更快;

基于容器设置 CI/CD 的管道会比用传统的方法设置 CI/CD 的管道容易一点。容器的好处在于执行环境一致性,只要调通了,应用在管道里、管道外和物理机上运行没有差别。

CI/CD 管道设置上本身的挑战在于自动化程度。在设置了管道之后,要根据中间每一个步骤的结果要来判断各种状态,这一步成功还是不成功,再来决定下一步应该做什么。所以一旦设置了管道,对自动化、监控和运维等方面的要求会高很多。

当应用在管道里运行的时候,我们实际上是看不到管道里的运行情况的。而在传统的 CI/CD 中,如果全是手动操作,每做一件事情出错了我们就可以看到,可以随时去调错。设置了管道之后,整个管道就完全自动化了,但事实上复杂的管道在设置一段时间之后才会趋于稳定。后续还要不断调试和排错,有时出了问题并不是程序上的问题,而是管道本身的问题。所以设置管道也必须经过这不断尝试的过程。

不过磨刀不误砍柴工,一旦管道设置好了之后,就能达到自动化的效果,软件交付的效率能明显提升。

Rancher pipeline

作为基于 Kubernetes 的开源企业级容器管理平台,Rancher 对于 CI/CD 管道解决方案也有自身的考量。对于用户而言,大部分企业用户或者互联网用户已经设好了 CI/CD 的管道,甚至有很大的 CI/CD 的平台。这也就意味着 Rancher 无需提供内置的 CI/CD 解决方案,而用户在使用 Rancher 的过程中,可以直接调用 Kubernetes API 接口和自己的 CI/CD 管道或平台进行对接。

随着 Rancher 的使用不断普及,针对还没有构建自己的企业级 CI/CD 平台的用户,Rancher 构建了一个简单易用的 CI/CD 管道:Rancher pipeline。这套解决方案的最大特点是简单易用,使用户无需从头开始使用其他工具设置 CI/CD 流水线。Rancher pipeline 在灵活性和功能上来说略为简单,但它可以使很多用户,特别是现在还没有 CI/CD 平台的用户,很快地享受到 CI/CD 的好处。

640?wx_fmt=png

Rancher pipeline 由 Rancher server 中的 pipeline controller 和用户集群中包括 Jenkins、Minio 的组件组成。Rancher server 接收到代码提交事件后,会按照源码仓库中文件形式定义的流水线,分发构建任务到用户集群的 Jenkins 中,并动态创建 Kubernetes Pod 作为构建环境执行 CI/CD 任务。它将 Jenkins 作为底层执行引擎,用户不需要对 Jenkins 及构建环境作配置和管理。

企业如何构建云原生 CI/CD 管道

企业在构建云原生 CI/CD 管道的时候,除了要做好自动化的前提,梁胜博士认为还有两个方面需要做好。

  • CI/CD 平台。不管是用 Jenkins 还是自己搭建,首先必须得有一个 CI/CD 平台;

  • 云原生部署平台。CI/CD 平台实际上是把应用部署到云原生部署平台上去的,像 Rancher、Kubernetes 等就是云原生部署平台,它们可以实现一些高级的部署策略。

这两者一旦结合起来了之后,企业就可以利用云原生 CI/CD 提升效率了。

在 CI/CD 管道工具的选型上,梁胜博士认为,现在确实工具很多,但主要还是要看自己的技术能力。如果技术能力比较强,可以花时间了解市面上的各种开源工具,进而直接使用这些开源工具,这是最好的。

但是并不是所有的企业都有这样的能力和人才,所以现在越来越多的公有云或者其他平台厂商也开始支持云原生 CI/CD,用户如果愿意使用厂商提供的工具,也可以方便地实现云原生 CI/CD。但是这其中会面临用户锁定的问题,尤其是云厂商的锁定。

CDF 的成立意味着什么

今年 3 月份,Linux 基金会宣布成立了新的子基金会:持续交付基金会 (Continuous Delivery Foundation, CDF),Rancher 也是 CDF 的创始成员之一。梁胜博士认为,CDF 可以让 CI/CD 的众多平台更加标准化。纵观技术发展历程,是一个从闭源走向开放的过程。早期的很多闭源技术平台存在用户被锁定的问题,不仅昂贵而且不利于创新。后来开源技术流行起来,到了现在仅有开源还不够,很多用户认为开源的技术不应该被一家商业公司控制,而应该交由基金会或者社区管理。现在 CI/CD 正在越来越多地融入技术团队的开发流程中,这个领域也已经有了很多开源工具。有了 CDF,这些开源工具可以更加中立地为技术人所使用,这也是开源的精神所在。


嘉宾简介

梁胜,Rancher Labs 联合创始人及 CEO,是 Java 语言 J2SE 平台核心组件 JNI(Java Native Interface)的作者,领导设计和开发了 Java 语言最为核心的 JVM。2014 年 9 月,梁胜创立 Rancher Labs 并担任 CEO,为全球企业客户提供容器企业级落地的解决方案。截止目前,Rancher Labs 已获得两轮累计超过 2 亿元人民币的融资,在全球拥有超过 20000 家企业用户。


活动推荐

ArchSummit 全球架构师峰会是面向高端技术管理者、架构师的技术会议,54% 参会者拥有 8 年以上工作经验。2019 年 7 月深圳站囊括了运维新突破、微服务架构、中台战略、技术选型、人机交互、前端进阶等最新技术和前沿动态,详细日程请扫描下图二维码或点击【阅读原文】

640?wx_fmt=jpeg

这篇关于专访Rancher CEO 梁胜博士:企业应该如何理解云原生CI/CD?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439137

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分