软件开发外包要多少钱,怎么样做免费的百度seo,线上推广平台,360怎么做网站搜索KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.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. KubernetesGitlabJenkinsArgoCD多集群部署
#KubernetesGitlabJenkinsArgoCD多集群部署
在企业级环境中,由于业务的需要会有许多Kubernetes集群需要管理,比如Dev环境,UAT环境,Pro环境等.
每次发布和上线都需要分别登录不同集群进行部署项目.如果我们使用了ArgoCD,它可以支持多集群部署,大大提高了效率和准确性.
ArgoCD允许同时向多个集群部署应用,还可以轻松地管理不同环境的配置,轻松部署应用程序,提高生产效率.此文档,重新规划了CI/CD流程,以符合公司的现有架构和技术需求.它将有助于我们的团队更加高效地部署代码,减少人工干预和错误率,从而提高生产效率.2. 添加WebHooks自动触发
找到Jenkins上的项目并且添加构建触发器.下图中两处的值是要填写到Gitlab-WebHooks中的.找到Gitlab项目对应的仓库,设置webhooks.Jenkins构建触发器中可以找到此处所对应的值.3. Jenkins-构建-执行Shell
#!/bin/bash
K8S_IP192.168.45.12
K8S_PORT22
K8S_CODE/opt/k8s-yaml/java-demo
JKS_CODE/var/lib/jenkins/workspace/javademo
JKS_TARjava-webhook
Build_SHELLbuild-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.jar4.2 Build-Shell
#!/bin/bash
versiondate %y%m%d%H%M%S
YAMLjava-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 15.自动部署Demo测试
5.1 推送代码至仓库特定分支 5.2 WebHookS自动触发 5.3 镜像及Yaml自动Push成功 5.4 ArgoCD检测到Yaml文件发生变化 5.5 ArgoCD与Gitlab对比仓库哈希值与Commit值 5.6 部署成功,钉钉告警提示 6.小结
文档至此我们已经完成了KubernetesGitLabJenkinsArgoCD多集群部署,使用Gitlab统一管理YAML文件,极大地提高了工作效率.