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

这篇具有很好参考价值的文章主要介绍了Devops系列四(使用argocd部署java应用到k8s容器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说在前面的话

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

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

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

二、总体设计

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

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

三、argocd project

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

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

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

四、 argocd cluster

因为我们把argocd部署在k8s,所以默认就有一个k8s可供部署应用。
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java

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

五、argocd Repositories

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

gitlab的准备工作

Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
把ssh密钥对的公钥存储在gitlab, 私钥保存在argocd。
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java

正式创建argocd的仓库

下面的ssh private key data就是上图中的ssh私钥文件的内容。
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
返回仓库列表:
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java

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

六、argocd application

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

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

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

helm yaml和部署目标

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

yaml的部署方式

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

应用详情

创建好的应用见下
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
Devops系列四(使用argocd部署java应用到k8s容器),argocd,java

七、对argocd 应用的补充说明

  • 应用中的参数覆盖,在详情界面,会有一个锤子状的图标以示区分。我这里要说的是,被覆盖的参数,只能手动修改后触发部署。像版本号等字段,是需要采用gitops技术来实现自动更新部署的,不要在argocd中进行参数覆盖,修改入口必须是在gitlab代码库。
    Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
  • 查看应用的详情:yaml格式
    你查看MANIFEST内容,右上方点击“EDIT”即可修改。
    Devops系列四(使用argocd部署java应用到k8s容器),argocd,java
  • 同步策略详情见下:
  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文件,要么覆盖了不应该覆盖的参数–程序版本号。文章来源地址https://www.toymoban.com/news/detail-534285.html

到了这里,关于Devops系列四(使用argocd部署java应用到k8s容器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 实践:devops之K8s环境持续部署

    https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X2Q6MzL1-1688896509292)(https://bucket-hg.oss-cn-shanghai.aliyuncs.com/img/image-20230709101119001.png)] CI流水线: 下载代码 构建单元测试 代码扫描 构建镜像 更新发布文件

    2024年02月13日
    浏览(29)
  • Azure Devops上模版化K8s部署

    在2022年我们终于完成了主要业务系统上K8s的计划,在这里总结下我们上K8s时候的模版工程。   前提条件 本文不讨论K8s是什么,什么是容器化,为什么需要容器化,什么是微服务等这些基础内容,这些到处说的烂大街了。此类内容有兴趣可以看看微软系的介绍: 微服务体系架

    2024年02月02日
    浏览(27)
  • DevOps搭建(十六)-Jenkins+K8s部署详细步骤

    ​ 要想从Harbor仓库中拉取镜像,首先要往主机和从机的daemon.json文件中添加Harbor的地址信息 \\\"insecure-registries\\\":[\\\"192.168.88.125:80\\\"],别忘了80端口 添加完之后,重启下docker 要拉取镜像,需要Harbor登录进行拉取,到Kuboard控制台对应的命名空间找到 密文 菜单,点击 创建Secret 。 填写

    2024年01月16日
    浏览(38)
  • Jenkins使用k8s部署应用

    1、jenkins在k8s内部署(请参考其他人的文章) 2、jenkins安装kubenents相关插件 3、配置k8s云         非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较适合一定规模的公司。  插件安装后,打开

    2024年02月15日
    浏览(46)
  • 微服务系列文章之 Springboot应用在k8s集群中配置的使用

    Docker部署其实也可以再docker run或者dockerfile里面,将配置文件目录映射到宿主机,然后通过宿主机配置文件修改参数。 很多时候Dockerfile文件中需要定义变量,减少对Dockerfile文件的修改,在编译的时候从外部传入参数,这种情况可使用  ARG 参数,然后通过 --build-arg 进行赋值。

    2024年02月16日
    浏览(25)
  • K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(28)
  • k8s 入门到实战--部署应用到 k8s

    k8s 入门到实战 01.png 本文提供视频版: 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。 公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只

    2024年02月09日
    浏览(29)
  • K8S系列三:单服务部署

    本文是K8S系列第三篇,主要面向对K8S新手同学,阅读本文需要读者对K8S的基本概念,比如Pod、Deployment、Service、Namespace等基础概念有所了解。尚且不熟悉的同学推荐先阅读本系列的第一篇文章《K8S系列一:概念入门》[1]。 本文旨在讲述如何基于K8S集群部署一个web服务,包括如

    2024年02月12日
    浏览(26)
  • 深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

    Docker和Kubernetes是两个不同的概念和技术,它们在容器化应用和容器编排方面有着不同的功能和作用。 Docker: Docker是一个开源的容器化平台,用于构建、打包和运行应用程序。通过使用Docker,你可以将应用程序及其依赖项打包到一个独立的轻量级容器中,使其可以在不同的环

    2024年02月10日
    浏览(26)
  • k8s部署服务接入skywalking之java agent使用(基于sideCar模式)

    java应用在接入skywalking的时候,需要在启动参数指定 java agent的jar包 -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent/skywalking-agent.jar 目前不打算将agent相关文件制作到java服务镜像里面 希望通过 挂载 的方式将agent包提供出来供java服务使用 决定采用 基于sideCar 模式

    2024年02月07日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包