概念

Jenkins X是基于Kubernetes的持续集成、持续部署平台。也是Jenkins的子项目。Jenkins X旨在使程序员在研发过程中能够轻松遵循DevOps原理和最佳实践。

介绍

Jenkins X是研发过程和工具的选择,以及将所有东西包装成一个易于学习和使用的内聚单元的胶水。从事软件行业的人总是倾向于重新发明轮子。我们花了无数个小时试图找出如何更快地开发我们的应用程序,以及如何拥有一个尽可能接近生产的本地环境。我们花时间搜索工具,使我们能够更有效地打包和部署我们的应用程序。我们设计形成连续输送管道的步骤。我们编写脚本来自动执行重复的任务。然而,我们无法逃避这样一种感觉:我们很可能正在重新创造别人已经做过的事情。Jenkins X旨在帮助我们做出这些决定,并帮助我们为工作选择正确的工具。这是一个行业最佳实践的集合。在某些情况下,Jenkins X是定义这些实践的人,而在其他情况下,它帮助我们采用其他人的实践。

比如当我们开始一个新的项目,Jenkins x将创建结构和所需的文件。如果我们需要一个kubernetes集群,其中包含选择、安装和配置的所有工具,Jenkins X将执行此操作。如果我们需要创建git存储库、设置webhook和创建连续的传递管道,我们只需要执行一个jx命令。

原则

“DevOps是旨在缩短将源代码发布到生产环境时间的一组实践。这里不仅仅减少从源代码更改到最后生产环境发布的时间差,同时还要确保系统的高质量,”

DevOps项目的目标是:

1、更快的上市时间

2、提高部署频率

3、更短的修复时间

4、降低发布失败率

5、更快的平均恢复时间

高效团队应该每天能够部署多次,远高于每周一次到每月一次的行业平均水平。

从“提交的代码”状态到“生产中的代码”状态的时间应少于一小时,更改失败率应少于15%,而业界平均比例高达31-45%。

从故障中恢复的平均时间也应少于一小时。

Jenkins X从最初的设计就是基于这些原则,允许团队应用DevOps最佳实践来达到行业顶峰的绩效目标。

最佳实践

以下最佳实践被认为是成功运行DevOps方法的关键:

1、松耦合架构

2、自助服务配置

3、自动部署和管理资源

4、持续构建/集成和交付

5、自动发布管理

6、增量测试

7、基础结构配置为代码

8、全面的配置管理

9、基于主干的开发和功能标志

Jenkins X将许多业界熟悉的方法和组件整合到一个系统中,从而最大程度地减少了复杂性。

架构

Jenkins X建立在松耦合架构的DevOps模型的基础上,用以支持多个团队可重复的方式部署大量分布式微服务。

概念模型

构建

Jenkins X建立在以下核心组件之上:

Kubernetes & Docker

该系统的核心是Kubernetes,它已成为DevOps的事实上的虚拟基础架构平台。现在,每个主要的云提供商都提供Kubernetes基础架构服务。如果需要,Kubernetes也可以内部安装在私有云基础架构上。还可以使用Minikube安装程序在本地开发硬件上创建测试环境。

在功能上,Kubernetes平台扩展了以跨越多个物理节点的Docker容器。

简而言之,Kubernetes提供了一个同类的虚拟基础架构,可以通过添加或删除节点来动态扩容。每个节点都可参与单个大型专用虚拟网络空间。

Kubernetes中的部署单位是Pod,pod可以包含一个或多个Docker容器和一些元数据。Pod中的所有容器共享相同的虚拟IP地址和端口空间。Kubernetes的部署是声明式的。当用户指定要部署Pod的版本和数量后,Kubernetes通过跨节点部署或删除Pod来决定从当前状态到所需状态所需的操作。关于如何配置Pod的具体特性则被系统可用资源,所需资源和标签匹配的影响。部署后,Kubernetes会定期进行健康状况检查,通过终止和替换无响应的Pod来确保每种类型的Pod所需保持数量。

为了确定某种结构,Kubernetes允许创建虚拟命名空间Namespace,该命名空间可用于逻辑上分隔Pod,并将Pod组与特定资源相关联。例如,命名空间中的资源可以共享一个安全策略。资源名称在命名空间内必须唯一,但可以在不同命名空间中重用。

