zl程序教程

您现在的位置是:首页 >  后端

当前栏目

kubernetes集群使用spinnaker完成自动化部署

2023-06-13 09:18:50 时间

Spinnaker 构建部署介绍

Spinnaker 的集群管理和部署功能两大核心功能,但是都是单独演示,没有将两者有机结合起来,今天,我们来通过一个示例来演示如何通过 Spinnaker 结合外部平台完成整个流程的自动化构建以及自动化部署到 Kubernetes 集群中。下边,我针对该示例做一些必要的说明。

  1. 开发人员将代码推送到 GitHub。
  2. GitHub 触发 Jenkins。
  3. Jenkins 构建一个 Docker 映像,然后为它添加标签并推送到 Amazon Elastic Container Registry (Amazon ECR)。
  4. Spinnaker 管道将在 Amazon ECR 收到此新 Docker 映像时触发。
  5. 然后 Spinnaker 将执行如下操作:
    1. 使用 Helm 生成 (Bake) Kubernetes 部署文件(开发和生产)。
    2. 将 Kubernetes 部署到开发环境。
    3. 人工判断:我们的管道配置需要人工手动确认,然后才能将应用程序部署到生产环境。它会等待此步骤完成,然后才会继续执行管道。
    4. 将代码部署到生产环境。

Spinnaker 上配置Jenkins 流水线

create applications

建议:命名规则为:环境名0研发部0项目分类

创建流水线(pipeline)

  1. 创建项目
  1. 创建4个Parameters
  1. 创建stage
  • 类型选择Jenkins
  1. 配置流水线

运行测试

可能会出现的问题

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查看

日志收集