GitLab + Jenkins + Harbor 工具链快速落地指南

本文详细介绍了如何利用 DevStream 快速落地GitLab、Jenkins和Harbor的工具链,通过云原生方式部署,包括配置文件的准备、网络设置、验证部署结果以及流水线配置,旨在实现自动化CI/CD流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、今天想干啥?

今天我们来聊聊如何快速落地“GitLab + Jenkins + Harbor 工具链”。

请注意这里的关键词:快速(有多快呢?我希望这个时间是5分钟。)

我知道你想要一条闪闪亮的工具链来支撑你的应用 CICD 流程,你想要“最佳实践”,你想要既灵活简单易维护,你有一肚子的既要,又要,还要……

行,今天我就给你一个“既有,又有,还有”的《GitLab + Jenkins + Harbor 落地方案》。

二、今天干点啥?

今天我们要搭建一条怎样的工具链呢?且看效果图:

  1. 首先我们需要完成 GitLab、Jenkins 和 Harbor 三个工具的部署;
  2. 接着我们需要在 GitLab 上创建一个代码库,并且在 Jenkins 上创建相应的流水线,这个流程最好也自动化(确实可以自动化);
  3. 然后适当地配置这三个工具,实现如下 CI 流程:
    1. 当用户推送代码到 GitLab,也就是 GitLab 上相应代码库产生 push 或者 merge 事件的时候,这个事件能够自动触发 Jenkins 上的流水线执行;
    2. Jenkins 上流水线执行的结果能够回显到 GitLab;
    3. Jenkins 上完成了编译、构建等等流程后,最终制品是一个容器镜像,这个镜像可以被推送到 Harbor 上。

三、今天怎么干?

我准备使用云原生的方式来部署这三个工具,原因不赘述。

当然我也知道多数情况下你并不需要考虑 GitLab 如何部署,因为95% 的概率你们公司已经有可用的 GitLab 了,或者你们考虑使用 SaaS 版的 GitLab。外加 Kubernetes 上部署 GitLab 的复杂度不低,运维成本高,所以,GitLab 的“高可用部署”不是本文重点,我们把重点放在如何部署和配置好 Jenkins + Harbor,然后对接 GitLab,走通一个 CI 流程。

综上,今天我准备 sale 的部署模式是:

  • GitLab:Docker
  • Jenkins:Helm(Kubernetes)
  • Harbor:Helm(Kubernetes)

3.1、常规打法

如果按照常理出牌,这时候我们应该是翻阅三个工具的官网,学习部署流程和配置步骤,然后总结最佳实践,一步步试错,一步步改进……

听起来就复杂。

这个流程不应该让所有人都重头体验一遍,被折磨一遍。假如有人已经研究了一遍这些工具的部署模式,并且将这个流程代码化,做一个工具出来,并且开源免费,让大家“开箱即用”,那该多好!

3.2、不走寻常路

没错,你已经猜到了,我不打算按常理出牌,我要找一个能够管理 DevOps 工具链的工具!

有这种工具?还真有!

DevStream 就干这事。DevStream 是啥?一句话:一个 DevOps 工具链管理器。

我们看下 DevStream 如何完成这三个工具的落地:

DevStream 官网里有这么一个图。所以,这个花里胡哨的 DevStream 做了啥?

从上面的流程图,结合官方文档和源码,大致我可以猜到它的工作流和原理:

  1. DevStream 首先将 GitLab、Jenkins、Harbor 等工具的部署流程代码化,通过插件的形式支持这些工具的安装部署;
  2. 工具部署完成后,DevStream 会从 SCM(GitHub 或者 GitLab 都可以)下载一个项目脚手架模板,模板源码在这里;这个模板支持高度自定义,本质就是将一些需要自定义的内容抽离成变量,供用户自由渲染,然后批量生产项目脚手架;
  3. 接着 DevStream 根据用户给定的配置文件渲染模板库,然后将其上传到 SCM(GitHub 或者 GitLab 都可以);
  4. 然后 DevStream 会配置 Jenkins,安装一些必要的插件等,用户支持最终的 Pipeline 顺利执行;
  5. DevStream 期望 Pipeline 配置通过 Jenkinsfile 来定义,这个 Jenkinsfile 也是通过模板的方式保存,可以灵活渲染。比如官网示例中 Jenkinsfile 模板保存在这里;DevStream 执行的时候会下载这个 Jenkinsfile 模板(当然,这个模板也支持自定义,支持放到 GitLab 或者其他任何 web 服务器上),下载后渲染用户自定义变量,然后将其写入刚才创建的项目脚手架对应的代码库里;
  6. 接着 DevStream 就可以调用 Jenkins api,完成 Pipeline 创建了。没错,创建 Pipeline 的时候,需要的 Jenkinsfile、项目地址等信息都有了,所以这里的 Pipeline 配置很轻量;
  7. 最后 DevStream 还需要调用 GitLab api 完成 webhook 的创建,这样 SCM(GitHub 或者 GitLab)上的事件(push、merge 等)才能顺利通知到 Jenkins,从而触发 Pipeline 执行。

