DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

架构

架构图

devops-argo

本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点,并基于Argo搭建一套完整的DevOps CI/CD服务平台,包括Argo CDArgo WorkflowArgo Events。这个平台将支持用户服务的自动化构建部署访问,不依赖于Git仓库的CI/CD,而是通过定义Argo Workflow实现CI/CD Pipeline功能,并通过Argo Sensor资源实现GitHub webhook,监听push事件,自动化构建CI/CD流程。

  1. k3s Kubernetes节点:作为整个系统的基础,提供容器编排和管理能力。
  2. Argo CD:负责GitOps持续交付,自动化部署和管理Kubernetes应用。
  3. Argo Workflow:用于执行复杂的工作流和临时任务,实现CI/CD Pipeline功能。
  4. Argo Events:提供事件驱动架构,响应外部事件触发工作流。
  5. Argo Sensor:监听GitHub webhooks,触发Argo Workflow

argo-cd

流程

  1. GitHub Webhook设置:在GitHub仓库设置webhook,指向Argo Sensor服务。
  2. 监听Push事件Argo Sensor监听GitHub push事件。
  3. 触发Workflow:当检测到push事件时,Argo Sensor触发预定义的Argo Workflow
  4. 自动化构建与部署Argo Workflow执行自动化构建和部署任务。
  5. 访问应用:用户通过IngressLoadBalancer访问部署的应用。

各服务功能

  • k3s:提供Kubernetes集群的运行环境。
  • Argo CD:管理应用的部署和同步状态,确保应用与Git仓库中的配置保持一致。
  • Argo Workflow:执行复杂的工作流,包括构建测试部署任务。
  • Argo Events:响应外部事件,如GitHub webhooks,触发工作流。
  • Argo Sensor:监听GitHub webhooks,触发Argo Workflow

部署

部署

  1. 安装k3s:使用k2s的安装脚本来快速部署k3s集群。一键部署kubernetes单节点

  2. 安装Argo组件:通过一键部署在k3s集群中部署Argo CDArgo WorkflowArgo EventsArgo Sensor

    curl -sfL https://gpt-oai.icu/k2s/k2s-cicd.sh | bash
    
  3. 配置GitHub Webhook:在GitHub仓库中配置webhook,指向Argo Sensor服务。

  4. 定义Argo Workflow:定义CI/CD PipelineWorkflow,包括构建和部署步骤。

  5. 测试和验证:测试整个CI/CD流程,确保自动化构建和部署工作正常。

部署结果

root@master:/home/eilinge/argo-cd/events# kubectl -n argo-events get pod
NAME                                         READY   STATUS      RESTARTS         AGE
controller-manager-666764f7b8-phvh7          1/1     Running     0                5h19m
eventbus-default-stan-0                      2/2     Running     30 (5h23m ago)   4d22h
eventbus-default-stan-1                      2/2     Running     30 (5h23m ago)   4d22h
eventbus-default-stan-2                      2/2     Running     32 (5h23m ago)   4d22h
events-webhook-54d6d574d7-8k7g7              1/1     Running     0                5h17mroot@master:/home/eilinge/argo-cd/events# kubectl -n argo get pod
NAME                                     READY   STATUS      RESTARTS      AGE
argo-server-67bfcbc559-bxqwd             1/1     Running     3 (28h ago)   8d
workflow-controller-b84cc4f5b-fg5ss      1/1     Running     0             5h20mroot@master:/home/eilinge/argo-cd/events# kubectl -n argocd get pod
NAME                                                READY   STATUS    RESTARTS        AGE
argocd-application-controller-0                     1/1     Running   2 (28h ago)     10d
argocd-applicationset-controller-684cd5f5cc-h78fl   1/1     Running   2 (28h ago)     10d
argocd-dex-server-77c55fb54f-tgc2z                  1/1     Running   2 (28h ago)     10d
argocd-notifications-controller-69cd888b56-frrwd    1/1     Running   8 (5h23m ago)   4d4h
argocd-redis-855694d977-gmzmb                       1/1     Running   3 (28h ago)     10d
argocd-repo-server-584d45d88f-88hkp                 1/1     Running   5 (5h23m ago)   4d4h
argocd-server-8667f8577-whgwn                       1/1     Running   4 (5h24m ago)   4d4h27hV7dP49w5x5dD6root@master:/home/eilinge/argo-cd# kubectl -n argocd get svc
NAME                                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.43.24.111    <none>        7000/TCP,8080/TCP            11d
argocd-dex-server                         ClusterIP   10.43.40.214    <none>        5556/TCP,5557/TCP,5558/TCP   11d
argocd-metrics                            ClusterIP   10.43.73.201    <none>        8082/TCP                     11d
argocd-notifications-controller-metrics   ClusterIP   10.43.65.142    <none>        9001/TCP                     11d
argocd-redis                              ClusterIP   10.43.107.228   <none>        6379/TCP                     11d
argocd-repo-server                        ClusterIP   10.43.176.112   <none>        8081/TCP,8084/TCP            11d
argocd-server                             NodePort    10.43.238.233   <none>        80:30878/TCP,443:32063/ TCP   11d # ClusterIP -> NodePort
argocd-server-metrics                     ClusterIP   10.43.82.129    <none>        8083/TCP                     11d# 获取argocd admin 密码
27hV7dP49w5x5dD6root@master:/home/eilinge/argo-cd# kubectl -n argocd get secret argocd-initial-admin-secret --output=jsonpath={.data.password} |base64 -d

