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

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 集群中的工作流程?

相关文章:

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

DevOps实战&#xff1a;用Kubernetes和Argo打造自动化CI/CD流程&#xff08;1&#xff09; 架构 架构图 本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点&#xff0c;并基于Argo搭建一套完整的DevOps CI/CD服务平台&#xff0c;包括Argo CD…...

【已解决】“Content-Security-Policy”头缺失

1、作用 简称CSP&#xff0c;意为内容安全策略&#xff0c;通过设置约束指定可信的内容来源&#xff0c;降低异源文件攻击&#xff0c;例如&#xff1a;js/css/image等 2、相关设置值 指令名 demo 说明 default-src self cdn.example.com 默认策略,可以应用于js文件/图片…...

win系统B站播放8k视频启用HEVC编码

下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads&#xff0c;根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent 在youtube中会导致视频无法播放&#xff0c;我选择直接屏蔽了 B站设置...

快速理解24种设计模式

简单工厂模式 建立产品接口类&#xff0c;规定好要实现方法。 建立工厂类&#xff0c;根据传入的参数&#xff0c;实例化所需的类&#xff0c;实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例&#xff0c;并提供一个访问他它的全局…...

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU&#xff1f; 本篇文章的目标是帮助初学者了解 CUDA 是什么&#xff0c;以及它如何与 PyTorch 配合使用&#xff0c;更重要的是&#xff0c;我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA&#xff0c;我们需要对图…...

Yocto 项目中的交叉编译:原理与实例

Yocto 项目是一个强大的工具集&#xff0c;它专注于为嵌入式系统生成定制的 Linux 发行版。交叉编译在 Yocto 项目中扮演着核心角色&#xff0c;它使得开发者能够在功能强大的宿主机上构建适用于资源受限目标设备的软件系统。这篇文章将从运行原理、实际案例和工具链组成等角度…...

Python入门:7.Pythond的内置容器

引言 Python 提供了强大的内置容器&#xff08;container&#xff09;类型&#xff0c;用于存储和操作数据。容器是 Python 数据结构的核心部分&#xff0c;理解它们对于写出高效、可读的代码至关重要。在这篇博客中&#xff0c;我们将详细介绍 Python 的五种主要内置容器&…...

sqlserver镜像设置

本案例是双机热备&#xff0c;只设置主体服务器&#xff08;主&#xff09;和镜像服务器&#xff08;从&#xff09;&#xff0c;不设置见证服务器 设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC &#xff08;1&#xff09;打开SQL Server配置管理器…...

Pandas04

Pandas01 Pandas02 Pandas03 文章目录 内容回顾1 数据的合并和变形1.1 df.append (了解)1.2 pd.concat1.3 merge 连接 类似于SQL的join1.4 join (了解) 2 变形2.1 转置2.2 透视表 3 MatPlotLib数据可视化3.1 MatPlotLib API 套路 &为什么要可视化3.2 单变量可视化3.3 双变量…...

农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序(升级版)

农历节日倒计时&#xff1a;基于Python的公历与农历日期转换及节日查询小程序升级版 调整的功能 上一个小程序只是能计算当年的农历节日的间隔时间&#xff0c;那么这次修改一下&#xff0c;任意年份的农历节日都可以&#xff0c;并且能输出农历节日对应的阳历日期&#xff0…...

c语言中void关键字的含义和用法

在 C 语言中&#xff0c;void 是一个特殊的关键字&#xff0c;主要有以下几个用途&#xff1a; 1. 表示函数没有返回值 当一个函数不需要返回任何值时&#xff0c;可以将其返回类型声明为 void。 #include <stdio.h>void printMessage() {printf("Hello, World!\…...

安卓音频之dumpsys audio

目录 概述 详述 dumpsys audio 1、音频服务生命周期的事件日志 2、音频焦点事件日志 3、音频流音量信息 4、音量组和设备的相关信息 5、铃声模式 6、音频路由 7、其他状态信息 8、播放活动监控信息 9、录音活动记录 10、AudioDeviceBroker 的记录 11、音效&#…...

玩客云v1.0 刷机时无法识别USB

v1.0刷机时公对公插头掉了&#xff0c;刷机失败&#xff0c;再次刷机&#xff0c;一直提示无法识别的USB设备&#xff0c;此时LED一直不亮&#xff0c;就像是刷成砖了一样&#xff0c;查了好多文章最后发现正面还有一个地方需要短接。 背面的短接点 【免费】玩客云刷机包s805-…...

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09;一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi &#xff08;对标ChatGPT&#xff09; 简单讲讲RPA调用kimi实现…...

前端项目 node_modules依赖报错解决记录

1.首先尝试解决思路 npm报错就切换yarn &#xff0c; yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息&#xff1a; Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…...

数据科学团队管理

定位&#xff1a; 有核心竞争力的工业算法部门与PM、RD等深度合作 业务方向&#xff1a;(不同产品线&#xff09; 工业预测性维护与数据挖掘视觉检测、OCR 工作内容 项目需求与交付内部框架(frameworks \packages)应用demo专利、竞赛、论文 日常管理 项目管理数据管理(原…...

一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类

