Devops系列四(使用argocd部署java应用到k8s容器)

news2024/10/7 20:36:44

一、说在前面的话

上文已为我们准备好了以下内容:

  • 制作java应用的docker镜像,并推送至镜像仓库
  • 上传helm yaml代码至gitlab仓库(此gitlab和java应用所在的gitlab可以独立,也可以在一起,但是不宜在同一个工程,所以这里特此区分)
  • 安装k8s和argocd
  • argocd的权限设计和对接ldap(非必须)

本文先梳理出整个devops的设计框架,然后将演示java应用是如何在argocd中部署的,以及升级程序的版本号后,自动触发更新部署。

二、总体设计

在这里插入图片描述

  • 这里的jenkins CI部分将交由下文继续展开,不属于本文的范畴
  • 本文重点讲述argocd CD部分是如何部署的细节

三、argocd project

这里我采用的是default–默认组,在实际使用中,你需要创建多个project,用于隔离不同组里的人员其权限。
换句话说,你公司有5个业务组,那么就需要创建5个project。(这里不去翻译为中文,因为工程或者说项目,实在和我们实际的组不是很搭)

  • 我理解的argocd中的project是指物理/虚拟组的概念,和权限是搭配使用的。给不同的人分配至不同的project,隔离不同组之间的权限。

在这里插入图片描述

四、 argocd cluster

因为我们把argocd部署在k8s,所以默认就有一个k8s可供部署应用。
在这里插入图片描述

你如果需要部署到其他k8s里,在这里再新增k8s的配置项即可。后面你在创建argocd 应用的时候就可以选择它。

五、argocd Repositories

这里的仓库,是指Helm yaml文件所存储的地方。前文我们已详细描述了如何制作并推送helm,本文就直接拿来使用,不再赘述。

gitlab的准备工作

在这里插入图片描述
在这里插入图片描述
把ssh密钥对的公钥存储在gitlab, 私钥保存在argocd。
在这里插入图片描述

正式创建argocd的仓库

下面的ssh private key data就是上图中的ssh私钥文件的内容。
在这里插入图片描述
返回仓库列表:
在这里插入图片描述

  • 注意,你仓库的CONNECTION STATUS是Successful,说明授权成功。
  • 接下里就是创建argocd 应用了。

六、argocd application

本文的重头戏了,前文所有的准备皆是为这一步做准备。

创建应用名称,选择所属的组,并设置自动部署还是手动部署

在这里插入图片描述

helm yaml和部署目标

在这里插入图片描述

yaml的部署方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用详情

创建好的应用见下
在这里插入图片描述
在这里插入图片描述

七、对argocd 应用的补充说明

  • 应用中的参数覆盖,在详情界面,会有一个锤子状的图标以示区分。我这里要说的是,被覆盖的参数,只能手动修改后触发部署。像版本号等字段,是需要采用gitops技术来实现自动更新部署的,不要在argocd中进行参数覆盖,修改入口必须是在gitlab代码库。
    在这里插入图片描述
  • 查看应用的详情:yaml格式
    你查看MANIFEST内容,右上方点击“EDIT”即可修改。
    在这里插入图片描述
  • 同步策略详情见下:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
      allowEmpty: false
    syncOptions:
    - Validate=false
    - CreateNamespace=true
    - PruneProagationPolicy=foreground
    - PruneLast=true
    retry:
      limit: 5
      backoff:
        duration: 5s
        factor: 2
        maxDuration: 3m

八、总结

每次更新部署的时候,你只要修改git工程里的devops-service/values.yaml中的版本号,argocd就会自动触发部署。

后文有jenkins这款CI工具后,如果要把CI和CD串联起来,做到自动化,只需要在jenkins里修改values.yaml文件中的版本号。这也就是gitops是思想,基于git代码的提交触发以前人工的操作。

本文把我在使用argocd的过程中遇到的坑都一一总结出来,希望后来者有个对照。

踩过的坑,最大就是在helm部署的时候,没有做到gitops,要么没有选择values.yaml文件,要么覆盖了不应该覆盖的参数–程序版本号。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#:AES的加密解密,用于明文加密

大白话理解&#xff1a;将明眼能看到的字符给用另一种读不懂的语言给翻译&#xff0c;就像是摩斯密码……就像base64加密&#xff0c;都有异曲同工之妙。 建一个新的类&#xff08;这里放了aes加密解密的方法&#xff09; public static class AesPassword{/// <summary&g…

解锁Nginx的奇幻世界:入门

文章目录 一 Nginx简介1.1 C10k问题1.2 Nginx 二 Nginx的作用2.1 反向代理2.2 方向代理演示2.3 负载均衡2.4 动静分离 三 Nginx的安装3.1 windows环境 一 Nginx简介 1.1 C10k问题 C10k问题指的是在一个服务器端同时处理成千上万&#xff08;10,000&#xff09;个并发连接的能力…

【论文精读】RA-MVSNet:Multi-View Stereo Representation Revisit: Region-Aware MVSNet

今天读的是一篇发表在CVPR2023上的文章&#xff0c;作者来自浙大与阿里巴巴。 文章链接&#xff1a;Multi-View Stereo Representation Revisit: Region-Aware MVSNet 目录 Abstract1 Introduction2 Related Work3 Method3.1 Cost Volume Construction3.2 Signed Distance Supe…

十一、弹性盒flex - 介绍

目录 1.flex介绍 2.详解 一、flex介绍 flex&#xff08;弹性盒&#xff0c;伸缩盒&#xff09; css中的又一种布局手段&#xff0c;它主要用来代替浮动来完成页面的布局。flex可以使元素具有弹性&#xff0c;让元素可以跟随页面的大小的改变而改变。 我们知道float&#xff1…