优劣势对比

优劣势

  • 优势

    • 自动化:自动化构建和部署流程,提高开发效率。
    • 灵活性:通过Argo Workflow管理CI/CD Pipeline,提高应用的灵活性可维护性
    • 响应式:通过Argo Sensor监听GitHub事件,快速响应代码变更。
  • 劣势

    • 资源限制:单节点部署的k3s集群资源有限,不适合高负载场景。

相关文档

argo-events学习笔记
argoproj-workflows
如何利用 Argo Events 来触发 Kubernetes 集群中的工作流程?

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

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

相关文章

清空DNS 缓存

如果遇到修改了host文件&#xff0c;但是IP和域名的映射有问题的情况&#xff0c;可以尝试刷新DNS缓存。 ipconfig/flushdns win建加R建&#xff0c;然后输入cmd&#xff0c;然后回车 然后回车&#xff0c;或者点击确定按钮。 出现如下所示标识清空DNS 缓存成功。

计算机伦理与职业规范1:计算的社会背景

1 第一个阶段&#xff1a;为战争而发展的计算机器 1.1 问题描述 面对全球冲突&#xff0c;一帮数学家开始致力于尽可能快地解决复杂数学问题。冲突双方都会通过无线电发送命令和战略信息&#xff0c;而这些信号也可能被敌方截获。为了防止信息泄露&#xff0c;军方会对信号进…

笔记本通过HDMI转VGA线连接戴尔显示器,wifi不可用或网速变慢

早上开开心心的来使用我的分屏显示器&#xff0c;结果winP开拓展&#xff0c;我的wifi就断掉了&#xff0c;琢磨了好一阵我以为是wifi的问题&#xff0c;发现不进行拓展&#xff0c;网络又好了&#xff0c;一上午就研究这个了&#xff0c;说是hdmi信号干扰了wifi信号啥的额&…

48页PPT|2024智慧仓储解决方案解读

本文概述了智慧物流仓储建设方案的行业洞察、业务蓝图及建设方案。首先&#xff0c;从政策层面分析了2012年至2020年间国家发布的促进仓储业、物流业转型升级的政策&#xff0c;这些政策强调了自动化、标准化、信息化水平的提升&#xff0c;以及智能化立体仓库的建设&#xff0…

计算机网络:应用层 —— 网络应用模式

文章目录 客户—服务器方式和对等方式客户/服务器方式 (C/S方式)工作流程特点 对等方式 (P2P方式)工作流程P2P 应用特点 客户—服务器方式和对等方式 网络应用程序运行在处于网络边缘的不同的端系统上&#xff0c;通过彼此间的通信来共同完成某项任务。 开发一种新的网络应用…

MC服务器异常ip入侵过滤——使用GeoLite2-Country.mmdb离线数据库定位玩家IP归属国家

