专栏首页JenkinsKubeSphere 使用外置 Jenkins

KubeSphere 使用外置 Jenkins

相信很多 KubeSphere 用户之前都是使用 Jenkins 作为 CI/CD 工具,但是KubeSphere 默认会安装一个新的 Jenkins,无法直接使用已有的作为 CI/CD 引擎。这对于希望能上生产,但是又不方便迁移已有流水线的用户来说,还是有很多不方便的地方。本文的目标,就是给大家提供一个让 KubeSphere 可以使用外置 Jenkins 的方案。

限制

该方案并不是一个完美的终极方案,因此,在你开始使用外置 Jenkins 之前,请先评估下面的限制:

  • KubeSphere 上已有的流水线将会无法使用
  • 如果你已有的 Jenkins 中安装了不兼容的插件,可能会导致部分功能无法使用
  • 不会把旧的 Jenkins 上的流水线迁移到 KubeSphere 上

鉴于方案可能会有如上所属的风险,请不要直接在你的生产环境上操作!另外,请确保你有一个备份环境,并且在备份环境上进行如下的方案实施。

实验环境

实验环境:

CentOS Linux release 7.9.2009 (Core)

安装依赖:

yum update -y && yum install wget curl vim bash-completion -y
安装 KubeSphere
为了不影响已有的业务,我们最好还是找个空白的环境,安装一个新的 KubeSphere 会比较稳妥。下面,我们首先把安装工具 kk 下载好。值得一提的是,KubeSphere 社区为了能够让用户更方便地体验到最新交付的 feature 或者修复的缺陷,提供了每日构建版,也就是所谓的:nightly build。想要体验找个 nightly build 最好的办法是使用最新开发中的的 kk。

需要注意的是,下面的链接是我个人编译出来的二进制文件,并不是社区发布的正式版本,仅供学习使用。

wget https://github.com/LinuxSuRen/kubekey/releases/download/v1.0.4/kubekey-v1.0.4-linux-amd64.tar.gz
tar xzvf kubekey-v1.0.4-linux-amd64.tar.gz
mv kubekey /usr/local/bin/kk

为了方便使用,我们可以先把命令行自动补全配置好:

source <(kk completion --type bash)

相信本文的读者大部分是在国内,访问某些网络可能会有问题,让我们添加一个环境变量来解决网络的问题:

export KKZONE=cn
kk create cluster --with-kubesphere nightly-20210103 -y

你可以把上面命令的日期修改为昨天,或者,让命令行自动补全帮你。

开启 Devops 组件

你可以按照社区官方文档中给出的步骤来操作,如果你不想再看更多的文档的话,可以试试通过命令行来一键开启。

安装 kubectl 插件:

wget https://github.com/LinuxSuRen/ks/releases/download/v0.0.11/kubectl-ks-linux-amd64.tar.gz
tar -xzvf  kubectl-ks-linux-amd64.tar.gz
mv kubectl-ks /usr/local/bin/

启用 DevOps:

kubectl ks com enable devops

等待组件启动完成:

kubectl logs -n kubesphere-system deploy/ks-installer -f --tail=50

当你看到类似如下的输出时,就说明组件启用成功:

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.6:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components 
     are up and running.
  2. Please change the default password after login.

#####################################################
https://kubesphere.io             2021-01-05 10:40:32
#####################################################
外置 Jenkins
前面我们已经做了很多的准备工作,现在终于开始动手集成外置 Jenkins 了。

假设,你的外置 Jenkins 是通过这个命令安装的(如果你正好有一个可以做测试的外置 Jenkins 的话,可以跳过下面的步骤):

jcli center start -m docker --c-user root --image jenkinszh/jenkins-k8s --version 2.249.1 --sys hudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID=true

请根据官方文档配置好 jcli 。

基本上,你需要做两件事:下载、通过命令来配置连接信息:

jcli config gen

如果你的环境直接访问互联网的话,安装 KubeSphere 所需要的插件就非常简单:

