imirsh

导航

基于 kubernetes 的动态 jenkins slave

安装 Jenkins

  1. 应用资源清单
~]# git clone https://github.com/imirsh/kube-jenkins.git
~]# cd kube-jenkins/
kube-jenkins]# kubectl  apply -f .
  1. 查看服务
kube-jenkins]# kubectl  get pod -n  kube-ops
NAME        READY   STATUS    RESTARTS   AGE
jenkins-0   1/1     Running   0          42s
  1. 查看日志,第一次启动提示需要完成初始化设置
kube-jenkins]# kubectl  logs -f pod/jenkins-0 -n kube-ops  |tee jenkin.log
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

2d8bfbb547824e07895eea90fe8be06c

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************

  1. 插件安装

选择安装推荐的插件,因为此 Jenkins 镜像 是定制的,插件已经内置了,选择后会直接进入Jenkins。

默认的插件地址安装非常慢,我们可以替换成国内清华的源,进入 jenkins 工作目录,目录下面有一个 updates 的目录,下面有一个default.json 文件(在NFS动态存储卷上),我们执行下面的命令替换插件地址:

~]# cd /ifs/kubernetes/kube-ops-jenkins-home-jenkins-0-pvc-728367b2-de3d-4e37-ba0e-56e9fed96359/updates/
updates]# sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

集成 Kubernetes

  1. 安装 Kubernetes 插件。 [系统管理] -> [插件管理] -> [搜索kubernetes]->直接安装

  1. 设置集群。[系统管理] -> [系统配置] -> [Add a new cloud]
  • Kubernetes 地址: https://kubernetes.default.svc.cluster.local
  • Kubernetes 命名空间:kube-ops
  • 服务证书不用写(我们在安装Jenkins的时候已经指定过serviceAccount),均使用默认
  • 连接测试,成功会提示:Connection test successful
  • Jenkins地址:http://jenkins.kube-ops.svc.cluster.local:8080
  • Jenkins 通道: jenkins.kube-ops.svc.cluster.local:50000

  1. 配置 Pod 模板
  • 名称:jnlp-slave
  • 命名空间:kube-ops
  • 标签列表:jnlp-slave,作为agent的label选择用

配置完成,点击 save 保存。

新建自由风格的项目

配置完成,保存退出

执行 Job 并查看结果

附 pipeline Demo

node ('jnlp-slave') {
    stage('Clone') {
        echo '1. Clone Stage'
    }
    stage('Test') {
        echo '2. Test stage'
    }
    stage('Build') {
        echo '3. Build Stage'
    }
    stage('Deploy') {
        echo '4. Deploy Stage'
    }
    
}

posted on 2020-07-17 13:15  imirsh  阅读(264)  评论(0编辑  收藏  举报