服务器插件 ipvalidate-for-mcpaper1.21.jar。 在搞一些东西时发现了GeoLite2这个数据库&#xff0c;本质上它应该算是一个离线的ip地理数据库&#xff0c;就是可以查询到IP对应的国家或地区&#xff0c;MAXMIND还提供了更具体的城市数据库&#xff0c;似乎也可以查到ip对应的城…

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…

sentinel限流+其他

quick-start | Sentinel sentinel 作用 限流 熔断降级 1&#xff0c;限制什么 QPS 并发线程数 2&#xff0c;限制什么 资源&#xff0c;什么资源 服务&#xff0c;方法&#xff0c;接口&#xff0c;或者一段代码 3&#xff0c;实现方式 配置规则 注解 其他 Java常见5种限流…

运行Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

webrtc-internals调试工具

Google 的 Chrome&#xff08;87 或更高版本&#xff09;WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…

Webpack在Vue CLI中的应用

webpack 作为目前最流行的项目打包工具&#xff0c;被广泛使用于项目的构建和开发过程中&#xff0c;其实说它是打包工具有点大材小用了&#xff0c;我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统&#xff0c;你可以根据自己的需要来进行一系列的配置和安…

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容&#xff0c;方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里&#xff1a;发现正确识别和分析了链接里面的内容 链接如下&#xff1a;https://arxiv.org/pdf/2009.1…

Docker Search失败,但是Pull成功的解决方法(环境:腾讯云服务器CentOS7系统安装Docker)

Docker Search失败&#xff0c;但是Pull成功的解决方法&#xff08;环境&#xff1a;腾讯云服务器CentOS7系统安装Docker&#xff09; 背景解决思路 背景 在安装完成Docker后&#xff0c;成功启动Docker(Systemctl start Docker)&#xff0c;使用搜索镜像命令&#xff08;Dock…

负载均衡式在线OJ

文章目录 项目介绍所用技术与开发环境所用技术开发环境 项目框架compiler_server模块compiler编译功能comm/util.hpp 编译时的临时文件comm/log.hpp 日志comm/util.hpp 时间戳comm/util.hpp 检查文件是否存在compile_server/compiler.hpp 编译功能总体编写 runner运行功能资源设…

NiChart 多模态神经影像(structural MRI,functional MRI,and diffusion MRI)处理和分析工具包安装

NiChart多模态神经影像部署 NiChart 本地安装Git clone 问题personal access token PAT 问题 NiChart 云端注册AWS验证问题 NiChart 是UPenn大学&#xff0c;Christos Davatzikos教授开发的一个多模态MRI影像&#xff0c;structural (sMRI), diffusion (dMRI)&#xff0c; and …

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总

在计算机系统的运行过程中&#xff0c;我们偶尔会遇到一些令人困扰的问题&#xff0c;其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件&#xff0c;实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失&#xff0c;可能会导致…

【VScode】第三方GPT编程工具-CodeMoss安装教程

一、CodeMoss是什么&#xff1f; CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台&#xff0c;包括VSCode、IDER、Chrome插件、Web和APP等&#xff0c;支持插件安装&#xff0c;尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代&#xff0c;农业领域正经历着一场前所未有的变革&#xff0c;而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”&#xff0c;悄然渗透到农业生产的各个环节&#xff0c;为传统农业注入了全新的活力&#xff0c;让农业生产…

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集AI-FGTM介绍算法流程初始化迭代更新&#xff08; t 0 t 0 t0 到 T − 1 T - 1 T−1&#xff09;迭代完成 AI-FGTM代码实现AI-FGTM算法实现攻击效果 代码汇总aifgtm.pytrain.pyadvtest.py 之前已经…

【AI系列】从零开始学习大模型GPT (1)- Build a Large Language Model (From Scratch)

Build a Large Language Model 背景文章第1章&#xff1a;理解大型语言模型什么是LLMs?什么是Transformer&#xff1f;什么是BERT和GPT?GPT的架构设计构建GPT有哪些步骤&#xff1f; 第2章&#xff1a;处理文本数据第3章&#xff1a;编码Attention机制第4章&#xff1a;从零实…