Spinnaker 生产环境安装部署监控

  • 1. 架构分析

  • 2.准备工作

    • 2.1 启动Halyard容器

    • 2.2 下载所需要的镜像

    • 2.3 准备bom文件

  • 3.Halyard配置管理

    • 3.1.Halyard初始化配置

    • 3.2 添加镜像仓库(harbor)和k8s集群账户

    • 3.3 开启特性功能

    • 3.4 配置JenkinsCI集成

    • 3.5 配置GitHub/GitLab集成

  • 4. 使用外部Redis集群

  • 5. 使用SQL数据库

    • 5.1 Clouddriver服务

    • 5.2 Front50服务

    • 5.3 Orca服务

  • 6.部署

  • 7. 其他设置

    • 7.1 认证与授权

    • 7.2 邮件通知

    • 7.3 金丝雀分析

    • 7.4 监控Spinnaker

1. 架构分析

Halyard + Kubernetes + Redis + MySQL57 + S3

  • redis: Gate、Orca、Clouddrive、Rosco、Igor、Fiat、Kayenta

  • S3:Front50 、Kayenta


数据持久化
  • Orca 、Clouddriver  默认安装使用redis存储数据,转换为使用SQL数据库存储。

  • Front50 默认安装使用s3持久化存储,转换为使用SQL数据库存储。

  • 使用k8s外部redis集群。


2.准备工作

  • 包含6个节点的redis集群(3主+3从)。

  • MySQL 5.7数据库。

  • 部署Minio用于S3存储。

  • 下载Halyard容器镜像。

  • 下载Spinnaker集群所需的容器镜像(阿里云)。

  • 下载BOM自定义安装所需的文件。

2.1 启动Halyard容器

也可以使用二进制安装。最好将halyard运行在一台配置好kubectl客户端的节点上。因为后续需要用到k8s集群账户信息。

docker pull registry.cn-beijing.aliyuncs.com/spinnaker-cd/halyard:1.32.0
mkdir /root/.hal
docker run -itd --name halyard \
  -v /root/.hal:/home/spinnaker/.hal \
  -v /root/.kube:/home/spinnaker/.kube \
  registry.cn-beijing.aliyuncs.com/spinnaker-cd/halyard:1.32.0
 
## 以root身份进入容器,修改配置文件
docker exec -it -u root halyard bash
 
## 修改spinnaker.config.input.gcs.enabled = false 。
vi /opt/halyard/config/halyard.yml
 
spinnaker:
  artifacts:
    debian: https://dl.bintray.com/spinnaker-releases/debians
    docker: gcr.io/spinnaker-marketplace
  config:
    input:
      gcs:
        enabled: false
      writerEnabled: false
      bucket: halconfig
 
## 需要重启容器(如果此命令未重启,则需要退出容器然后 docker restart halyard)
hal shutdown


## 启动

docker start halyard

2.2 下载所需要的镜像

所有的镜像已经通过GitHub Actions自动同步到阿里云镜像仓库。大家直接下载。registry.cn-beijing.aliyuncs.com/spinnaker-cd/  为了方便可以直接运行脚本下载当前版本的所有镜像。


bom文件和下载镜像的脚本都在这个压缩包中,下载https://github.com/zeyangli/spinnaker-cd-install/actions

# 上传到服务器(运行halyard容器的节点)
scp 1.22.1-Image-Script.zip root@master.zy.com:/root

unzip 1.22.1-Image-Script.zip
cd 1.22.1
[root@master 1.22.1]# ls -a
.  ..  .boms  GetImages.sh  tagfile.txt

## .boms需要放到.hal目录下
## GetImages.sh 镜像下载脚本
## tagfile.txt 镜像标签

sh -x GetImages.sh  
chmod 777 -R .hal/

## 等待镜像下载完成(这个脚本中做了ssh免密哦)

tagfile.txt

