当前位置: 首页 > news >正文

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文件,极大地提高了工作效率.

相关文章:

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

KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…...

在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持

中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上,凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等,曾为中国技术出海写下过浓墨重彩的一笔。在今天,如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业&#xf…...

前端如何判空

这样判空就会报错 loadNode(node, resolve)console.log("node")console.log(node)if (node.data ! null) {this.get(ctx /publicity/publicityType/typeTreeData?id node.data.id).then((res) > {resolve(res)})}}, 需要这样写,用typeof来做类型判…...

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

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

庖丁解牛:NIO核心概念与机制详解 07 _ 字符集

文章目录 Pre概述编码/解码处理文本的正确方式示例程序Code Pre 庖丁解牛:NIO核心概念与机制详解 01 庖丁解牛:NIO核心概念与机制详解 02 _ 缓冲区的细节实现 庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片 庖丁解牛&…...

ansible的基本安装

目录 一、简介 1.ansible自动化运维人工运维时代 2.自动化运维时代 3.ansible介绍 4.ansible特点 二、ansible实践 1.环境 2.ansible管理安装 3.ansible被管理安装 4.管理方式 5.添加被管理机器的ip 6.ssh密码认证方式管理 三、配置免密登录 1.ansible自带的密码…...

开发仿抖音APP遇到的问题和解决方案

uni-app如何引入阿里矢量库图标/uniapp 中引入 iconfont 文件报错文件查找失败 uni-app如何引入阿里矢量库图标 - 知乎 uniapp 中引入 iconfont 文件报错文件查找失败:‘./iconfont.woff?t1673007495384‘ at App.vue:6_宝马金鞍901的博客-CSDN博客 将课件中的cs…...

手机上玩.NET的两种方式

少见!手机上玩 .NET_哔哩哔哩_bilibili 小米平板敲代码,termux安装dotnet和vscode_哔哩哔哩_bilibili 都是先容器加载linux rootfs,然后安装 linux-arm64 版本的 dotnet 命令行方式运行 dotnet,代码编辑到是可以安装使用 vscode…...

DedeBIZ 管理系统 DedeV6 v6.2.6 社区版 免费授权版

DedeBIZ 系统:开源、安全、高效的 DedeV6 v6.2.6 社区版 DedeBIZ 系统是基于 PHP 7 版本开发的,具有强大的可扩展性,并且完全开放源代码。它采用现流行的 Go 语言设计开发,不仅拥有简单易用、灵活扩展的特性,还具备更…...

编译 CUDA加速的 OpenCV-4.8.0 版本

文章目录 前言一、编译环境二、前期准备三、CMake编译四、VS编译OpenCV.sln五、问题 前言 由于项目需要用上CUDA加速的OpenCV,编译时也踩了不少坑,所以这里记录一下。 一、编译环境 我的编译环境是: Win10 RTX4050 CUDA-12.0 CUDNN 8.9.…...

设计模式篇---外观模式

文章目录 概念结构实例总结 概念 外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式引入了一个新的外观类,它为多个业务类的调用提供了一个统一的入口。主要优点…...

leetcode:520. 检测大写字母

一、题目: 链接:520. 检测大写字母 - 力扣(LeetCode) 函数原型:bool detectCapitalUse(char* word) 二、思路: 本题较为简单,分为三种情况: 1.首字母大写,其余小写 2.首字…...

5-6求1-20的阶乘和

#include<stdio.h> //求阶乘 int main(){int n;double sum0;//求和&#xff1a;一点一点加int t1;for (n1;n<15;n){tt*n;sumsumt;}printf("结果是&#xff1a;%22.15e \n",sum);return 0; }为啥最后是%22.15e呢&#xff1f; 因为这个求和的结果太大了 所以转…...

web需求记录

需求1&#xff1a;根据后端传过来的设备名:DESKTOP-4DQRGQB&#xff0c;以及mac:e0:be:03:74:40:0b&#xff1b;iQOO-8&#xff0c;mac:b0:33:66:38:c3:25&#xff0c;用web option 是动态增加的&#xff08;也就是那个选择框里面的东西是根据后端传过来的值动态增加的&#xf…...

[网鼎杯 2018]Fakebook

[网鼎杯 2018]Fakebook 打开环境出现一个登录注册的页面 在登录和注册中发现 了地址栏出现变化&#xff0c;扫一波看看 看看robots.txt和flag.php 访问robots.txt看看 再访问user.php.bak <?php class UserInfo { public $name ""; public …...

微信小程序蓝牙连接 uniApp蓝牙连接设备

蓝牙列表期待效果 代码 <template><view class"bluetooth-list"><view class"align-items option" style"justify-content: space-between;" v-for"item in bluetoothList" :key"item.deviceId"><vie…...

