说明: 总的目标是在k8s集群部署gitlab、jenkins,并且在本地提交代码到gitlab后jenkin流水线可以自动编译打包成为docker镜像然后部署到k8s中并实现客户端外部域名访问,在文档分为多个部分,其中涉及的技术有docker安装、k8s搭建、部署gitlab、部署jenkins、部署sonarqube、gitlab和jenkin联动、jenkins和sonarqube联动、pipline脚本编写、istio部署、istio服务网关等…
此文档接第九篇:搭建docker私有仓库
这篇文档讲解的是如何在jenkins如何配置k8s的节点, 配置完成后jenkins触发流程后k8s将创建一个容器来构建相应项目
1. jenkins安装Kubernetes插件
#点击“系统管理” -> “插件管理” -> “Available Plugins”
#在搜索框中输入Kubernetes搜索相应插件安装即可 (注意:安装完插件后需要重启jenkins才可生效)
2. jenkins配置k8s信息
2.1 进入配置页面
登录jenkins后点击“系统管理” -> “节点管理” ->“Configure Clouds” 进入配置集群页面 如下图:
2.2 配置Kubernetes Cloud details
2.2.1 Kubernetes 命名空间
配置Kubernetes Cloud details -> Kubernetes 命名空间 如下图:
注意: 这里配置的命名空间是jenkins部署在k8s中所属的命名空间
2.2.2 测试连接
测试连接k8s, 点击“连接测试” 如连接没有问题则如下图:
2.2.3 jenkins 地址和Jenkins 通道
配置Kubernetes Cloud details -> Jenkins 地址和Jenkins 通道 如下图:
2.3 配置Pod Templates
2.3.1 配置 Pod Templates名称
配置Pod Templates -> Pod Templates -> 名称 如下图:
注意: 这里起的名称是“jnlp”
2.3.2 配置Pod Template details
2.3.2.1 配置命名空间和标签列表
配置Pod Templates -> Pod Templates -> Pod Template details -> 命名空间和标签列表 如下图:
注意: 命令空间: 指jenkins启动容器所属的命名空间
标签列表: 指此pod模板的标签, 也就是在pipline中配置的agent
2.3.2.2 配置容器列表
2.3.2.2.1 配置Container Template名称和镜像
配置Pod Templates -> Pod Templates -> Pod Template details -> 容器列表 -> Container Template -> 名称和镜像 如下图:
注意: 这里如果名称使用的不是jnlp,则拉取构建的基础镜像将是默认的,也就是说你下面配置的镜像是不生效的, 如果你想使用自己自定义的镜像, 那么名称必须填写为jnlp
2.3.2.2.2 配置Container Template卷
配置Pod Templates -> Pod Templates -> Pod Template details -> 容器列表 -> Container Template -> 卷 如下图:
注意: 这里我们总共挂载了主机的5个卷 起作用如下:
- /var/run/docker.sock: 此卷作用是可以在容器内部连接到主机的docker,因为本身容器内是不能安装docker的, 所以如果容器内想打docker镜像,就需要连接到宿主机的docker,而docker.sock是docker的连接窗口
- /usr/bin/docker: 此卷作用是可以在容器内部使用docker的可执行文件
- /etc/hosts: 这里我们在推送镜像时使用的是域名, 为了解析方便就将域名配置到了hosts文件中, 然后挂载到了容器中使用
- /usr/bin/kubectl: 此卷作用是可以在容器内部使用kubectl的可执行文件, 因为我们最后需要部署我们业务容器到k8s, 使用的命令就是kubectl apply -f xx.yaml
- /root/.kube/config: 这里的config是连接k8s集群的信息
2.3.2.2 配置Service Account
配置Pod Templates -> Pod Templates -> Pod Template details -> Service Account 如下图:
注意: 这里配置的jenkins-sa是创建在k8s创建jenkin时添加的sa资源, 因为我们jenkins触发流程创建构建容器时是要连接k8s集群的, 所以我们需要添加sa, 而sa的作用就是部署应用连接k8s所需要的认证信息
至此配置完成