Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

这篇具有很好参考价值的文章主要介绍了Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

1. Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

#Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
在企业级环境中,由于业务的需要会有许多Kubernetes集群需要管理,比如Dev环境,UAT环境,Pro环境等.
每次发布和上线都需要分别登录不同集群进行部署项目.如果我们使用了ArgoCD,它可以支持多集群部署,大大提高了效率和准确性.
ArgoCD允许同时向多个集群部署应用,还可以轻松地管理不同环境的配置,轻松部署应用程序,提高生产效率.
此文档,重新规划了CI/CD流程,以符合公司的现有架构和技术需求.它将有助于我们的团队更加高效地部署代码,减少人工干预和错误率,从而提高生产效率.

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

2. 添加WebHooks自动触发

找到Jenkins上的项目并且添加`构建触发器`.

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

下图中两处的值是要填写到`Gitlab-WebHooks`中的.

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

找到Gitlab项目对应的仓库,设置webhooks.

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

Jenkins`构建触发器`中可以找到此处所对应的值.

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

3. Jenkins-构建-执行Shell

#!/bin/bash
K8S_IP="192.168.45.12"
K8S_PORT="22"
K8S_CODE="/opt/k8s-yaml/java-demo"
JKS_CODE="/var/lib/jenkins/workspace/javademo"
JKS_TAR="java-webhook"
Build_SHELL="build-webhook"
#编译
cd $JKS_CODE && mvn clean package
#项目编译以后程序存放目录
cd $JKS_CODE/target
#将编译后的程序进行打包
tar czf $JKS_TAR.tar.gz  *.jar
#进入项目目录删除旧程序包
ssh -p $K8S_PORT root@$K8S_IP "cd $K8S_CODE && rm -rf *.jar $JKS_TAR.tar.gz"
#将新程序包传输值项目目录中
scp -P $K8S_PORT $JKS_CODE/target/$JKS_TAR.tar.gz root@$K8S_IP:$K8S_CODE
#解压新程序包
ssh -p $K8S_PORT root@$K8S_IP "cd $K8S_CODE && tar xf $JKS_TAR.tar.gz"
#执行脚本(制作镜像并推送镜像至仓库,修改Yaml文件并推送至Gitlab仓库)
ssh -p $K8S_PORT root@$K8S_IP "cd $K8S_CODE && bash $Build_SHELL.sh"
#删除Jenkins项目目录中的旧代码
cd $JKS_CODE && rm -rf *

4. 制作镜像及修改Yaml文件

4.1 Dockerfile

# 使用轻量级的基础镜像  
FROM openjdk:8-jdk-alpine  
# 设置工作目录  
WORKDIR /app  
# 复制JAR文件到工作目录  
COPY www-0.0.1-SNAPSHOT.jar app.jar  
# 暴露端口  
EXPOSE 8088  
# 设置JVM参数  
ENV JAVA_OPTS="-Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC -XX:+DoEscapeAnalysis -XX:+EliminateAllocations -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails"
# 启动命令  
CMD exec java $JAVA_OPTS -jar app.jar

4.2 Build-Shell

#!/bin/bash
version=`date +%y%m%d%H%M%S`
YAML="java-deploy"
YAML_CODE="/opt/k8s-yaml/java-demo/java-demo-yaml"
echo "即将制作业务镜像!!!"
docker build -t swr.ap-southeast-1.myhuaweicloud.com/dev/java-demo:${version} .
echo "镜像构建完成,即将上传至镜像仓库" && sleep 1
docker push swr.ap-southeast-1.myhuaweicloud.com/dev/java-demo:${version}
echo "镜像已上传至镜像仓库" && sleep 1

echo "修改Yaml并推送至Git仓库" && sleep 1
cd $YAML_CODE && sed -i "s/image: swr.ap-southeast-1.myhuaweicloud.*/image: swr.ap-southeast-1.myhuaweicloud.com\/dev\/java-demo:${version}/g" $YAML.yaml
echo "修改成功,正在推送代码至Git仓库" && sleep 1
cd $YAML_CODE && git add ./ && git commit -m "${version}" && git push -u origin main
echo "推送代码成功,3分钟左右,ArgoCD会自动发布到指定K8S集群中" && sleep 1

5.自动部署Demo测试

5.1 推送代码至仓库特定分支

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

5.2 WebHookS自动触发

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

5.3 镜像及Yaml自动Push成功

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

5.4 ArgoCD检测到Yaml文件发生变化

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

5.5 ArgoCD与Gitlab对比仓库哈希值与Commit值

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