在Jenkins X模型中,一个Pod相当于一个已部署的微服务实例(在大多数情况下)。在需要水平扩展微服务的情况下,Kubernetes允许部署多个相同运行实例的Pods,而每个实例都有其自己的虚拟IP地址。它们可以聚合到一个称为服务Service的虚拟节点中,该节点有唯一的静态IP地址和与该服务名称匹配的本地DNS条目。对该服务的调用会动态随机映射到某个健康Pod实例的IP。服务还可以用于重新映射端口。在Kubernetes虚拟网络中,可以使用以下格式的使用完全域名来调用服务:“…svc.cluster.local”,可以将其缩写为 “.” 或在属于相同名称空间Namespace的情况下仅为“”。比方说,在“finance” 的名称空间下调用RESTful服务“payment”,就可以在代码中根据调用代码的位置来决定是“http://payments.finance.svc.cluster.local”,“http://payments.finance”或只是“http://payments”。

Kubernetes代表了一个强大且不断更新的可用于大规模部署服务的平台。但是一般研发人员也很难理解和操作Kubernetes的负责配置。Jenkins X为Kubernetes带来了一组默认配置和一些简化的工具,这些工具目的就是优化DevOps和简化松耦合服务的管理。

“jx”命令行工具提供了对Kubernetes实例进行一些常见操作的简单方法,例如查看日志和连接到容器实例。此外,Jenkins X通过扩展Kubernetes命名来创建Environments,这些Environments可以流水线的方式链接在一起形成不断升级的发布管道。

Jenkins X Environment可以给研发团队的一个给定虚拟基础架构环境,例如Dev,Staging,Production等。通过定义环境之间的升级规则,构建完的代码可以在流水线里的各个环境上进行自动或手动发布。每个环境均按照GitOps方法进行管理环境的状态在Git存储库里来维护,向Git存储库提交或回滚变更会触发Kubernetes中给定环境状态的相应改变。

在Jenkins X的系统里,我们可以使用jx create cluster命令直接创建Kubernetes集群,从而在发生故障时轻松地复制集群。同样,我们可以使用“jx upgrade platform” 在现有集群上升级Jenkins X平台。Jenkins X支持通过jx context处理多个Kubernetes集群,并支持jx environment切换在同一个集群中的不同环境。

开发人员应了解Kubernetes提供在整个群集中分发配置和安全凭证的功能。ConfigMap可用于为非机密配置元数据创建名称/值对name/value pairs的集合,同时Secrets则对安全凭证和令牌执行加密保护的机制。Kubernetes还提供了一种为Pod指定资源配额的机制,这对于优化跨节点的部署是必要的。

默认情况下,Pod状态为瞬态。删除该Pod时,写入Pod本地文件系统的所有数据都会丢失。开发人员应注意,作为Node常规负载平衡过程的一部分,Kubernetes可能会在任何时候单方面决定删除Pods实例并重新创建它们,因此本地数据可能随时丢失。如果需要保存状态数据,则需要声明持久保留的储存空间,并将其安装在特定Pod的文件系统中。

Helm and Draft

用户如果直接与Kubernetes交互,可以使用kubectl命令行进行手动配置,或将各种类型的YAML数据传递给Kubernetes API Server。这个操作过程可能很复杂,并且容易出现人为错误。根据DevOps的“将代码配置为代码”原则,Jenkins X利用Helm和Draft两个开源软件来为用户的应用程序创建原子配置单元。

Helm通过Chart的方式简化了Kubernetes的配置。Chart是一组文件,这些文件共同指定了将给定应用程序或服务部署到Kubernetes中所需的元数据。Helm并没有使用基于Kubernetes API的一系列样板YAML文件,而是使用模板语言从单个共享值集来创建所需的YAML规范文件。这使得在可重用的Kubernetes应用程序进行部署时,可以选择性地重新定义配置。

参考:JenkinsX官网

  • 发表于: 2019-10-14
  • 原文链接:https://kuaibao.qq.com/s/20191014A0RHBX00?refer=cp_1026

