Jenkins-x 初体验

Jenkins X 初体验

前言

Jenkins X 是一个高度集成化的CI/CD平台,基于Jenkins和Kubernetes实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发、运行和部署过程。

官方链接: http://jenkins-x.io/

安装(for macOS)

  • install Jenkins X with brew

    brew tap jenkins-x/jx
    brew install jx
    

    BCD2E1E0-120A-437D-BAA8-45063C6EB472

    7BEA60BF-DF0D-4C7A-B6E9-1B5A47ABB044

  • 输入 jx 应该能看到如下输出

    FF788CC8-2DAB-4746-A4B3-CAA1FA39B651

  • create local cluster for test

    jx create cluster minikube
    

    8EB823BF-1243-4810-91DE-A7C1BDCE7D52

    这个过程比较长,有几个步骤

    1. 为 minikube 分配内存、CPU、driver

      23F0BC70-9546-4B83-95C6-4423D9487066

    2. 之后会下载 minikube 的镜像与 localKube 的 binary,并启动 kubernetes, 设置 RBAC

      264EF2E6-8157-43F0-AA99-55AE575C22C3

    3. jx 使用 helm 来管理 kubernetes 上的应用,所以会在 k8s 上初始 helm 的 server(tiller)。

      BBE46796-9FF6-4017-950B-3DE22BFD8000

    4. 安装 NGINX Ingress Controller

      13F0CE13-3C50-43E6-9951-DC27320E2612

    5. 设置 Github 的 API Token,点击生成的 URL,生成一个 API Token

      1AF8588B-0F43-489D-B5FC-20150DC68BC1

    6. 设置 Jenkins 的 API Token

      555D794A-106A-4AEC-ACF2-304506C4D743

    7. 等待一段时间,jx 会在 k8s 上部署包括 jenkins、nexus等应用,部署完成会出现

      C86BDC07-0241-454C-B11E-FAF19C467030

使用

这里可以参考官方 demo: demonstration of Jenkins X

感受

在使用 Jenkins X 的时候,感觉还是有些坑的,我简单地罗列了一下:

  1. 确保你的 kubectl 的版本要 >= 1.6
  2. 对于较高版本的 macOS,需要升级 homebrew
  3. 在使用 minikube delete 的时候遇到了一下系统权限的问题,可能是 Bug

其实 jx 是简单地整合了 CI & CD 在云原生应用上的工具链,包括 Helm 、k8s、Draft,对于用户而言,隐藏了很多繁琐的配置。但从目前的版本上看,jx才刚刚起步,我们可以看到在其官方的 roadmap 中,关于 Tools、Git Providers、Issue Trackers 方面还有很多路要走,这肯定需要开源社区的努力,另外在企业定制化方面可能也需要有更多的思考,这是一个通用的工具链不得不面对的问题。

关于 jx 的未来,我们拭目以待。