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

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

文章目录

  • Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
    • 1. Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
    • 2. 添加WebHooks自动触发
    • 3. Jenkins-构建-执行Shell
    • 4. 制作镜像及修改Yaml文件
      • 4.1 Dockerfile
      • 4.2 Build-Shell
    • 5.自动部署Demo测试
      • 5.1 推送代码至仓库特定分支
      • 5.2 WebHookS自动触发
      • 5.3 镜像及Yaml自动Push成功
      • 5.4 ArgoCD检测到Yaml文件发生变化
      • 5.5 ArgoCD与Gitlab对比仓库哈希值与Commit值
      • 5.6 部署成功,钉钉告警提示
    • 6.小结

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

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

K8S+Gitlab+Jenkins+ArgoCD

2. 添加WebHooks自动触发

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

Jenkins-webhooks

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

image-20231122151528307

image-20231122151613768

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

image-20231122151346808

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

image-20231122151802861

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 1echo "修改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 推送代码至仓库特定分支

image-20231122154603768

5.2 WebHookS自动触发

image-20231122154721179

5.3 镜像及Yaml自动Push成功

image-20231122154959147

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

WX20231122-150136

WX20231122-150202

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

WX20231122-150317

1700636639736

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

image-20231122155602810

WX20231122-150705

6.小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/202157.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx学习(4)Nginx 配置高可用集群(主从配置)

Nginx 配置高可用集群 Nginx的高可用集群是指由两台或多台Nginx服务器组成的集群系统,通过负载均衡和故障转移等技术,实现高可用性和可伸缩性的目标。在这种集群系统中,每个Nginx服务器都配置为主节点(master)或从节点…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景: 二、实际示例: 三、解决方案: 1. Delphi 代码: 2. javaScript代码: 一、问题背景: 在用Delphi开发程序,无论是移动端还是PC端,都可以很方便的使用TWebBrows…

基于SSM的焦作旅游协会管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

梨花声音教育,美食视频配音再次挑战味蕾

在为美食视频进行配音时,配音艺术家的目标是通过声音来激活观众的感官,唤起他们对美味佳肴的渴望,同时展现食物的诱人特色和烹饪的艺术性。配音应当能够描绘美食的丰富细节,传达烹饪的趣味性以及食材的高品质。以下是一些为美食视…

LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」

原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎 说明:LangServe代替 langchainserver 成为新的langchain 部署工具 官网资料:🦜️🏓 LangServe | &…

VM——畸变校正、标定板标定

1、需求:精密测量时,使用远心镜头时依然会有畸变,最好使用标定板进行畸变校正和像素当量计算 2、方法:使用VM的“畸变校正”、“标定板标定”模块 2.1 标定板制作 step1: 使用海康的标定板生成工具,可以制作海康I型…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中,修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代,软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发,汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理;其次开发…

【开源】基于Vue.js的康复中心管理系统

项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

c语言:回文字符串

题目: 思路: 创建一个字符数组,然后判断字符串长度,用循环,看对应字符是否相等,相等则输出,不相等则将对应字符ascll较大的改成ascll较小的(题目要求字典最小的情况)。…

Markdown语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

自然资源土地管理法律法规知识竞赛这么办才高端

近些年,全国各地自然资源厅举办了土地管理法律法规知识竞赛,从我公司承办的这些赛事来看,传统的必答题、抢答题、风险题的方式已无法激起现场比赛气氛,需要更加复杂有趣的环节设置及高端竞赛软件及其配套设备加持才可以让知识竞赛…

BootStrap【表格二、基础表单、被支持的控件、表单状态】(二)-全面详解(学习总结---从入门到深化)

目录 表格二 表单_基础表单 表单_被支持的控件 表单_表单状态 表格二 紧缩表格 通过添加 .table-condensed 类可以让表格更加紧凑&#xff0c;单元格中的内补&#xff08;padding&#xff09;均会减半 <table class"table table-condensed table-bordered"…

2023-11-22 LeetCode每日一题(网格中的最小路径代价)

2023-11-22每日一题 一、题目编号 2304. 网格中的最小路径代价二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中&#xff0c;从一个…

LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)

目录 1.题目2.答案3.提交结果截图4.图解 链接&#xff1a; 串联所有单词的子串 1.题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 w…

Notpad-- ubuntu下载安装

Notpad-- ubuntu下载安装 下载 Gitee链接&#xff1a; https://gitee.com/cxasm/notepad– 安装 sudo apt install *.deb运行 /opt/apps/com.hmja.notepad/files/Notepad--出错 需要安装qt5 sudo apt-get install qt5-default

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化:输入延迟、卡顿,大小核调度

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化&#xff1a;输入延迟、卡顿&#xff0c;大小核调度 一、前言二、VMware 的优化2.1 键鼠输入延迟问题的解决2.1.1 搜索内核隔离2.1.2 关闭内存完整性并重启2.1.3 搜索启用或关闭windows功能2.1.4 关闭 hyper-v 和…

【Android】画面卡顿优化列表流畅度六(终篇)

上一篇&#xff1a; 【Android】画面卡顿优化列表流畅度五之下拉刷新上拉加载更多组件RefreshLayout修改 场景回顾&#xff1a; 业务经过一年半左右的运行后&#xff0c;出现了明显的列表卡顿情况&#xff1b;于是开始着手进行列表卡顿优化。目前的情况是&#xff1a; 网络图…

2022最新版-李宏毅机器学习深度学习课程-P49 GPT的野望

GPT→类似于Transformer Encoder 训练任务&#xff1a;Predict Next Token 使用MASK-attention&#xff0c;不断预测“下一个token”。 可以用GPT生成文章。 How to use GPT? 给出描述和例子 给出前半段&#xff0c;补上后半段 In-context Learning(no GD) 结果 目前看起…

npm install安装报错

npm WARN notsup Not compatible with your version of node/npm: v-click-outside-x3.7.1 npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t ssh://gitgithub.com/itargaryen/simple-hotkeys.git 解决办法1&#xff1a;&#xff08;没有解决我的问题…