基于Kubernetes的CICD实战

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 基于Kubernetes的CICD实战

家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。


什么是DevOps

在过去十年,DevOps 一直是大家热议的话题,10 个人心中有 10 个哈姆雷特,十家公司却不止十个 DevOps 定义,也许在你从事技术的生涯中,听过不止 100 种 DevOps 定义。

那究竟什么是 DevOps 呢?

在维基百科上是这么说的,DevOps 是一种重视“软件开发人员(Dev)”和“IT 运维人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使构建、测试、发布软件能够更加地快捷、频繁和可靠。

在我看来,DevOps 是一套围绕软件开发整个生命周期,以不断改进和提高交付价值的最佳实践。通过 DevOps,让开发、运维、运营之间可以平等的传播文化,而不用局限在特定的角色。

DevOps 强调通过一系列手段来实现既快又稳的工程流程,使每个想法从开发到生产的周期内都能不断的为用户带来价值。它是一个方法论,并不指代某一特定的软件工具或软件工具组合。各种工具软件或软件组合可以实现 DevOps 的概念方法。其本质是一整套的方法论,而不是指某种或某些工具集合,与软件开发中设计到的 OOP、AOP、IOC(或 DI)等类似,是一种理论或过程或方法的抽象或代称。

什么是CICD

CICD 是 DevOps 文化的一种实现,旨在通过 CICD 流水线让应用可以从代码签入、测试、构建和部署直至生产阶段都在流水线中向前推进。企业一旦引入 CICD,就可以将其部分或者全部自动化,而且加快交付流程,降低沟通成本以及错误成本。

CI

CI 的英文名称是 Continuous Integration,中文翻译为:持续集成。image.pngCI 中,开发人员将会频繁地向主干提交代码,这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。持续集成的目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。CI 的流程执行和理论实践让我们可以确定新代码和原有代码能否正确地集成在一起。

CD

CD 可对应多个英文名称,持续交付 Continuous Delivery 和持续部署 Continuous Deployment ,下面分别介绍。

持续交付

完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。image.png在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中或发布给最终使用的用户。

持续集成

对于一个成熟的 CI/CD 管道(Pipeline)来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。image.png持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。持续交付表示的是一种能力,而持续部署表示的则一种方式。持续部署是持续交付的最高阶段。

CICD 和 DevOps 的关系

CICD 是软件工程实践的方法,而 DevOps 是一种文化,CICD 只是 DevOps 文化体系中的一环,但是从目前国内的实践来看,CICD 算是最重要的一环了。image.png

企业如何落地CICD

对于企业来说,CICD是必不可少的一环,而且随着云原生的发展,CICD工具集也百花齐放。

但是,作为老牌的CICD工具,Jenkins在其中依然处于至关重要的位置,大部分企业在落地CICD的时候都会优先考虑使用Jenkins。

为此,我开发了一套基于Jenkins实现的CICD课程,带你从0到1建立一套完整的CICD,整个课程涵盖:

  • Kubernetes的部署使用
  • Helm Chart开发使用
  • Jenkins Pipeline开发、共享库使用
  • Argocd持续部署
  • Argo Rollouts灰度发布



相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
2月前
|
Kubernetes 监控 调度
Kubernetes Pod调度:从基础到高级实战技巧
Kubernetes Pod调度:从基础到高级实战技巧
270 0
|
2月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
95 0
|
3天前
|
jenkins 持续交付 开发者
利用Docker容器化部署应用的实战指南
【6月更文挑战第27天】本文详述Docker应用部署,涵盖Docker基本概念、安装、镜像制作及运行。通过编写Dockerfile构建镜像,使用`docker build`、`run`、`push`及`stop`命令管理。集成CI/CD工具如Jenkins,实现自动化构建、测试和部署,提升开发效率与部署质量。Docker助力轻量级、可移植的微服务架构。
|
28天前
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
146284 18
|
2月前
|
运维 Kubernetes Linux
Kubernetes详解(二十一)——ReplicaSet控制器实战应用
Kubernetes详解(二十一)——ReplicaSet控制器实战应用
62 2
|
2月前
|
运维 Kubernetes 网络协议
Kubernetes详解(十八)——Pod就绪性探针实战
Kubernetes详解(十八)——Pod就绪性探针实战
67 5
|
2月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes详解(十七)——Pod存活性探针应用实战
Kubernetes详解(十七)——Pod存活性探针应用实战
49 4
|
2月前
|
运维 Kubernetes 网络协议
Kubernetes详解(十八)——Pod就绪性探针实战
Kubernetes详解(十八)——Pod就绪性探针实战
57 3
|
2月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes详解(十七)——Pod存活性探针应用实战
Kubernetes详解(十七)——Pod存活性探针应用实战
41 3