Jenkins X基本概念:Jenkins K8S helm Draft gitops相关推荐

  1. Jenkins 设置镜像_在k8s上安装Jenkins及常见问题

    持续集成和部署是DevOps的重要组成部分,Jenkins是一款非常流行的持续集成和部署工具,最近试验了一下Jenkins,发现它是我一段时间以来用过的工具中最复杂的.一个可能的原因是它需要与各种其它 ...

  2. Jenkins 持续集成 概念(学习笔记二十六)

    持续集成:提交.测试.构建.测试.部署 前不久接触了持续集成(Continuous Integration,CI). 一.持续集成是什么 首先说说"集成"的概念.在实际的软件开发中 ...

  3. k8s部署jar包_学习K8S之路.6--- 在K8S中部署Jenkins,并使用Jenkins打包jar包

    一:部署jenkins jenkins官网:https://jenkins.io/download/ jenkins镜像:https://hub.docker.com/r/jenkins/jenkin ...

  4. 【Devops实践】Git+Gitlab+Jenkins pipeline(maven+Sonarqube+harbor) +k8s 整合CICD

    代码发布流程 #mermaid-svg-3nZ2WvdeoMR4vRrm {font-family:"trebuchet ms",verdana,arial,sans-serif; ...

  5. Jenkins自动化部署阿里云K8s

    文章目录 Kubernetes连接 Jenkins脚本 Jenkins开机启动 Kubernetes连接 在Jenkins服务器上安装 kubectl 客户端 #用以下命令下载最新发行版 curl - ...

  6. jenkins使用自定义方式结合k8s实现ci/cd-后端实战

    前情交代: 在开发环境已经打好了镜像包,并且次镜像包在test环境已经测试通过,现在开发生产环境实现流水线的k8s部署 k8s 应部署完毕,环境ok jenkins部署完毕 工作重点在jenkins的 ...

  7. [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub)

    本系列文章包含: [独孤九剑]持续集成实践(一)- 引子 [独孤九剑]持续集成实践(二)– MSBuild语法入门 [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBu ...

  8. Jenkins学习二:Jenkins安装与配置

    安装前关注: Q:应该选择哪个版本的Jenkins? A:如果你是公司正式使用推荐长期支持版(LTS),原因:稳定.如果你是学习,随便哪个版本都可以. Q:JDK应该安装哪个版本的? A:推荐安装JD ...

  9. HA RabbitMQ on K8s helm部署实战

    RabbitMQ on K8s helm部署实战 获取helm chart 修改必要参数 外部如何访问? 安装rabbitmq 登录管理界面 导入mq metadata 优化 helm chart 生 ...

最新文章

  1. 基于相机和低分辨率激光雷达的三维车辆检测
  2. Redis源码分析 List实现
  3. Android开发之自定义Toast(带详细注释)
  4. 16.如何做到webpack打包vue项目后,可以修改配置文件
  5. python查找序列元素的最大值和最小值_pthon基础知识(索引、切片、序列相加、乘法、检查元素是否是序列成员、计算序列长度、最大最小值)...
  6. Virtual Machine Manager 2012 R2利用服务模板部署DC
  7. 简单的for循环,你不会就落后了
  8. ApacheCN PHP 译文集 20211101 更新
  9. 说透Applet的数字签名之2——数字签名
  10. 入门学习因果推断在智能营销/权益应用的通用框架
  11. ORACLE—002:Create创作型
  12. 电力系统及其自动化毕业论文题目【精选】
  13. 「精品」无损批量压缩图片工具 - Caesium Image Compressor
  14. 哪所985计算机专业招文科,4张表看透36所985大学自主招生专业,收藏起来做备考材料!...
  15. EditPlus 使用 json 格式化
  16. 英文转换-在线英文批量转换器免费
  17. 苏炳添博士论文研究自己,奥运学术两兼顾
  18. 华为云空间兑换码在哪里找_华为云空间
  19. 京东商品历史价格信息API接口-(item_history_price-获取商品历史价格信息API接口),京东API接口
  20. 深入理解android(三):xposed详解,Xposed原理

热门文章

  1. Django 笔记1 -- 环境搭建
  2. erlang(20)-控制抽象与判断素数
  3. rust(36)-Rust and WebAssembly(3)
  4. 科普:算法岗是什么?我适不适合算法岗?选什么方向的算法岗?
  5. 【NLP】5 分钟理解百度 ERNIE 核心思想
  6. 一文教你机器学习场景化分析!
  7. 温州大学《深度学习》课程课件(七、卷积神经网络基础)
  8. 【Python基础】高效的10个Pandas函数,你都用过吗?
  9. 你一定不能错过的pandas 1.0.0四大新特性
  10. 文本分类(一)EWECT微博情绪分类大赛第三名Bert-Last_3embedding_concat最优单模型复现