devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系


文章目录

      • 一、架构设计
      • 二、环境准备
        • 1.安装GitLab
        • 2.安装Jenkins
          • 1)安装方式
          • 2)配置
        • 3.安装Harbor
        • 4.安装k8s
          • 1)安装方式
          • 2)配置
      • 三、服务代码结构
      • 四、Jenkins持续集成

本文介绍一套比较简单的 Devops体系的搭建流程,以实现软件的开发运维一体化,参照本文可以从零开始把这套体系建起来,文中实践操作为主,理论较少,需了解相关理论的请自行查找资料。
一、架构设计
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

所需工具如下,全部在 CentOS 服务器上自行搭建
  • 代码管理:GitLab
  • 镜像仓库:Harbor
  • 容器:Docker
  • 编排:Kubernetes
  • 持续集成:Jenkins
二、环境准备
系统版本 IP 节点角色 CPU 内存 Hostname
CentOS 7.6 Minimal 192.168.73.141 GitLab 4核 8G gitlab.rkyao.com
CentOS 7.6 Minimal 192.168.73.141 Jenkins 4核 8G
CentOS 7.6 Minimal 192.168.73.135 Harbor 2核 4G harbor.rkyao.com
CentOS 7.6 Minimal 192.168.73.143 K8s master、node 2核 4G
1.安装GitLab 参见 GitLab安装配置教程-Docker方式安装
2.安装Jenkins 1)安装方式 参见 Jenkins安装及使用
2)配置 要在 Jenkins 所在机器上进行如下操作
安装Docker JDKGitMaven需安装并配置好环境变量,Jenkins 会自动读取
Docker 20.10.12
JDK 1.8.0_131
Git 1.8.3.1
Maven 3.5.4
因需连接自己本地安装的 GitLabHarbor,所以需要添加对应的host(云服务不需要)
vi /etc/hosts # 添加如下内容 192.168.73.141 gitlab.rkyao.com 192.168.73.135 harbor.rkyao.com

添加 Harbor 的证书文件(云服务不需要)
# 创建目录 mkdir -p /etc/docker/certs.d/harbor.rkyao.com/ # 该目录下添加如下三个文件,从安装Harbor的机器上 /etc/docker/certs.d/harbor.rkyao.com 目录下copy过来,参见《Harbor安装配置》3.5 节 ca.crtharbor.rkyao.com.certharbor.rkyao.com.key

配置 k8s master 节点 ssh免密登录,需要向 master 节点传输脚本
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.73.143

3.安装Harbor 参见 企业级镜像仓库Harbor的部署及使用
4.安装k8s 1)安装方式 参见 Minikube快速安装Kubernetes
2)配置 在 k8smaster 节点上进行如下操作
创建名为 myhubsecret,设置 docker 镜像仓库的信息,创建一次即可,不需每个服务都创建
kubectl create secret docker-registry myhub \ --docker-server=harbor.rkyao.com \ --docker-username=admin \ --docker-password=Harbor12345 \ --docker-email=yao23711@163.com

创建名为 my-configconfigmap,设置环境变量,创建一次即可,不需每个服务都创建
# 删除 kubectl delete configmap my-config # 创建 设置环境变量 myenv 为 prod, 用于启动服务时选择配置文件 kubectl create configmap my-config --from-literal=myenv=prod # 查看 kubectl describe configmap my-config

配置Harborhost
vi /etc/hosts # 添加如下内容 192.168.73.135 harbor.rkyao.com

添加 Harbor 的证书文件(云服务不需要)
# 创建目录 mkdir -p /etc/docker/certs.d/harbor.rkyao.com/ # 该目录下添加如下三个文件,从安装Harbor的机器上 /etc/docker/certs.d/harbor.rkyao.com 目录下copy过来,参见《Harbor安装配置》3.5 节 ca.crtharbor.rkyao.com.certharbor.rkyao.com.key

三、服务代码结构
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

其中用于构建的几个脚本
  • build.sh:Maven打包、Docker镜像打包、上传Docker仓库
  • deploy.sh:Docker镜像部署到k8s
  • k8s-deployment.yaml:k8s部署deployment的yaml
  • Jenkinsfile:Jenkins流水线脚本
  • bootstrap.sh:Java服务启动脚本
  • Dockerfile:用于构建Docker镜像
代码有点多,具体请看 GitHub,地址如下
https://github.com/yaorongke/docker-demo
四、Jenkins持续集成
创建 Pipeline 流水线任务
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

添加Git的登录凭据,输入用户名和密码即可
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

添加流水线脚本,脚本包括拉取 git 代码、构建 docker 镜像、上传镜像到 harbor、部署到 k8s
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

上述步骤完成后,点击 保存 按钮。
【devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系】点击 Build Now 开始构建
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

查看构建日志,显示成功
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

构建完成后到 Harbor 上可以看到镜像已上传
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

登录 Kubernetes 管理界面可以看到部署成功
devops|GitLab+Jenkins+Harbor+Kubernetes构建Devops体系
文章图片

测试服务是否正常
# 只能内网访问 pod地址+容器port curl 172.17.63.31:8090/docker-demo/docker/test01?id=1 # 内外网皆可访问 k8s所在服务器地址 + nodePort curl 192.168.73.143:30001/docker-demo/docker/test01?id=1

    推荐阅读