到这里 DevStream 基本就打完收工了,这时候如果你往这个代码库里的主分支 push 了一个 commit,GitLab 就会直接触发 Jenkins 上流水线运行;进而 Jenkins 上的流水线执行状态也会直接回显到 GitLab 上;当然,Jenkins 里构建的产物,比如 Docker container image(s) 也会被 push 到 Harbor(每错,这个过程是定义在 Jenkinsfile 里的,你可以灵活修改;同时 Harbor 也不一定非得是 Harbor,你可以直接改成其他镜像仓库的地址,从而让 Jenkins 对接到云厂商提供的镜像仓库服务里也完全 OK)。

四、开干吧!

考虑到插件的依赖顺序,外加 Jenkins、GitLab、Harbor 等工具的部署属于"基础设施",几乎只需要执行一次, 而 Repo Scaffolding 和 Jenkins Pipeline 的创建属于"配置"过程,可能要执行多次(比如不断

<think>好的,用户现在的问题是询问是否有适合他的求职方向,他感到迷茫。之前他提到自己是做后端开发和运维的新人,想要学习AI相关知识,现在可能在学习了一段时间后,对职业方向有些不确定,需要指导。 首先,我需要回顾之前的对话。之前我给他制定了一个结构化的学习路径,结合他的后端和运维背景,转向AI领域,特别是AI运维和MLOps方向。现在他可能想知道具体的求职方向,或者在学习过程中遇到了困惑,不确定该往哪里走。 用户当前的状态是迷茫,可能需要更明确的职业路径建议。作为刚入行的后端和运维人员,转向AI领域时,可能存在的挑战包括技术栈的转换、数学基础的补充,以及如何将现有技能与AI结合。他需要知道有哪些具体的职位适合他的背景,以及这些职位的要求和发展前景。 接下来,我需要考虑可能的求职方向。结合他的背景,可能的职位包括AI运维工程师、MLOps工程师、AI基础设施工程师、云AI工程师、后端转型的AI研发工程师等。这些职位都强调运维和系统架构的经验,同时结合AI模型部署、 pipeline构建和系统优化。 另外,用户可能需要了解每个方向的核心职责、所需技能、优势以及学习建议。这样他可以根据自己的兴趣和现有技能进行选择。同时,提供一些项目建议和资源推荐,帮助他积累经验。 还要注意用户可能的担忧,比如是否需要深入算法研究,或者数学基础不够的问题。需要强调工程化方向更注重系统设计和运维能力,而算法层面可以逐步补充。同时,职业发展路径可以分阶段,从结合现有工作开始,逐步深入。 最后,鼓励用户从现有工作入手,寻找结合点,比如优化部署流程或引入监控模型,这样既能积累经验,又不会完全从零开始。同时,提供学习资源和社区建议,帮助他持续成长。</think>结合你的后端开发和运维背景,向AI领域转型时,可以瞄准以下**具体求职方向**,这些方向既能发挥你的现有优势,又能避免从零开始的竞争压力: --- ### **一、最适合你的4个AI相关岗位** #### **1. AI运维工程师(AI Infrastructure Engineer)** - **核心职责** - 保障大规模模型训练集群稳定性(GPU/NPU资源调度) - 优化分布式训练任务性能(PyTorch + Kubernetes) - 构建模型推理服务的监控告警体系(Prometheus + Grafana定制) - 具备服务高可用保障经验 - **学习建议** - 掌握NVIDIA DCGM工具链 - 学习Kubeflow/TF-Operator等训练框架 - 实践Ray分布式计算框架 #### **2. MLOps工程师** - **核心职责** - 设计自动化模型训练流水线(Airflow/Kubeflow Pipelines) - 管理模型版本与数据版本(MLflow/DVC) - 实现模型服务的灰度发布与A/B测试(Istio + Seldon Core) - **你的优势** - 熟悉CI/CD流程(如Jenkins/GitLab CI) - 有微服务治理经验(可迁移到模型服务治理) - 擅长构建数据管道(ETL经验可复用) - **学习建议** - 掌握Feast/Tecton等特征存储工具 - 学习模型监控工具(Evidently/WhyLabs) - 实践Argo Workflows编排训练任务 #### **3. 云平台AI工程师(Cloud AI Engineer)** - **核心职责** - 在AWS/Azure/GCP上设计AI服务架构 - 优化云原生AI工作流(如SageMaker Pipelines) - 实现混合云场景的模型部署 - **你的优势** - 熟悉云平台IaaS层运维(可直接对接AI PaaS服务) - 有成本优化经验(关键:降低GPU闲置率) - 了解云安全体系(IAM/VPC等可复用) - **学习建议** - 考取云厂商AI专项认证(如AWS ML Specialty) - 学习Kubernetes + Kserve模型部署方案 - 实践Serverless推理服务(AWS Lambda + ONNX) #### **4. 后端转型AI研发工程师(偏工程方向)** - **核心职责** - 开发企业级AI中间件(模型服务框架、特征计算引擎) - **你的优势** - 深入理解系统编程(可转向TVM/Glow等编译器开发) - 熟悉高并发架构(应对推理服务的流量洪峰) - 掌握性能优化方法论(从Web服务优化迁移到模型优化) - **学习建议** - 学习TorchScript/ONNX模型导出 - 研究Triton Inference Server源码 - 实践BPF工具进行模型服务性能分析 --- ### **二、差异化竞争策略** #### **1. 错位竞争力构建** ```mermaid graph LR A[传统算法工程师] -- 补充 --> B[系统设计能力] C[你] -- 强化 --> D[工程化落地能力] B --> E[企业最缺的复合型人才] D --> E ``` #### **2. 经验迁移示范** - **原有技能**:Zabbix监控 **AI场景迁移**:训练任务异常检测(OOM/梯度爆炸) - **原有技能**:Ansible自动化 **AI场景迁移**:跨机房GPU集群配置管理 --- ### **三、项目经历打造建议** #### **1. 低成本高价值项目** - **智能运维助手** - 用LSTM预测服务器故障(复用现有监控数据) - 用Grafana插件展示预测结果 - **日志分析升级** - 将ELK栈升级为基于BERT的日志分类系统 - 实现异常日志自动聚类 - **CI/CD增强** - 在现有流水线中加入模型测试环节(如接口性能压测) #### **2. 开源贡献路径** - 参与Kubeflow社区:从部署问题排查入手 - 改进MLflow:增加Harbor镜像仓库集成 - 为PyTorch提交CUDA内存优化方案 --- ### **四、学习路线图(6个月速成)** ```mermaid gantt title AI工程化能力建设路线 section 基础准备 Python强化 :a1, 2023-10-01, 15d ML基础 :a2, after a1, 30d section 核心突破 Kubeflow实践 :a3, 2023-11-01, 60d 推理优化 :a4, 2023-12-01, 45d section 求职准备 项目包装 :a5, 2024-01-15, 30d 面试专项 :a6, 2024-02-15, 20d ``` --- ### **五、避坑指南** 1. **不必与算法岗硬拼** - 企业更需要能将模型落地的工程师,而非纯研究者 2. **警惕"调参侠"陷阱** - 聚焦AutoML工具(H2O/TPOT)而非手动调参 3. **保持基础设施敏感度** - 关注新一代AI芯片(如Groq LPU)的运维特性 4. **建立技术雷达** - 定期跟踪MLSys/MLOps社区最新工具(如最近兴起的Modal替代AWS Lambda) --- ### **六、薪资与前景** - **国内现状** AI工程岗平均薪资比同级别后端高30%-50%(数据来源:拉勾2023报告) - **发展窗口期** 未来3-5年是传统企业AI工程化改造高峰期 - **长期优势** 比纯算法工程师更长的职业生命周期(参考:DevOps工程师的发展轨迹) --- **行动建议**:先从现有工作中找到AI结合点(如用机器学习优化服务器资源调度),积累真实场景经验,再逐步转向专职岗位。当前可优先投递「AI运维工程师」岗位,这是转型难度最低且需求增长最快的方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值