使用 gitlab+gitlab runner+k8s 完成 devops
一.实验背景:
服务器 A 上安装了虚拟机,虚拟机的操作系统是 centos7,在虚拟机的 centos7 中安装了 gitlab 和 gitlab runner,项目代码由 gitlab 托管,项目是 springboot 的。现在有另外一个服务器 B,B 服务器上安装了虚拟机 vm1,vm2,vm3,这三台虚拟机上部署了 k8s.
二.实验目标:
通过 gitlab runner 实现自动化部署 springboot 项目到 k8s 中,
三.详细步骤:
第一步:为 GitLab Runner 配置 Kubernetes 集群访问
获取 Kubernetes 访问凭据
你需要在服务器 B(托管 Kubernetes 集群的服务器)上获取访问凭据。通常,这些信息可以在
~/.kube/config
文件中找到。创建 Kubernetes 服务账户(可选)
为了安全起见,你应该为 GitLab Runner 创建一个具有限制权限的 Kubernetes 服务账户,而不是使用默认的管理员账户。在你的 Kubernetes 集群中执行以下命令来创建服务账户和相关角色绑定:
获取该服务账户的访问凭据:
找到 gitlab-runner
的 token 并复制它。
将 Kubernetes 配置添加到 GitLab 项目
在 GitLab 项目中,转到
Settings > CI/CD > Variables
,添加一个新的变量,例如KUBECONFIG
,并将服务账户的访问凭据(通常是 Base64 编码的.kube/config
文件内容)作为值。
第二步:编写 GitLab CI/CD 配置文件
创建
.gitlab-ci.yml
文件在你的 Spring Boot 应用的根目录下创建
.gitlab-ci.yml
文件,该文件将指导 GitLab Runner 如何构建和部署你的应用。配置构建和部署阶段
配置
.gitlab-ci.yml
文件以构建 Docker 镜像,然后将其推送到容器注册表,并使用kubectl
部署到 Kubernetes。这里是一个基本的配置示例:
这个配置做了以下操作:
构建阶段使用 Docker 构建镜像并将其推送到 GitLab 的容器注册表中。
部署阶段将会更新 Kubernetes 部署的容器镜像。
第三步:配置 Kubernetes 部署文件
编写部署脚本
你需要为你的 Spring Boot 应用编写一个 Kubernetes 部署文件(通常是 YAML 格式)。这个文件描述了你的应用应该如何运行在 Kubernetes 上,包括使用的 Docker 镜像、副本数量、端口配置等。
例如,你可以创建一个名为
deployment.yaml
的文件,内容如下:
注意: 你需要将 image
值更改为实际的镜像路径。
将 Kubernetes 部署脚本添加到仓库
将
deployment.yaml
文件提交到你的 GitLab 仓库。这样 GitLab Runner 就可以在部署阶段访问到它。
第四步:触发构建和部署流程
提交 .gitlab-ci.yml
和 deployment.yaml
文件到你的 GitLab 仓库后,每当你推送代码到仓库中,GitLab CI/CD 将自动触发构建和部署流程。
每次代码推送到 master
分支时,GitLab Runner 将自动执行上述配置的 build
和 deploy
阶段,从而构建新的 Docker 镜像,并更新 Kubernetes 集群中的部署。
这是自动化部署的一个基本示例。根据你的具体需求,你可能需要进一步定制构建和部署脚本,例如设置更详细的健康检查、资源限制和日志配置等。
版权声明: 本文为 InfoQ 作者【了了】的原创文章。
原文链接:【http://xie.infoq.cn/article/ebcd3118a6710aec4d849218d】。未经作者许可,禁止转载。
评论