外部jenkins在K8S 动态创建jnlp-slave并进行构建发布

本文介绍如何在Jenkins中配置Kubernetes插件及KubernetesContinuousDeploy插件,实现与K8S集群的连接,并通过Jenkins Pipeline完成代码的自动化部署流程。

一、配置Kubernetes插件

1、在K8S集群添加kubernetes插件,用于连接k8s集群,安装Kubernetes Continuous Deploy(目前测试高版本存在无法发布的问题,建议使用1.0.0版本)插件,用于发布deployment到k8s集群。

2、通过k8s的config文件生成证书并上传jenkins。

查看 /root/.kube/config文件,文件中有三个值 certificate-authority-data 、client-certificate-data 、 client-key-data

解码它们获得证书 ,注意将上面的值替换称自己的一大长传字符串

echo certificate-authority-data | base64 -d > ca.crt
echo client-certificate-data | base64 -d > client.crt
echo client-key-data | base64 -d > client.key

根据这三个文件生成一个PKCS12格式的客户端证书文件

openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt

将生成的  cert.pfx  上传到jenkins凭证,选择PKCS证书。

3、在jenkins上添加k8s

系统管理=》节点管理=》Configure Cloud

好的,这里我给您举个例子。 假设我们的 Jenkins 主节点已经部署在 Kubernetes 集群中,且已经安装了 Kubernetes 插件。现在我们需要创建一个 Jenkins Slave Pod,使其能够在 Kubernetes 集群中运行构建任务。 1. 创建一个 Jenkins Agent 镜像 首先,我们需要创建一个 Jenkins Slave 镜像。可以使用 Dockerfile 来定义该镜像,例如: ``` FROM jenkins/inbound-agent:4.6-1-jdk11 USER root RUN apt-get update && \ apt-get install -y maven && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* USER jenkins ``` 这个 Dockerfile 基于 `jenkins/inbound-agent:4.6-1-jdk11` 镜像,安装了 Maven,然后切换回 Jenkins 用户。 2. 创建一个 Kubernetes Pod Template 接下来,我们需要创建一个 Kubernetes Pod 模板,该模板将用于创建 Jenkins Slave Pod。 在 Jenkins 界面中,点击 "Manage Jenkins" -> "Configure System",然后在 "Cloud" 部分下找到 "Kubernetes" 点击 "Add Pod Template"。 在 "Pod Template" 页面中,可以配置 Pod 的基本信息,例如 Pod 名称、标签、容器名称、镜像名称等。 此外,还可以在 "Containers" 部分下添加容器。在这个例子中,我们只需要添加一个容器,名称为 "jnlp",镜像为我们之前创建的 Jenkins Slave 镜像。 ``` Name: jenkins-slave Labels: jenkins-slave Namespace: default Service Account: default Node Selector: <none> Working Dir: /home/jenkins/agent Containers: jnlp: Name: jnlp Docker Image: <your-jenkins-slave-image> Command to run: - /bin/sh - -c - > cat > /root/.kube/config <<EOF apiVersion: v1 kind: Config clusters: - name: cluster-name cluster: server: https://kubernetes.default.svc.cluster.local certificate-authority-data: <your-ca-data> contexts: - name: context-name context: cluster: cluster-name user: <your-user> namespace: <your-namespace> current-context: context-name EOF /usr/local/bin/jenkins-agent TTY Enabled: true Always Pull Image: true Working Dir: /home/jenkins/agent ``` 上述配置中,我们在容器中执行了一个命令,用于配置 Kubernetes API 访问信息,然后启动 Jenkins Agent。 3. 创建 Jenkins Slave Pod 完成 Pod 模板的配置之后,我们可以在 Jenkins 界面中使用该模板来创建 Jenkins Slave Pod。 在 Jenkins 界面中,点击 "New Item" -> "Freestyle project",然后在 "General" 页面中勾选 "Restrict where this project can be run",在 "Label Expression" 中输入 "jenkins-slave"。 保存配置后,当我们触发构建任务时,Jenkins 将会自动创建一个 Jenkins Slave Pod,将该任务分配给该 Pod 运行。 以上就是在 Jenkins 中使用 Kubernetes 动态创建 Jenkins Slave Pod 的具体步骤。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值