搭建Jenkins Pipeline以部署至本地Kubernetes集群
Jenkins Pipeline 部署Docker镜像到本地Kubernetes集群完整工作流程
一、整体协同工作流程概述
核心执行步骤
- 代码拉取:GitHub代码变更触发(或手动触发)Jenkins任务,Jenkins通过Git插件将代码拉取到自身工作目录(无论Jenkins运行在本地磁盘还是K8s集群内,此步骤逻辑一致)
- 镜像处理(若需构建镜像):使用
docker build命令或Docker插件构建镜像,推送到K8s集群可访问的镜像仓库(本地私有仓库或公共仓库均可) - 权限准备:Jenkins获取本地K8s集群的认证权限,确保能向集群发送部署指令
- 部署执行:Jenkins调用Kubernetes插件或直接执行
kubectl apply -f <YAML文件路径>,使用仓库中的YAML文件完成应用部署 - 状态验证(可选):执行
kubectl get pods、kubectl get deployments等命令,确认部署状态并输出到Jenkins控制台
组件协同逻辑
- Jenkins:作为流程调度核心,串联代码拉取、镜像处理、部署执行全流程
- GitHub:提供代码存储与版本控制,是Jenkins的代码来源
- Docker:负责构建容器镜像(若业务需要),生成K8s可运行的应用载体
- Kubernetes集群:应用最终运行环境,接收Jenkins的部署指令并完成资源调度
- 认证体系:Jenkins与K8s之间的权限验证,通过kubeconfig文件或K8s服务账号实现
二、部署认证错误的核心解决逻辑
你遇到的认证错误本质是Jenkins未获得访问本地K8s集群的合法权限,分两种场景处理:
场景1:Jenkins运行在Windows本地磁盘
- 确保Jenkins服务使用的Windows账户有权访问本地K8s的
kubeconfig文件(默认路径C:\Users\<你的账户>\.kube\config) - 在Jenkins全局配置中添加Kubernetes集群,选择"kubeconfig文件"模式,指定上述路径;或直接复制
kubeconfig内容粘贴到配置框 - 点击"测试连接",确认Jenkins能正常与K8s集群通信
场景2:Jenkins运行在本地K8s集群内
- 创建K8s服务账号(ServiceAccount),示例YAML:
apiVersion: v1 kind: ServiceAccount metadata: name: jenkins-deployer namespace: default - 绑定该服务账号到具有部署权限的ClusterRole,示例YAML:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: jenkins-deployer-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: edit # edit角色拥有大部分资源的读写权限,适合部署场景 subjects: - kind: ServiceAccount name: jenkins-deployer namespace: default - 在Jenkins的Kubernetes插件配置中,选择"集群内服务账号"模式,无需手动配置
kubeconfig,Jenkins会自动通过服务账号获取权限
三、初学者友好的学习资料推荐
- Jenkins官方Kubernetes集成指南:从插件安装、集群配置到Pipeline编写,覆盖基础操作,步骤清晰
- Kubernetes官方Jenkins部署示例:包含在K8s集群上部署Jenkins并配置CI/CD流程的实操案例,结合官方资源更易理解
- Jenkins Pipeline入门手册:重点讲解
Jenkinsfile的基本语法,以及如何在Pipeline中集成kubectl命令或Kubernetes插件 - Windows环境本地K8s配置教程:针对Windows Server 2022,讲解如何搭建本地K8s集群(如Docker Desktop内置K8s或Minikube),确保集群可正常访问
内容的提问来源于stack exchange,提问作者user22025071
相关产品推荐
相关产品推荐