启动Dubbo项目注册Zookeeper时提示zookeeper not connected异常原理解析

原创/朱季谦 遇到一个很诡异的问题&#xff0c;我在启动多个配置相同zookeeper的Dubbo项目时&#xff0c;其他项目都是正常启动&#xff0c;唯独有一个项目在启动过程中&#xff0c;Dubbo注册zookeeper协议时&#xff0c;竟然出现了这样的异常提示—— Caused by: java.lang.…...

我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)

几何变换指的是将一幅图像映射到另一幅图像内的操作。 cv2.warpAffine&#xff1a;使用仿射变换矩阵对图像进行变换&#xff0c;可以实现平移、缩放和旋转等操作。cv2.warpPerspective&#xff1a;使用透视变换矩阵对图像进行透视变换&#xff0c;可以实现镜头校正、图像纠偏等…...

MATLAB算法实战应用案例精讲-【图像处理】图像缩放

目录 前言 知识储备 MATLAB图像处理函数 数字数字图像增强 数字数字图像的变换...

Doris的PROPERTIES与ENGINE(九)

接上篇----------Doris分区与分桶 在建表语句的最后 PROPERTIES 中&#xff0c;可以指定以下两个参数&#xff1a; replication_num 每个 Tablet 的副本数量。默认为 3&#xff0c;建议保持默认即可。在建表语句中&#xff0c;所有 Partition 中的 Tablet 副本数量统一指定。…...

从GPS到PTP:深入拆解Livox雷达硬件时间同步原理,为你的SLAM系统打好‘时钟’基础

从原子钟到点云&#xff1a;Livox雷达时间同步技术的工程哲学 当激光雷达的激光束以每秒数十万次的频率扫描环境时&#xff0c;每个光子飞行时间的测量误差若超过1纳秒&#xff0c;就会导致3厘米的空间定位偏差——这相当于自动驾驶汽车错过一个完整的车道线。在波士顿动力Atla…...

Agent Framework 中为 Agent Skill 接入依赖注入 DI

在前面的文章中&#xff0c;我们介绍过 FileBased、CodeBased 和 ClassBased 等不同的 Skill 实现方式&#xff0c;也演示了如何通过 AgentSkillsProvider 或 AgentSkillsProviderBuilder 将多个 Skill 组合起来&#xff0c;让一个 Agent 同时具备多种能力。在实际项目中&#…...

移动端GUI自动化测试内存管理工具MemGUI-Bench详解

1. 项目背景与核心价值移动端GUI自动化测试领域长期存在一个被忽视的关键问题——内存管理能力的量化评估。MemGUI-Bench的出现填补了这一空白&#xff0c;它专门针对移动GUI代理&#xff08;如Appium、UI Automator等底层引擎&#xff09;设计了一套完整的内存性能评估体系。在…...

从Whetstone.ChatGPT到官方SDK:.NET集成OpenAI API的演进与迁移实践

1. 项目概述&#xff1a;一个已归档的 .NET ChatGPT 客户端库如果你是一个 .NET 开发者&#xff0c;想在 C# 项目里快速集成 OpenAI 的 ChatGPT、GPT-4、Whisper 等 AI 能力&#xff0c;那你很可能在某个时间点搜索到过一个叫Whetstone.ChatGPT的库。这个库在 2023 年曾因被 Vi…...

终极Windows安卓应用安装方案:告别臃肿模拟器,体验轻量级跨平台

终极Windows安卓应用安装方案&#xff1a;告别臃肿模拟器&#xff0c;体验轻量级跨平台 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows上运行安…...

5分钟掌握抖音批量下载神器:免费获取高清无水印视频的终极指南

5分钟掌握抖音批量下载神器&#xff1a;免费获取高清无水印视频的终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...

Tiny11Builder:基于DISM的Windows 11镜像精简架构与优化方案

Tiny11Builder&#xff1a;基于DISM的Windows 11镜像精简架构与优化方案 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder Tiny11Builder是一个基于PowerShell和Mic…...

终极指南:如何用BetterGI实现原神全自动游戏体验

终极指南&#xff1a;如何用BetterGI实现原神全自动游戏体验 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹…...

Sunshine游戏串流终极指南:打造个人云游戏平台的完整实用方案

Sunshine游戏串流终极指南&#xff1a;打造个人云游戏平台的完整实用方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源自托管的游戏串流服务器&#xff0c;专…...

ipasim:在Windows上运行iOS应用的终极完整指南

ipasim&#xff1a;在Windows上运行iOS应用的终极完整指南 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 想要在Windows电脑上体验iOS应用&#xff0c;却不想购买昂贵的苹果设备&#xff1f;ipasim正是你寻找的…...