【linux kernel】一文总结linux内核通知链

文章目录 1、通知链简介2、通知链的类型3、原理分析和API&#xff08;1&#xff09;注销通知器&#xff08;2&#xff09;注销通知器&#xff08;3&#xff09;通知链的通知 4、实例代码&#xff08;1&#xff09;定义一个通知链&#xff08;2&#xff09;实现观察者模块&#…

从源码全面解析 Java SPI 的来龙去脉

一、引言 对于 Java 开发者而言&#xff0c;关于 dubbo &#xff0c;我们一般当做黑盒来进行使用&#xff0c;不需要去打开这个黑盒。 但随着目前程序员行业的发展&#xff0c;我们有必要打开这个黑盒&#xff0c;去探索其中的奥妙。 虽然现在是互联网寒冬&#xff0c;但乾坤…

数字化转型应该从哪里开始?

数字化转型可能是一个复杂的过程&#xff0c;涉及将数字技术和战略集成到组织的各个方面。虽然具体的起点可能会根据组织的规模、行业和目标而有所不同&#xff0c;但数字化转型计划通常从以下几个共同领域开始&#xff1a; 愿景和战略&#xff1a;转型之旅应从与组织目标一致的…

百万数据SQL优化技巧,看这一篇就够了(实操+详细总结)

前言&#xff1a;这次准备了100W的数据进行SQL性能测试&#xff0c;数据库采用的是MySQL&#xff0c;总共介绍了常见的15种SQL优化方式&#xff0c;每一种优化方式都进行了实打实的测试&#xff0c;逐行讲解&#xff0c;通俗易懂&#xff01; 目录 一、准备数据 1、创建表结构…

Windows环境下安装和配置python环境

Windows环境下安装和配置python环境 1.官网下载&#xff1a;https://www.python.org/downloads/release 2.安装&#xff1a;自定义路径即可无脑下一步 3.cmd打开控制台&#xff0c;输入python&#xff0c;如果页面切换成以下样子就说明安装成功了 4.运行python脚本【步骤3切入…

555、Vue 3 学习笔记 -【常用Composition API(四)】 2023.07.06

目录 一、setup的两个注意点1. setup执行的时机2. setup的参数 二、 计算属性与监视1. computed函数2. watch函数3. watchEffect函数 三、参考链接 一、setup的两个注意点 1. setup执行的时机 在beforeCreate之前执行一次&#xff0c;this是undefined 2. setup的参数 props…

GitLab名词介绍

GitLab名词介绍 分支&#xff1a;active、stale、default、protected IDEA中git面板&#xff1a;本地、远程、HEAD 合并时的选项&#xff1a;Delete、squash 查看Git常用操作 分支&#xff1a;active、stale、default、protected 在分支页面下&#xff0c;有active、stale…

k8s中kubectl陈述式/声明式资源管理

k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的信息&…

TongWeb8关于内存泄露提示: To prevent a memory leak

原因&#xff1a; 该问题与 https://blog.csdn.net/realwangpu/article/details/109510297 相同&#xff0c;TongWeb7, TongWeb8在卸载应用时&#xff0c;会尝试回收可能存在的内存泄露&#xff0c; 本质应该从应用方面解决。 解决办法&#xff1a; 若无法修改应用&#xff0c…

深度学习神经网络学习笔记-论文研读-transformer

摘要 优势序列转导模型基于复杂的循环或包括一个编码器和一个解码器的卷积神经网络。最好的表现良好的模型还通过attention 连接编码器和解码器机制。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c; 完全基于注意力机制&#xff0c;省去了递归和卷积完…

【成都理工826】22年真题及解析

哈喽大家好&#xff0c;鉴于真题系列反馈很不错&#xff0c;我决定重启真题系列&#xff01;之前更新的22真题合集点击这里&#xff1a; 成都理工826信号与系统难度不是特别大&#xff0c;但是对计算的要求比较高。掌握好基础&#xff0c;计算细心是可以拿高分的。本套试题内容…

【我们一起60天准备考研算法面试(大全)-第四天 4/60(二叉搜索树与表达式树)】【每天40分钟,我们一起用60天准备 考研408-数据结构(笔试)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思&#xff0c;默认情况下是Not watching&#xff0c;当选择Watch后&#xff0c;你会收到这个GitHub项目的所有动态。比如&#xff1a;有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…

TypeScript - 函数(中)

目录 1、编写良好泛型函数的准则 1.1 向下推送类型参数 1.2 使用较少的类型参数 1.3 类型参数应出现两次 2、可选参数 3、回调中的可选参数 4、函数重载 5、重载签名和实现签名 6、写好重载 1、编写良好泛型函数的准则 编写泛型函数很有趣&#xff0c;并且很容易被类…

Kibana对索引库的操作(3)

这里我们主要是对索引库进行各种查询的操作,所以要提前准备一些数据 POST /leq/goods/3 {"title": "小米手机","images": "3.jpg","price": 4299,"stock": 200,"saleable": true,"subTitle":…

读发布!设计与部署稳定的分布式系统(第2版)笔记20_实例层之代码

1. 术语的定义 1.1. 服务 1.1.1. 指共同协作、以单元的形式对外提供功能的跨机器进程集合 1.1.2. 一个服务可以由多种可执行文件组成 1.1.3. 一个服务可能包含来自多个可执行文件的多个进程 1.1.4. 可能对外呈现单个IP地址&#xff0c;并在后台进行负载均衡 1.1.5. 可能有…