一边是自动化老将Jenkins,一边是容器新贵Kubernetes,它们的结合让CI/CD步入了云端时代。
第一部分:为什么选择Jenkins与Kubernetes联姻?
简单来说,Jenkins和Kubernetes的结合就像是给了你一个既能自动盖房子又能自动调配房间的超级管家。
Kubernetes是一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。而Jenkins则是一个开源的自动化服务器,广泛用于实现持续集成和持续交付。
当Jenkins遇上Kubernetes,奇迹就发生了:
- 弹性伸缩:Kubernetes可以根据负载自动扩展Jenkins实例。当构建任务排队时,Kubernetes会自动创建新的Jenkins代理节点,任务完成后又自动回收,不再需要维护一堆常驻的构建机器。
- 高可用性:通过部署多个Jenkins实例,确保服务的持续可用性。即使某个Pod崩溃,Kubernetes也会自动重启它,确保最小的停机时间。
- 环境一致性:构建和测试在与生产环境几乎相同的容器中进行,告别了"在我机器上是好的"这类经典借口。
- 资源效率:每个Jenkins实例可以运行在独立的容器中,避免资源争用。 Kubernetes能够将负载均匀地分布在多个Jenkins Pod上,提高系统稳定性。
说白了,这种组合让CI/CD流水线真正实现了按需使用、弹性伸缩,既省钱又省心。
第二部分:准备工作:不打无准备之仗
在开始配置之前,我们需要准备好战场。以下是需要准备的内容:
- 一个运行的Kubernetes集群:可以是本地的Minikube、Kind,也可以是云服务商提供的Kubernetes服务(如GKE、EKS、AKS)。如果你只是想在本地试试,Minikube是个不错的选择:
# 安装Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动Minikube集群
minikube start
# 检查集群状态
kubectl cluster-info
- 安装并配置好kubectl:用于与Kubernetes集群交互。
- Helm(可选):用于更便捷地管理Jenkins的部署。
- 基本的Jenkins知识:当然,我假设你已经对Jenkins有基本了解。
第三部分:实战开始:将Jenkins部署到Kubernetes
好了,废话不多说,让我们亲自动手,一步步将Jenkins部署到Kubernetes上。
3.1 创建Jenkins的命名空间
首先,为Jenkins创建一个专属的命名空间,这样可以让资源更加有序:
kubectl create namespace jenkins
3.2 配置持久化存储
Jenkins作为CI/CD的核心,它的数据(如任务配置、构建历史)可不能丢失。因此我们需要配置持久化存储:
# jenkins-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
namespace: jenkins
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: jenkins
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
应用这个配置:
kubectl apply -f jenkins-pv.yaml
3.3 部署Jenkins
接下来,我们创建Jenkins的部署文件:
# jenkins-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jen

最低0.47元/天 解锁文章
152

被折叠的 条评论
为什么被折叠?