## tagfile
[root@master 1.22.1]# cat tagfile.txt
echo:2.14.0-20200817170018
clouddriver:6.11.0-20200818115831
deck:3.3.0-20200818132306
fiat:1.13.0-20200817170018
front50:0.25.1-20200831095512
gate:1.18.1-20200825122721
igor:1.12.0-20200817200018
kayenta:0.17.0-20200817170018
orca:2.16.0-20200817170018
rosco:0.21.1-20200827112228

GetImages.sh

## script
#!/bin/bash

S_REGISTRY="gcr.io/spinnaker-marketplace"
T_REGISTRY="registry.cn-beijing.aliyuncs.com/spinnaker-cd"
NODES="node01.zy.com node02.zy.com"

## 下载镜像
function GetImages(){
    echo -e "\033[43;34m =====GetImg===== \033[0m"

    IMAGES=$( cat tagfile.txt)

    for image in ${IMAGES}
    do
        for node in ${NODES}
        do
           echo  -e "\033[32m ${node} ---> pull ---> ${image} \033[0m"
           ssh ${node} "docker pull ${T_REGISTRY}/${image}"
           echo  -e "\033[32m ${node} ---> tag ---> ${image} \033[0m"
           ssh ${node} "docker tag ${T_REGISTRY}/${image} ${S_REGISTRY}/${image}"
        done
    done
    for node in ${NODES}
    do
       echo -e "\033[43;34m =====${node}===镜像信息===== \033[0m"
       ssh ${node} "docker images | grep 'spinnaker-marketplace' "
    done

}

GetImages

2.3 准备bom文件

[root@master 1.22.1]# mv .boms/ ~/.hal/
[root@master 1.22.1]# cd ~/.hal/
[root@master .hal]# cd .boms/
[root@master .boms]# ls
bom  clouddriver  deck  echo  fiat  front50  gate  igor  kayenta  orca  rosco
[root@master .boms]# tree
.
├── bom
│   ├── 1.19.4.yml
│   └── 1.22.1.yml
├── clouddriver
│   ├── 6.11.0-20200818115831
│   │   └── clouddriver.yml
│   ├── 6.7.3-20200401190525
│   │   └── clouddriver.yml
│   └── clouddriver.yml
├── deck
│   ├── 3.0.2-20200324040016
│   │   └── settings.js
│   ├── 3.3.0-20200818132306
│   │   └── settings.js
│   └── settings.js
├── echo
│   ├── 2.11.2-20200401121252
│   │   └── ech
Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。Spinnaker 组件:Spinnaker 最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交付平台,能够实现:通过灵活和可配置的管道实现可重复的自动部署提供一个所有环境的全局视图,一个应用程序可以看见自己的在所属管道中的状态通过一致且可靠的API,提供可编程配置易于配置、维护和扩展兼容Asgard特性同时,Spinnaker作为云平台部署工具,Spinnaker团队和Google、微软、Pivotal等公司合作,致力于提供在多种平台上实现开箱即用的集群管理和部署功能。目前,Spinnaker可以部署管理AWS和Google云平台(GCP),针对Azure等平台的支持也在进行中。Spinnaker主要包含2块内容,集群管理和部署管理。集群管理功能,主要用于管理云上的资源。集群管理将云上资源做了逻辑划分:机器组:机器组是Spinnaker管理资源的单位。机器组标识了机器实例,并且关联了一个负载均衡器和安全组。每个机器组都拥有独立的配置信息(如机器帐号等);安全组:安全组定义了网络访问权限,也就是一般意义上的一组防火墙规则;负载均衡器:负载均衡器用于将网络流量重定向到机器组中的机器实例,负载均衡器还可以指定一系列规则,用于对机器组中的机器实例做健康检查;集群:集群是由用户定义的,对机器组的逻辑分组;部署管理功能用于创建一个持续交付流程。部署管理的核心是管道,在Spinnaker的定义中,管道由一系列的阶段(stages)组成。管道可以 由Jenkins、定时器、其他管道或者人工触发。同时,管道可以配置参数和通知,可以在管道一些节点上发出消息。Spinnaker已经内置了一些阶 段,如执行自定义脚本、触发Jenkins任务等。介绍来自 InfoQ 标签:Spinnaker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值