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