Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins 和 Kubernetes 实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发、运行和部署过程。
Jenkins X 核心组件
Jenkins
Jenkins X 不是一个全新的 Jenkins。
它依然使用 Jenkins 作为持续交付的核心引擎,实际上 Jenkins X 作为 Jenkins 的一个子项目存在,专注于云原生应用的 CI/CD 实现,同时也帮助 Jenkins 自身完成云原生应用的转型,毕竟现在越来越多的人在诟病单体应用的设计和文件存储系统。
HELM
Helm 是用于管理 Kubernetes 资源对象的工具,类似 APT,YUM 和 HOMEBREW,它通过将 Kubernetes 的资源对象打包成 Chart 的形式,完成复杂应用的部署和版本控制,是目前业界流行的解决方案
DRAFT
Draft 是自动化应用构建和运行在 Kubernetes 上面的工具,具有语言识别能力,能够自动生成构建脚本,依赖,环境并打包成 Docker 镜像并部署在 Kubernetes 集群上,加快代码开发节奏,而无需关心基础设施层面的技术实现
GitOps
GitOps 是 Weaveworks 推出的天才的应用部署解决方案,它将 Git 作为整个应用部署的单一可信数据源(SSOT),通过类似代码开发的 Pull Request 流程完成应用部署的 Review 和自动化实现,并且将部署配置信息纳入版本控制。
Jenkins X 部分新特性
1. 自动化一切:自动化CI/CD流水线
-
选择项目类型自动生成Jenkinsfile定义流水线
-
自动生成Dockerfile并打包容器镜像
-
自动创建Helm Chart并运行在Kubernetes集群
-
自动关联代码库和流水线,作为代码变更自动触发(基于Webhook实现)
-
自动版本号自动归档
2. Review代码一键部署应用:基于GitOps的环境部署
-
所有的环境,应用列表,版本,配置信息统一放在代码库中进行版本控制
-
通过Pull Request实现研发和运维的协同,完成应用部署升级(Promotion)
-
可自动部署和手动部署,在必要的时候增加手工Review
-
当然这些都封装在jx命令中实现
3. 自动生成预览环境和信息同步反馈
-
预览环境用于代码Review环节中临时创建
-
同Pull Request工作流程集成并实现信息同步和有效通知
-
验证完毕后自动清理
-
提交和应用状态自动同步到Github注释
-
自动生成release notes信息供验证
Jenkins X安装---以linux为例
1.在本地安装jx命令行工具
#curl -L https://github.com/jenkins-x/jx/releases/download/v1.1.40/jx-linux-amd64.tar.gz | tar xzv
#mv jx /usr/local/bin
2.使用jx创建一个k8s集群,并自动安装Jenkins X(http://jenkins-x.io/getting-started/create-cluster/)或在已经存在的k8s集群上安装Jenkns x(http://jenkins-x.io/getting-started/install-on-cluster/)
通过已存在的k8s上安装只需要执行 #jx install即可
这里说下使用JX创建一个k8s集群安装jenkins X的注意点:
.执行命令#jx create cluster minikube 会默认下载minikube,kubectl和helm到~/.jx/bin目录下,所以这里需要将该路径加入到系统PATH下;
.安装一款虚拟机软件支持kvm,virtualbox,no(使用docker的话选此选项,注意一定要为其指定专门的网桥)
.根据提示输入内存(默认4096M)输入CPU核数(默认3),选择虚拟机,确定会自动下载Minikube ISO(142.22M)并启动虚拟机加载该镜像。