前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KubeSphere 使用外置 Jenkins

KubeSphere 使用外置 Jenkins

作者头像
LinuxSuRen
发布2021-01-25 14:41:43
1.5K0
发布2021-01-25 14:41:43
举报
文章被收录于专栏:JenkinsJenkinsJenkins

相信很多 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 上了。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jenkins 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 限制
  • 实验环境
  • 开启 Devops 组件
  • 假设,你的外置 Jenkins 是通过这个命令安装的(如果你正好有一个可以做测试的外置 Jenkins 的话,可以跳过下面的步骤):
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档