【云原生 | Kubernetes 系列】—jenkins on k8s 之 插件安装
版权 本文为云篆录原创文章,转载无需和我联系,但请注明来自云篆录 https://www.yunzhuan.site
插件列表(根据实际情况选择)
- git
- gitlab
- Git Parameter
- pipeline
- Pipeline Stage View
- kubernetes-plugins
- Locale(中文插件)
插件安装
Jenkins在kubernetes中动态创建代理
1 Jenkins主从架构介绍
- Jenkins Master/Slave架构
Master(Jenkins本身)提供Web页面让用户来管理项目和从节点(Slave),项目任务可以运行在Master本机或者分配到从节点运行,一个Master可以关联多个Slave,这样的好处是可以让Slave分担Master工作压力和隔离构建环境。
当触发Jenkins任务时,Jenkins会调用Kubernetes API创建Slave Pod,Pod启动后会连接Jenkins,接受任务并处理。
2 kubernetes插件配置
- Kubernetes插件用于Jenkins在Kubernetes集群中运行动态代理,插件介绍"https://github.com/jenkinsci/kubernetes-plugin"。
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
配置凭据
4 Jenkins连接k8s配置
- 配置插件 系统管理 -> 系统配置 -> 节点管理 -> Configure Clouds -> 配置集群 -> Add a new cloud -> Kubernetes -> Kubernetes Cloud details
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'
}
}
版权 本文为云篆录原创文章,转载无需和我联系,但请注明来自云篆录 https://www.yunzhuan.site
评论区