随着微服务架构的流行,迈向云原生的趋势,容器化微服务就成为了持续集成最好的手段,镜像成为了持续交付最好的产物,容器成为了镜像运行最好的环境,kubernetes
成了部署容器最好的生态系统和规范。实践出真知,自学习kubernetes
以来,写了一系列文章,首先,为了发现知识盲点,查漏补缺,将知识点形成体系,决定将之前写的文章做一个汇总,方便查看;其次,希望打通微服务落地kubernetes
的任督二脉,探索出一种工作模式,建立一条高度自动化的流水线,于是踏上了西天取经的道路,并梳理出了西游路线图,希望大家和我一起打妖怪,早日到达雷音寺,取得真经,阿弥陀佛,成佛成仙,呵呵;最后,通过梳理明确学习的方向和目标,一步一步前进,勿急勿躁,也鞭策自己不断学习、探索,因为有时真的就懒惰了,嘿嘿,正如四书五经《大学》中所言:“知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得”,这是我最喜欢的话之一,也是懒惰时常常会想起的一句话,好了,不扯犊子了,嘿嘿。
西游路线图(不断探索中...):
-
持续集成 ---
development
阶段
代码提交、代码审核、构建编译、单元和功能测试、合并到代码仓库(git)、打包微服务成镜像、上传到镜像仓库 --- 全自动化。备注:持续集成流程非常重要,特别是互联网行业,产品不断的更新迭代,周期却很短,业务系统微服务化后,就像一辆汽车被拆分成各种组件,分配到不同的工厂加工生产,生产过程的每个阶段都需要按标准不断的交互对接,保证最后组合在一起的产物是符合预期设计标准的。至于持续集成的工作流程,每个公司可以结合自己的实际情况,建立符合自身的持续集成流程。
该阶段的产物是镜像。 -
持续交付 ---
staging
阶段
持续集成系统级别的发布方案到chart
模板仓库,使用k8s
的包管理器helm
一键部署预生产环境,自动运行联调(集成)测试 --- 半自动化。备注:生产环境必须由专人按照严谨、合理、认可、稳定的流程(滚动发布、金丝雀发布等)完成部署工作,我们将这些方案编排成
chart
模板,并在预生产环境进行测试,没问题后,持续集成到远程仓库。
该阶段目的就是根据服务之间的依赖关系编排服务,并将服务部署代码化,即基础设施自动化,它的产物是chart
模板,可以看作是一份DevOps文档,里面存放在各种各样的运维脚本,自动化完成各式任务,这样生产环境对于服务的发布、更新、回滚、扩容都可通过编排文件实现,从而增加可塑性、易管理性、和自动化的能力。比如需要升级100个服务中的5个服务,只需要修改编排文件中5个服务的配置就行了,当编排文件提交后,生产环境通过命令一键更新,当发现新环境这5个服务有问题时,当然希望将这个5个服务原子回滚,如果没有编排文件,需要人工记录这次升级了哪5个服务。有了编排文件,只需要执行一个命令就revert到上一个版本了,而且所有的操作在代码仓库里面都已经被记录了。 持续部署 ---
production
阶段
只需要一个命令,自动从远程仓库拉取特定的chart
模板,完整部署准备就绪的微服务脚手架到k8s生产环境 --- 全自动化。
第一部分 修行
- 一个典型的kubernetes工作流程
- 白话kubernetes的十万个为什么
- NodePort,LoadBalancer还是Ingress?我该如何选择
- 详解 k8s RBAC(role based access control) 角色权限(敬请期待)
第二部分 西天取经
- 打包
- 部署
- 仓库
- 发布
- 运维
- 监控
- 预警