k8s专题[10.使用Spinnaker持续发布应用]

本节介绍如何使用spinnaker的持续发布k8s的应用

1.首先使用spinnaker创建一个nginxdemo 的应用,再在nginxdemo应用里面创建 Pipeline。进入nginxdemo 详情页面,点击 “PIPELINES”,目前是没有任何信息的,点击 “+ Create”,弹框中选择类型为 Pipeline,输入流程名称,这里我命名为 nginxdemo-pipe。因为第一次创建,下边 “Copy From” 选择没出来,后续在创建时,我们也可以通过 “Copy From” 方式选择已存在的 Pipeline,非常方便就复制了一个一样配置的流程。创建完毕后,就会出现详细配置 Pipeline State 的页面了

图1

2.配置 Configuration 项

刚开始这里只有一个 Configuration 选项,可以配置 Automated Triggers、Parameters、Notifications 等,这里说下 Automated Triggers 和 Parameters 这两个非常有用,我们可以将此视为 Pipeline 启动前的一些初始化配置,比如启动需要的参数配置、自动触发配置等,为后续各阶段提供必要的信息。
Automated Triggers 自动触发,它提供 7 种类型的触发方式:

  • CRON:调度触发,可以执行一个 cron 调度任务来定时任务触发该流程。
  • Git:当执行 Git push 操作时,触发该流程
  • Jenkins:监听 Jenkins 的某一个 Job
  • Travis:监听 Travis 的某一个 Job
  • Pipeline:监听另一个 Pipeline 执行
  • Pub/Sub:当接受到 pubsub 消息时触发
  • Docker Registry:当 image 更新时触发。

基本能满足我们日常持续集成或交付的需求,当然每一个类型都需要配置相应的参数,比如 Cron 类型,需要配置执行频率、启动时间等。下图我们选择Docker Registry作为触发类型

k8s专题[9.基于Jenkins和Spinnaker的CI/CD流程]

流程图

基于Jenkins和Spinnaker的CI/CD流程

流程说明:
1.用户向Gitlab提交代码,代码中包含Dockerfile
2.将代码提交到远程仓库
3.Gitlab提交触发Jenkins自动构建
4.Jenkins的CI流水线自动编译代码并打包成docker镜像推送到Harbor镜像仓库
5.更新Ingress的配置,根据新部署的应用的名称,在ingress的配置文件中增加一条路由信息(不是新业务不用更改此配置)
6.Jenkins构建完成可触发Spinnaker的自动发布流程,或者手动触发spinnaker发布。
7.Spinnaker会根据发布流程更新kubernetes YAML配置文件
8.Spinnaker调用kubernetes的API,部署应用

k8s专题[8.spinnaker基本介绍]

1.概念

Spinnaker 是 Netflix 的开源项目,是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker 通过将发布和各个云平台解耦,来将部署流程流水线化,从而降低平台迁移或多云品台部署应用的复杂度,它本身内部支持 Google、AWS EC2、Microsoft Azure、Kubernetes和OpenStack 等云平台,并且它可以无缝集成其他持续集成(CI)流程,如 git、Jenkins、Travis CI、Docker registry、cron 调度器等。简而言之,Spinnaker是致力于提供在多种平台上实现开箱即用的集群管理和部署功能的平台。

2.功能

2.1:集群管理主要用于管理云上的资源,它分为以下几个块

  • Server Group:服务组,是资源管理单位,识别可部署组件和基础配置设置,它并且关联了一个负载均衡器和安全组,当部署完毕后,服务组就相当于一组运行中的软件实例集合,如(VM 实例,Kubernetes pods)。
  • Cluster:集群,由用户定义的,对服务组的逻辑分组。
  • Applications:应用,是对集群的逻辑分组。
  • Load Balancer:负载均衡,用于将外部网络流量重定向到服务组中的机器实例,还可以指定一系列规则,用来对服务组中的机器实例做健康监测。
  • Security Group:安全组,定义了网络访问权限,由IP、端口和通信协议组成的防火墙

2.2:部署管理功能用于创建一个持续交付流程,它可分为管道和阶段两大部分

  • 管道 部署管理的核心是管道,在Spinnaker的定义中,管道由一系列的阶段(stages)组成。管道可以人工触发,也可以配置为自动触发,比如由 Jenkins Job 完成时、Docker Images 上传到仓库时,CRON 定时器、其他管道中的某一阶段。同时,管道可以配置参数和通知,可以在管道一些阶段上执行时发送邮件消息。Spinnaker 已经内置了一些阶段,如执行自定义脚本、触发 Jenkins 任务等。
  • 阶段 阶段在 Spinnaker 中,可以作为管道的一个自动构建模块的功能组成。我们可以随意在管道中定义各个阶段执行顺序。Spinnaker 提供了很多阶段供我们选择使用,比如执行发布(Deploy)、执行自定义脚本 (script)、触发 Jenkins 任务 (jenkins)等,功能很强大。
  • 部署策略 Spinnaker 支持精细的部署策略,比如 红/黑(蓝/绿)部署,多阶段环境部署,滚动红/黑策略,canary 发布等。用户可以为每个环境使用不同部署策略,比如,测试环境可以使用红/黑策略,生产环境使用滚动红/黑策略,它封装好了必须的步骤,用户不需要复杂操作,就可以实现企业级上线。

3.Spinnaker 架构所依赖的各个组件


:D 一言句子获取中...