机器学习实战通常是将理论与实践结合&#xff0c;通过实际的项目或案例&#xff0c;帮助你理解并应用各种机器学习算法。下面是一个简单的机器学习实战例程&#xff0c;使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集&#xff08;Iris Dataset&#xff09;**的…...

攻防世界web第二题unseping

这是题目 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {cal…...

动手学深度学习-深度学习计算-3延后初始化

目录 实例化网络 小结 到目前为止&#xff0c;我们忽略了建立网络时需要做的以下这些事情&#xff1a; 我们定义了网络架构&#xff0c;但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时&#xff0c;甚至没有足够的信息来确定模型应该包含…...

Linux | 零基础Ubuntu搭建JDK

目录 软件简介 在线文档 压缩包安装 下载地址 补:传输软件 传输等待 目录结构 解压安装 配置环境 更新环境 测试JDK结果 APT安装 软件简介 Java Development Kit (JDK) 是 Sun 公司&#xff08;已被 Oracle 收购&#xff09;针对 Java 开发员的软件开发工具包。自…...

避坑指南:微信支付V3 SDK自动更新证书失败的5种常见原因及修复方法

微信支付V3证书自动更新失败排查手册&#xff1a;从原理到实战修复 微信支付的V3版本SDK以其自动证书更新机制著称&#xff0c;但不少开发者在集成过程中都遭遇过AutoUpdateCertificatesVerifier的失败问题。证书更新失败不仅会导致支付功能中断&#xff0c;还可能引发验签错误…...

Phi-3-mini-128k-instruct快速部署:Anaconda环境配置与模型调用详解

Phi-3-mini-128k-instruct快速部署&#xff1a;Anaconda环境配置与模型调用详解 你是不是也遇到过这种情况&#xff1a;看到一个很酷的AI模型&#xff0c;想赶紧试试&#xff0c;结果被各种环境依赖、版本冲突搞得头大&#xff1f;别担心&#xff0c;今天咱们就来搞定Phi-3-mi…...

终极无损视频剪辑神器:LosslessCut完整指南与5大实用技巧

终极无损视频剪辑神器&#xff1a;LosslessCut完整指南与5大实用技巧 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾因视频剪辑导致画质下降而烦恼&#xff…...

厦门选117E还是120E?手把手教你为你的城市选择正确的高斯克吕格投影坐标系

厦门GIS项目实战&#xff1a;如何精准选择高斯克吕格投影坐标系 第一次在ArcGIS里看到上百个坐标系选项时&#xff0c;我的鼠标指针在列表上方徘徊了整整十五分钟——就像站在自动售货机前不知道按哪个按钮的新手。特别是当项目 deadline 临近&#xff0c;而厦门市规划局的Shap…...

护士执业资格考试历年真题及答案解析电子版PDF(2011-2025年)

2026年护士执业资格考试时间为2026年4月11-12日。‌‌为助力广大考生高效备考&#xff0c;小编精心整理了涵盖2011年至2025年的护士执业资格考试真题试卷及详细答案解析&#xff0c;包含《专业实务》和《实践能力》&#xff0c;高清PDF电子版&#xff0c;可打印&#xff0c;方便…...

揭秘Windows热键失踪案:Hotkey Detective侦探手册

揭秘Windows热键失踪案&#xff1a;Hotkey Detective侦探手册 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾在Windows系统中按下熟悉的…...

Nanobot技能扩展开发:自定义OpenClaw功能模块教程

Nanobot技能扩展开发&#xff1a;自定义OpenClaw功能模块教程 1. 引言 想给你的Nanobot智能助手添加一些个性化功能吗&#xff1f;比如让它帮你查天气、管理待办事项&#xff0c;或者连接你常用的办公软件&#xff1f;今天就来手把手教你如何为Nanobot开发自定义技能模块。 …...

从‘双注意力网络’到MANet:手把手拆解CVPR经典模块在遥感分割中的魔改与应用

从双注意力机制到遥感图像分割&#xff1a;MANet的模块化设计与实战解析 遥感图像分割一直是计算机视觉领域的特殊挑战——当无人机以不同高度和角度拍摄地表时&#xff0c;同一张图像中可能同时存在微小的车辆和庞大的工业园区&#xff0c;这种极端的尺度变化让传统分割网络束…...

ofa_image-caption算力适配:A10G云GPU上稳定运行的最小配置方案

ofa_image-caption算力适配&#xff1a;A10G云GPU上稳定运行的最小配置方案 1. 引言 如果你正在寻找一个能自动为图片生成英文描述的本地工具&#xff0c;并且希望它能在消费级显卡上流畅运行&#xff0c;那么基于OFA模型的图像描述生成工具很可能就是你的答案。这个工具最大…...

GLM-OCR实操手册:Web界面上传PNG/JPG/WEBP三格式兼容性验证与建议

GLM-OCR实操手册&#xff1a;Web界面上传PNG/JPG/WEBP三格式兼容性验证与建议 1. 项目概述与测试背景 GLM-OCR是一个基于先进多模态架构的OCR识别模型&#xff0c;专门为处理复杂文档而设计。它不仅能识别普通文字&#xff0c;还能准确识别表格结构和数学公式&#xff0c;在实…...