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

一、架构设计

请添加图片描述
所需工具如下,全部在 CentOS 服务器上自行搭建

  • 代码管理:GitLab
  • 镜像仓库:Harbor
  • 容器:Docker
  • 编排:Kubernetes
  • 持续集成:Jenkins

二、环境准备

系统版本IP节点角色CPU内存Hostname
CentOS 7.6 Minimal192.168.73.141GitLab4核8Ggitlab.rkyao.com
CentOS 7.6 Minimal192.168.73.141Jenkins4核8G
CentOS 7.6 Minimal192.168.73.135Harbor2核4Gharbor.rkyao.com
CentOS 7.6 Minimal192.168.73.143K8s master、node2核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.crt  harbor.rkyao.com.cert  harbor.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.crt  harbor.rkyao.com.cert  harbor.rkyao.com.key

三、服务代码结构

在这里插入图片描述
其中用于构建的几个脚本

  • 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 流水线任务
请添加图片描述
添加Git的登录凭据,输入用户名和密码即可
在这里插入图片描述
添加流水线脚本,脚本包括拉取 git 代码、构建 docker 镜像、上传镜像到 harbor、部署到 k8s
在这里插入图片描述
上述步骤完成后,点击 保存 按钮。

点击 Build Now 开始构建
在这里插入图片描述
查看构建日志,显示成功
在这里插入图片描述
构建完成后到 Harbor 上可以看到镜像已上传
在这里插入图片描述
登录 Kubernetes 管理界面可以看到部署成功
在这里插入图片描述
测试服务是否正常

# 只能内网访问 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
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