侧边栏壁纸
博主头像
云录博主等级

行动起来,活在当下

  • 累计撰写 24 篇文章
  • 累计创建 11 个标签
  • 累计收到 18 条评论

目 录CONTENT

文章目录

【云原生 | Kubernetes 系列】—jenkins on k8s 之 插件安装

Dylan
2023-12-21 / 0 评论 / 0 点赞 / 113 阅读 / 9136 字 / 正在检测是否收录...
广告 广告

【云原生 | Kubernetes 系列】—jenkins on k8s 之 插件安装

版权 本文为云篆录原创文章,转载无需和我联系,但请注明来自云篆录 https://www.yunzhuan.site

插件列表(根据实际情况选择)

  • git
  • gitlab
  • Git Parameter
  • pipeline
  • Pipeline Stage View
  • kubernetes-plugins
  • Locale(中文插件)

插件安装

img.png img_1.png img_2.png

img_3.png img_4.png img_5.png img_6.png img_7.png img_8.png img_9.png

Jenkins在kubernetes中动态创建代理

1 Jenkins主从架构介绍

- Jenkins Master/Slave架构
Master(Jenkins本身)提供Web页面让用户来管理项目和从节点(Slave),项目任务可以运行在Master本机或者分配到从节点运行,一个Master可以关联多个Slave,这样的好处是可以让Slave分担Master工作压力和隔离构建环境。

当触发Jenkins任务时,Jenkins会调用Kubernetes API创建Slave Pod,Pod启动后会连接Jenkins,接受任务并处理。

img_10.png

2 kubernetes插件配置

3 Jenkins连接k8s凭证(注意:同一个集群不需要凭证,不在同一个集群,需要凭证)

获取/root/.kube/config中certificate-authority-data的内容并转化成base64 encoded文件。
kubectl config view --raw -o json|jq '.clusters[].cluster."certificate-authority-data"' |tr -d '"'|base64 -d> ca.crt
获取/root/.kube/config中certificate-authority-data 和 的内容并转化成base64 encoded文件
kubectl config view --raw -o json|jq '.users[].user."client-certificate-data"' |tr -d '"'|base64 -d > client.crt
kubectl config view --raw -o json|jq '.users[].user."client-key-data"'|tr -d '"'|base64 -d > client.key
生成client P12认证文件cert.pfx,用于配置Jenkins连接k8s集群的认证凭据(密码123456)

生成Client P12认证文件cert.pfx,并下载至本地:

[root]# openssl pkcs12 -export -out ./cert.pfx -inkey ./client.key -in ./client.crt -certfile ./ca.crt
[root@021rjsh102045s jenkins-ca]# kubectl config view --raw -o json|jq '.clusters[].cluster."certificate-authority-data"' |tr -d '"'|base64 -d> ca.crt
[root@021rjsh102045s jenkins-ca]# kubectl config view --raw -o json|jq '.users[].user."client-certificate-data"' |tr -d '"'|base64 -d > client.crt
[root@021rjsh102045s jenkins-ca]# kubectl config view --raw -o json|jq '.users[].user."client-key-data"'|tr -d '"'|base64 -d > client.key
[root@021rjsh102045s jenkins-ca]# ll
total 28
-rw-r--r-- 1 root root  1099 Jul 14 14:55 ca.crt
-rw-r--r-- 1 root root  1147 Jul 14 14:55 client.crt
-rw-r--r-- 1 root root  1679 Jul 14 14:55 client.key
-rw-r--r-- 1 root root 15608 Sep  5  2021 epel-release-latest-7.noarch.rpm
[root@021rjsh102045s jenkins-ca]# openssl pkcs12 -export -out ./cert.pfx -inkey ./client.key -in ./client.crt -certfile ./ca.crt
Enter Export Password:
Verifying - Enter Export Password:
[root@021rjsh102045s jenkins-ca]# ll
total 32
-rw-r--r-- 1 root root  1099 Jul 14 14:55 ca.crt
-rw-r--r-- 1 root root  3221 Jul 14 14:56 cert.pfx
-rw-r--r-- 1 root root  1147 Jul 14 14:55 client.crt
-rw-r--r-- 1 root root  1679 Jul 14 14:55 client.key
-rw-r--r-- 1 root root 15608 Sep  5  2021 epel-release-latest-7.noarch.rpm
配置凭据

img_13.png img_14.png

4 Jenkins连接k8s配置

  • 配置插件 系统管理 -> 系统配置 -> 节点管理 -> Configure Clouds -> 配置集群 -> Add a new cloud -> Kubernetes -> Kubernetes Cloud details

img_11.png img_12.png img_15.png img_16.png

5:自定义Jenkins Slave镜像

1:jenkins-salve dockerfile
FROM centos:7
LABEL maintainer lc

RUN yum install -y java-1.8.0-openjdk maven curl git libtool-ltdl-devel && \
    yum clean all && \
    rm -rf /var/cache/yum/* && \
    mkdir -p /usr/share/jenkins

COPY agent.jar /usr/share/jenkins/agent.jar
COPY jenkins-agent /usr/bin/jenkins-agent
COPY settings.xml /etc/maven/settings.xml
RUN chmod +x /usr/bin/jenkins-agent
COPY helm kubectl /usr/bin/

ENTRYPOINT ["jenkins-agent"]
2:helm

下载地址: https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz

chmod +x helm

3:jenkins-agent

github开源地址: https://github.com/jenkinsci/docker-inbound-agent 下载代码库: https://github.com/jenkinsci/docker-inbound-agent/archive/refs/heads/master.zip 使用 "jenkins-agent" shell 脚本文件。

4:kubectl
# cp -a /usr/bin/kubectl /root/ms_jenkins/jenkins-slave/
# chmod +x /root/ms_jenkins/jenkins-slave/kubectl
5:settings.xml

下载地址: http://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz 然后配置镜像仓库地址

6:agent.jar

编排 jenkins slave 镜像所需的配置文件说明

-rw-r--r-- 1 root root  1522173 Feb 10 10:00 agent.jar      # jenkins agent 程序,接受 master 下发的任务
-rw-r--r-- 1 root root      423 Feb 10 17:02 Dockerfile     # jenkins slave 镜像编排文件
-rwxr-xr-x 1 root root 41603072 Dec  9  2020 helm           # helm 二进制文件,客户端工具
-rw-r--r-- 1 root root     5390 Feb 10 17:16 jenkins-agent  # shell 脚本用于启动 agent.jar
-rwxr-xr-x 1 root root 40230912 Dec  9  2020 kubectl        # kubectl 二进制文件,客户端工具
-rw-r--r-- 1 root root    10406 Feb 10 17:36 settings.xml   # maven 配置文件

构建镜像推送仓库

 docker build -t 127.0.0.1/library/jenkins-slave:1.8 .
 docker push    127.0.0.1/library/jenkins-slave:1.8

6:创建demo流水线测试

node {
        stage('拉取代码') {

                echo '拉取代码'

        }


        stage('编译代码') {

                echo '编译代码'

        }


        stage('构建镜像并推送') {

                echo '构建镜像并推送'

        }


        stage('部署k8s') {

                echo '部署k8s'

        }

}

img_17.png img_18.png img_19.png img_20.png img_21.png img_22.png

版权 本文为云篆录原创文章,转载无需和我联系,但请注明来自云篆录 https://www.yunzhuan.site
0

评论区