GitLab CI/CD实现的集群自动部署方案

2023年 8月 26日 52.4k 0

Gitlab CI/CD实现的集群自动部署方案

关键词:

  • gitlab cicd
  • 流水线
  • 目标机器 ip 组
  • ssh 免密登陆并远程执行命令
  • 需要提前安装搭建好 gitlab 和 runner, 实践过gitlab cicd

自动部署的执行流程

  • 我们提交代码后,根据配置的 gitlab-ci.yml 文件触发流水线,包含test,build,deploy三个阶段
    • test 执行单元测试
    • build 打包上传到云存储
    • deploy 从云存储下载最新包,执行部署
  • test、build 阶段都是在同一台runner机器上执行单元测试,并打包上传到云存储
  • deploy 阶段由需要由 runner 机器获取到所有要部署机器的一组 ip,runner 机器通过 ssh 命令逐台登陆目标机器执行部署命令完成对集群的自动部署。有个前提需要让runner 机器的用户有免密登陆所有目标机器的权限,可以将runner机器的公钥配置到一台目标机器上,再以这台目标机器作为基础镜像初始化,这样后续的linux实例即可避免扩容时一台台配置目标机器。
  • 方案流程图如下:

    架构图

    gitlab-ci.yml流水线配置案例

    stages:
    	- test
      - build
      - deploy
      
    test:
      stage: test
      tags:
       - [runner 机器的tag]
      script:
       - mvn test
       - [jar包上传至云存储]
      only:
        - master
    
    build:
      stage: build
      tags:
        - [runner 机器的tag]
      script:
        - mvn clean package -Dmaven.test.skip=true
      only:
        - master
    
    deploy:
      stage: deploy
      tags:
        - [runner 机器的tag]
      script:
        - sh remote-deploy.sh
      only:
        - master
    

    remote-deploy.sh 远程部署集群脚本示例

    #!/bin/bash
    successCount=0
    errorCount=0
    # 这里可以是通过云厂商的接口获取到目标机器的ip组
    ips=("123.456.789" "123.456.789" "123.456.789")
    for((i=0; i

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论