kubernetes集群使用spinnaker完成自动化部署
2023-06-13 09:18:50 时间
Spinnaker 构建部署介绍
Spinnaker 的集群管理和部署功能两大核心功能,但是都是单独演示,没有将两者有机结合起来,今天,我们来通过一个示例来演示如何通过 Spinnaker 结合外部平台完成整个流程的自动化构建以及自动化部署到 Kubernetes 集群中。下边,我针对该示例做一些必要的说明。
- 开发人员将代码推送到 GitHub。
- GitHub 触发 Jenkins。
- Jenkins 构建一个 Docker 映像,然后为它添加标签并推送到 Amazon Elastic Container Registry (Amazon ECR)。
- Spinnaker 管道将在 Amazon ECR 收到此新 Docker 映像时触发。
- 然后 Spinnaker 将执行如下操作:
- 使用 Helm 生成 (Bake) Kubernetes 部署文件(开发和生产)。
- 将 Kubernetes 部署到开发环境。
- 人工判断:我们的管道配置需要人工手动确认,然后才能将应用程序部署到生产环境。它会等待此步骤完成,然后才会继续执行管道。
- 将代码部署到生产环境。
Spinnaker 上配置Jenkins 流水线
create applications
建议:命名规则为:环境名0研发部0项目分类
创建流水线(pipeline)
- 创建项目
- 创建4个Parameters
- 创建stage
- 类型选择Jenkins
- 配置流水线
运行测试
可能会出现的问题
WARNING hudson.security.csrf.CrumbFilter#doFilter: No valid crumb was included in request for job/xxxxx by k4nz. Returning 403.
解决办法
vim /var/k8s-yaml/jenkins/deployment.yaml
....
env:
- name: JAVA_OPTS
value: -Xmx512m -Xms512m -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
Spinnaker 上配置deploy
创建stage
注意:这里就是点点点实现k8s-dp配置页面
Configure Deployment Cluster
名称 | 用法 |
---|---|
Account | 那个用管理k8s |
Namespace | 发布到那个namespace |
Stack | 灰度发布时:c |
Detail | 项目名称:dubbo-demo-service |
Containers | 在harbor中获取容器 |
Init Containers | k8s高级特性 |
Strategy | 发布策略 |
History Limit建议保留7个副本
挂载目录,看着眼熟吗?filebaet与业务容器日志挂载。
在Pod Annotations中加注解,添加prometheus监控
Node Selector:人工调度到那个节点
Environment Variables:添加环境变量
日志挂载
添加就绪性探针
第二个容器配置
修改Deploy json配置
- 原本
- 修改
"imageDescription": {
"account": "harbor",
"imageId": "harbor.od.com/app/dubbo-demo-service:apollo_20210905_1603",
"registry": "harbor.od.com",
"repository": "app/dubbo-demo-service",
"tag": "apollo_20210905_1603"
},
"imageDescription": {
"account": "harbor",
"imageId": "harbor.od.com/${ parameters.image_name }:${ parameters.git_ver }_${ parameters.add_tag }",
"registry": "harbor.od.com",
"repository": "${ parameters.image_name }",
"tag": "${ parameters.git_ver }_${ parameters.add_tag }"
},
重新构建流水线
日志收集
监控(略)
Spinnaker 构建dubbo-demo-consumer
流水线名称要与gitee上名称一致!
创建4个Parameters
创建流水线(pipeline)
Spinnaker配置svc
Spinnaker配置ingress
Spinnaker 上配置deploy
修改Deploy json配置
- 原本
- 修改
"imageDescription": {
"account": "harbor",
"imageId": "harbor.od.com/app/dubbo-demo-web:tomcat_20210909_1140",
"registry": "harbor.od.com",
"repository": "app/dubbo-demo-web",
"tag": "tomcat_20210909_1140"
},
"imageDescription": {
"account": "harbor",
"imageId": "harbor.od.com/${ parameters.image_name }:${ parameters.git_ver }_${ parameters.add_tag }",
"registry": "harbor.od.com",
"repository": "${ parameters.image_name }",
"tag": "${ parameters.git_ver }_${ parameters.add_tag }"
},
构建流水线打开demo-test.od.com查看
日志收集
相关文章
- kubernetes核心实战(五)--- StatefulSets
- 快速了解 Kubernetes 的架构及特性
- Kubernetes 1.24 1.25 集群使用docker作为容器
- Kubernetes集群调度介绍
- Kubernetes 集群高可用
- Kubernetes 二进制部署(三)集群部署(多 Master 节点通过 Nginx 负载均衡)
- 17-Kubernetes进阶学习之集群升级迁移和维护实践
- Prometheus监控实战系列十九:监控Kubernetes集群(上篇)
- 关于Kubernetes集群中常见问题的排查方法的一些笔记
- kubernetes-pod详解(二)
- Kubernetes 集群零信任访问架构设计
- Kubernetes on Bare Metal vs. Kubernetes on VMs:不仅仅是性能问题
- 基于kubernetes的etcd集群部署
- kubernetes部署mongodb集群
- kubernetes安装minio集群
- 从修复 Kubernetes 集群中,我学到了什么
- kubernetes部署nacos集群
- kubernetes集群交付安装spinnaker自动化部署
- 使用Prometheus联动Grafana监控kubernetes集群状态
- Kubernetes部署升级Traefik2.6
- Kubernetes集群部署之五node节点部署详解架构师
- Kubernetes集群部署之二CA证书制作详解架构师
- Kubernetes集群部署之一系统环境初始化详解架构师
- 360开源企业级 Kubernetes 集群管理平台 Wayne
- 在 Kubernetes 上扩展 TensorFlow 模型
- 为什么容器和 Kubernetes 有潜力运行一切
- 在Kubernetes上快速部署Redis集群(redis集群k8s部署)