git clone https://github.com/kubesphere/ks-jenkins
jcli plugin install --formula ks-jenkins/formula.yaml

安装插件可能需要花点时间,具体依赖于你的网络带宽。jcli 可以通过读取 YAML 配置文件 ks-jenkins/formula.yaml 安装所有的插件。

接下来,需要手动配置 Jenkins。你需要关注两件事情:配置 KubeSphere Jenkins Auth 并启用,提供 KubeSphere API Gateway,也就是 ks-apiserver 所暴露的端口。另一个重要的部分是 Kubernetes 配置,请确保它至少包含这些 podTemplates base, nodejs, maven and go 。你可以从 KubeSphere 默认安装的 Jenkins 中的 podTemplates 了解到如何配置。

当你完成了上面的配置,而且所有插件都已经安装成功后,重启 Jenkins。重启的方法有很多,但还是提供一个比较优雅的吧:

jcli restart -b

最后,修改 configmap kubesphere-system/kubesphere-config 中 Jenkins 的连接信息。从 data.kubesphere.yaml 中找到 devops.host ,把它修改为你期望使用的 Jenkins 的地址。为了让修改生效,我们还需要重启 ks-apiserver ,命令为:

kubectl rollout restart -n kubesphere-system deploy ks-apiserver

完成上面的步骤后,创建一个新的流水线,你就会发现已经关联到了新的 Jenkins 上了。

写在最后安装一个全新的环境,通常是一件相对比较容易的事情。但是,想要平滑地把已有的组件做迁移的话,则可能会遇到各种问题。非常欢迎看到本文的读者和我一起解决上面提到的几个限制因素。

本文分享自微信公众号 - Jenkins(Jenkins-Community),作者:LinuxSuRen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jenkins 中文社区携手 KubeSphere,共建 DevOps 技术生态

    今天,Jenkins 中文社区 与 KubeSphere 开源社区 联合官宣,两大开源社区开始正式合作,携手共建 DevOps 技术生态!

    LinuxSuRen
  • KubeSphere DevOps 初体验,内置 Jenkins 引擎

    KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。...

    LinuxSuRen
  • Jenkins 安全修复 SECURITY-626 的紧急通知

    检查你的 Jenkins 版本,界面上是否有 SECURITY-626 相关的安全漏洞提醒。如果有的话,建议准备升级。尤其是对于 Jenkins 运行在公有云环...

    LinuxSuRen
  • sealos+rook 部署 kubeSphere+TiDB

    最近 CNCF 宣布 rook 毕业,kubeSphere 正好也发布了 3.0.0 版本,由于 rancher 开源的 longhorn 还处于孵化阶段,不太...

    米开朗基杨
  • 当开源遇上云,Amazon EKS Distro 与 KubeSphere 能擦出怎样的火花?

    2021 年 1 月初,KubeSphere 社区也与亚马逊云科技联合宣布了 KubeSphere 正式登陆 Amazon Quick Starts,这些重大消...

    CNCF
  • 基于 Kubernetes 的 Spring Cloud 微服务 CI/CD 实践

    本文以 Pig 为例,介绍如何使用 KubeSphere 在 Kubernetes 上发布一个基于 Spring Cloud 微服务的 CI/CD 项目。

    CNCF
  • KubeSphere 社区大量全职开源职位诚邀您的加入!

    KubeSphere 团队是开源项目 KubeSphere(https://kubesphere.io)的核心维护成员。在 KubeSphere 团队,一切都是...

    LinuxSuRen
  • Jenkinsfile与Json的转换

    前段时间调研了下青云的kubesphere,意外的发现了一个插件,pipeline-model-definition-plugin,用了将jenkins的pip...

    Zephery
  • Kubernetes 在知名互联网公司的(dotnet)落地实践

    本来生活网(benlai.com)是一家生鲜电商平台,公司很早就停止了烧钱模式,开始追求盈利。既然要把利润最大化,那就要开源节流,作为技术可以在省钱的方面想想办...

    李明成

扫码关注云+社区

领取腾讯云代金券