kubernetes集群使用spinnaker完成自动化部署
kubernetes集群使用spinnaker完成自动化部署
王先森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
- 配置流水线
运行测试
可能会出现的问题
1 | WARNING hudson.security.csrf.CrumbFilter#doFilter: No valid crumb was included in request for job/xxxxx by k4nz. Returning 403. |
解决办法
1 | vim /var/k8s-yaml/jenkins/deployment.yaml |
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配置
1 | "imageDescription": { |
1 | "imageDescription": { |
重新构建流水线
日志收集
监控(略)
Spinnaker 构建dubbo-demo-consumer
流水线名称要与gitee上名称一致!
创建4个Parameters
创建流水线(pipeline)
Spinnaker配置svc
Spinnaker配置ingress
Spinnaker 上配置deploy
修改Deploy json配置
1 | "imageDescription": { |
1 | "imageDescription": { |
构建流水线打开demo-test.od.com查看
日志收集
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果