ITPub博客

首页 > 数据库 > 数据库开发技术 > 使用Spinnaker管理k8s上的部署

使用Spinnaker管理k8s上的部署

原创 数据库开发技术 作者:云原生运维技术 时间:2019-07-30 09:10:10 0 删除 编辑

Spinnaker是Netflix开源的持续交付平台,提高了持续交付系统的可复用性,提供了稳定可靠的API,提供了对基础设施和程序全局性的视图,配置、管理、运维都更简单。更重要的是它支持多种外部的Triggers,支持K8S并且能够对发布流程进行管理。而在使用过程中,发现有两个痛苦的地方,第一个来自于Spinnaker系统复杂性带来的构建难度,另外一个来自于Spinnaker Pipelines流程的编排。搭建的文档网上很多,这里主要分享下如何使用Pipelines管理K8S容器发布。

注意:我们使用的Spinnaker对接的是K8S-v2版本的provider,Spinnaker官方在v2版本已经放弃了更多的点点点的傻瓜式操作,估计是想通过Pipelines声明的方式来管理发布流程,虽然易用性上有了门槛,但其实对于整个运维发布过程来讲会有很多好处。不多说,开干。


首先,创建一个应用,查看已经创建好的几个Pipelines:



1. 查看整个发布的Pipeline



Pipelines中配置了Jenkins的Trigger:



Stage1: 环境变量



Stage2: 预发布环境的yaml部署配置



Stage3: 发布审核



Stage4: 预发环境发布钩子



Stage5: 生产环境Yaml配置(和预发环境基本相同,环境变量引用的区别)

Stage6: 最终发布完成的钩子



2. 使用Jenkins触发CI


我们Jenkins的构建产物是Docker image,由于Spinnaker已经配置好了Pipeline,我们拿到tag之后即可对指定版本进行发布。


3. 使用Spinnaker的Pipeline发布流程


手动执行一次Pipeline发布


提示选择Jenkins构建的产物版本



预发发布过程



发布成功后会通知并且需要人工审核



发布通知



查看发布结果



发布审核



审核通过后自动进行生产环境发布通知




查看发布结果



查看应用的集群信息



4. Scale Out

选择生产环境进行副本扩容



查看发布结果





5. Deploy One More


提交一次代码


使用Jenkins构建完成后再次手动执行Pileline发布




发布结果验证




注意:由于我们是重新发布的,之前新扩容的版本会被缩容成pipelines中定义的副本数量



6. RollBack


由于发布了两次,每个deployment其实会有两个版本,回滚就是根据版本进行回滚的。






7. Destory App







至此,使用Spinnaker对K8S上的应用进行了一次全流程的部署实践,虽然看起来较为复杂,但是整体的发布过程还是非常清晰且严谨的。


 

原文作者:云原生运维技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-01-18

  • 博文量
    53
  • 访问量
    20336