Jenkins 对接 Kubernetes(K8s)通常有两种主要场景,很多企业是两者结合使用的:
下面我按最常见、最实用的方式给你讲,从“能跑起来”到“生产可用”。
适合:
核心做法
Kubernetes CLI 插件kubectl / helm 连接 K8s示例 Pipeline
pipeline {
agent any
stages {
stage('Deploy to K8s') {
steps {
withKubeConfig([credentialsId: 'k8s-kubeconfig']) {
sh 'kubectl set image deployment/my-app my-app=my-registry/my-app:latest'
}
}
}
}
}
✅ 优点:简单
❌ 缺点:Jenkins 本身不弹性
适合:
原理
需要插件
Jenkins 配置
示例 Pod Template
jenkins-agent:
image: jenkins/inbound-agent
resources:
requests:
cpu: 500m
memory: 512Mi
Pipeline 示例
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: build
image: maven:3.8
command: ["cat"]
tty: true
'''
}
}
stages {
stage('Build') {
steps {
container('build') {
sh 'mvn clean package'
}
}
}
}
}
✅ 优点:弹性、资源利用率高
❌ 缺点:配置稍复杂
适合:
快速安装
helm repo add jenkins https://charts.jenkins.io
helm install jenkins jenkins/jenkins -n jenkins --create-namespace
然后结合方式 2 使用。
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
namespace: jenkins
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: jenkins-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: jenkins
namespace: jenkins
⚠️ 生产环境不要直接给 cluster-admin,按 namespace 授权。
Git → Jenkins → 构建镜像 → 推送到 Harbor
↓
K8s Deployment
Jenkins:
K8s:
| 场景 | 推荐方式 |
|---|---|
| Jenkins 已存在 | 方式 1 |
| 构建频繁 | 方式 2 |
| 新项目 | 方式 3 + 2 |
| 生产级 | Jenkins + K8s + Helm/ArgoCD |
你可以告诉我:
我可以直接给你一套可复制的配置 + Pipeline。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。