5.6 部署成功,钉钉告警提示

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署,Kubernetes,kubernetes,gitlab,jenkins,argocd文章来源地址https://www.toymoban.com/news/detail-754376.html

6.小结

文档至此我们已经完成了Kubernetes+GitLab+Jenkins+ArgoCD多集群部署,使用Gitlab统一管理YAML文件,极大地提高了工作效率.

到了这里,关于Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubernetes基于helm部署gitlab-operator

    这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-operator。 先决条件 已运行的 Kubernetes 集群 负载均衡器,为ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb 默认存储类,为gitlab pods提供持久化存储,本示例使用openebs cert-manager,为gitlab提供自签名证书 项目地址:https://gitl

    2024年02月14日
    浏览(36)
  • kubernetes基于helm部署gitlab-runner

    这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-runner。 先决条件: 已运行的 Kubernetes 集群 已运行的 gitlab 实例 项目地址:https://gitlab.com/gitlab-org/charts/gitlab-runner 官方文档:https://docs.gitlab.com/runner/install/kubernetes.html 1、登陆UI创建新的runner 选择Your work– Admin Area 2、选择CI/

    2024年02月13日
    浏览(34)
  • Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台(持续集成部署Hexo博客Demo)

    目录 涉及内容: 一、CICD服务器环境搭建 1、docker 环境安装 (1)、拉取镜像,启动并设置开机自启 (2)、配置docker加速器 2、安装并配置GitLab (1)、创建共享卷目录 (2)、创建 gitlab 容器 (3)、关闭容器修改配置文件 (4)、修改完配置文件之后。直接启动容器 (5)、相关

    2024年03月15日
    浏览(74)
  • kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab

            业务管理平台需要将本地的代码上传并进行版本管理,选择搭建gitlab私服较为合理,下面就介绍下在已有kubernetes集群上如何搭建gitlab私服及配置域名提供服务过程。         选择gitlab-ce镜像,登录dockerhub 搜索 gitlab/gitlab-ce,选择合适版本,这里需要注意的是,

    2024年02月14日
    浏览(91)
  • Jenkins + gitlab 自动部署

    作为后台开发,每次我们开发完或者修改一个bug后都要手动合并,打包或者连接服务器执行打包部署命令,每次手动操作,极大的影响了我们的开发效率,那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服务自动打包,发布,部署,通知呢。因此,今天介绍

    2024年02月12日
    浏览(61)
  • 极狐GitLab 和 ArgoCD 集成实现 GitOps

    目录 ArgoCD 和 GitOps 概述 极狐GitLab 与 ArgoCD 的集成 ArgoCD 的安装 sops 介绍 探秘 gpg sops 和 gpg 的结合 ArgoCD 的使用 极狐GitLab 仓库的添加 gpg public key 的添加 ArgoCD Project 创建 ArgoCD Project 配置 ArgoCD GitOps workflow 验证 ArgoCD 是一款开源且主要针对 Kubernetes 来做 GitOps 的持续交付工具。现

    2024年02月04日
    浏览(39)
  • Jenkins+Gitlab实现代码自动构建部署

    一、环境准备 主机名 ip 安装软件 jenkins 192.168.75.149 jenkins gitlab 192.168.75.147 gitlab web 192.168.75.155 部署应用 二、jenkins服务器配置 1、生产公钥 (2)获取公钥信息 公钥信息在配置 Gitlab SSH Keys 时用到。 (3)获取私钥信息 私钥信息在配置 Jenkins Publish over SSH 时用到。 (4)复制公

    2024年02月16日
    浏览(64)
  • 【Jenkins+Gitlab自动化部署配置】

    以下为整理当初参照的博客 阿里云云服务器 ECS 手动搭建GitLab避坑教程 博客文中的镜像源地址已换 Gitlab忘记root用户密码的解决办法 Gitlab学习笔记(一):基于Ubuntu的gitlab的私有服务搭建(超详细) Jenkins 构建报错:Couldn‘t find any revision to build. Verify the repository and branch conf

    2024年02月21日
    浏览(52)
  • Jenkins+gitlab实现自动化部署

    Jenkins 是一个用 Java 编写的开源自动化工具,带有用于持续集成的插件。用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。 Jenkins 集成了各种开发生命

    2024年02月21日
    浏览(54)
  • Linux:Jenkins:GitLab+Maven+Jenkins的部署(1)

    我这里准备了三台centos7 1.用于部署gitlab      运行内存:6G        名字:Jenkins-GitLab        192.168.6.1         2.用于部署jenkins   运行内存:2G        名字:Jenkins-server         192.168.6.2 3.用于打包测试       运行内存:2G        名字:Jenkins-test         

    2024年02月21日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包