| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Jenkins & Kubernetes 如何协同工作 -> 正文阅读 |
|
[系统运维]Jenkins & Kubernetes 如何协同工作 |
一、总体架构 Jenkins,作为一款开源的持续集成/持续部署工具,是一个基于Java的独立应用程序。Jenkins拥有庞大的社区和丰富的插件库,支持各种软件开发项目的构建、部署和自动化。 得益于其开放性,Jenkins可以轻松实现与容器编排引擎Kubernetes结合。本文将对Jenkins 与 Kubernetes如何协作以实现持续集成作出介绍。 上图显示了以Jenkins为核心,配合Git,Kubernetes等软件或工具组成的持续集成结构图。图中的步骤按序号分别为如下内容: 1. 用户本地创建带有镜像构建文件(Dockerfile)的代码仓库并提交; 2. 将代码仓库推送到远程仓库; 3. 远程代码仓库收到用户提交的代码,再根据设置的触发器(Trigger),触发Jenkins 自动构建; 4. Jenkins 的 CI 流水线自动编译代码,打包成 docker 镜像推送至 Harbor 镜像仓库; 5. Jenkins 的 CI 流水线中包括了自定义脚本,根据已备好的 Kubernetes 的 YAML 模板,将其中的变量替换成用户输入的选项; 6. 生成应用的 Kubernetes YAML 配置文件; 7. 更新 Ingress 的配置,根据新部署的应用的名称,在 ingress 的配置文件中增加一条路由信息; 8. 更新 PowerDNS,向其中插入一条 DNS 记录,IP 地址是边缘节点的 IP 地址; 9. Jenkins 调用 Kubernetes 的 API,部署应用。 以上便是完整的持续集成流程。 二、协作方式 Jenkins 和 Kubernetes 是如何进行协作的?详见下图。 从图中可以看到,每当用户触发一个Jenkins job时,Jenkins 的Kubernetes 插件都会通过调用 API 来创建 Kubernetes 代理 pod。该代理pod会被部署到Kubernetes 中,其中含有一些环境变量,包含Jenkins服务器的详细信息和秘钥。 当代理 pod 出现时,其使用的环境变量中的详细信息将使用 JNLP 方法与 Jenkins 交互。下图为代理 pod 的环境变量。 Jenkinsfile 中的所有构建步骤都在该 pod 上运行。构建完成后,pod 将自动终止。用户可通过一些选项来保留pod的构建。 Jenkins Kubernetes 插件负责从 Jenkins 到 Kubernetes 集群的所有通信。 只要Kubernetes 集群是可扩展的,Jenkins 构建代理便可任意扩展。 参考文献 [1] How to Setup Jenkins Build Agents on Kubernetes [2] Best 14 CI/CD Tools You Must Know | Updated for 2022 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:58:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |