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

2023-10-30


本文介绍一套比较简单的 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.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitLab+Jenkins+Harbor+Kubernetes构建Devops体系 的相关文章

随机推荐

  • 懒汉式之并发安全问题

    在高并发场景下的懒汉式创建对象 造成ID重复创建 代码见下图 并发场景下 iDCreator对象并未随类的创建而创建 而是在需要的时候进行创建 导致垃圾回收器可以对其进行回收 从而有可能同一时间戳 前后两次的对象不一致 造成出现两个不同的i
  • redis 主从配置参数详解

    转 https www cnblogs com chenmh p 5121849 html undefined 安装redis 下载redis wget http download redis io releases redis 3 0 7
  • 基于51单片机的温控风扇设计

    作者 何朋伟 19计科一班 宏定义 define uchar unsigned char define uint unsigned int 包含头文件 include
  • Java系统多个JSSE认证

    问题描述 由于项目需要 系统需要多个JSSE认证 登录使用SSL 邮件收取 解决办法 一 对于需要一次JSSE认证来说 可以通过 1 InstallCert工具来安装证书 Copyright 2006 Sun Microsystems In
  • 模型实战(10)之win10下tensorRT部署yolov5算法

    win10下tensorRT部署yolov5算法 针对yolov5的众多版本 目前有几种部署方法 1 tensorrtx 大神针对众多网络模型 包含yolov5众多版本 开源的一个转换工具 部署方式为 onnx gt wts gt engi
  • egret native使用自定义字体

    参考文章白鹭官方链接 除了文章提到的修改内容 还有文章没提到的一些内容如下 1 在egretProperties json文件中添加字库名称 2 添加字库资源 以上是android apk包内改变字体的方法 而移动端浏览器的设置方法则需要另
  • 关于layer.js中layer.confirm弹出框看不到或者不居中问题处理

    在jsp页面body 标签上加上style height 100 就可以解决
  • 在Android中实现Unity3D的背景是透明的 u3d显示在安卓的上一层

    在Unity中 可以通过设置Camera的背景 Camera下的Environment下的Background Type设置为Solid Color Background需要设置黑色透明度0 即ARGB为 0 0 0 0 透明度不为0则无法
  • 安卓应用开发入门:两个 Activity 之间的跳转

    关键知识 Intent Intent 意图 主要实现Activity之间的来回切换和数据传递 Intent是一种轻量级的消息传递机制 这种消息描述了应用中一次操作的动作 动作涉及数据 附加数据 Android系统根据此Intent的描述 负
  • 凭借这份面经,大专的我成功拿到腾讯Android岗offer

    一 简历 网上有很多对程序员简历的一些指导 这里就不重述 大家可以搜下网上其他大神的总结 结合自身情况修改下 我有几点建议 1 尽量不要花哨 程序员和设计师或者产品运营还不一样 我们的简历成功与否决定权还是在技术面试官那 而他们看重的是你的
  • centos6.8下l2tp客户端xl2tpd的安装配置

    环境 DigitalOcean centos6 8作为l2tp客户端 ros6 43 8作为l2tp服务端 1 安装xl2tp和ppp rpm ivh http mirrors yun idc com epel 6 x86 64 epel
  • 你能活过80岁么?9大因素决定人的寿命

    你能活过80岁么 9大因素决定人的寿命 最近 一项世界上历时最长 规模最大的老龄化研究显示 对中年男子而言 寿命能否达到80岁以上 取决于9项指标 即体重 血压 血糖 胆固醇 受教育程度 婚姻状况 是否酗酒 是否吸烟以及是否拥有好的握力 这
  • 测试音质好坏的软件,音响音质的好坏简单的两招测出

    原标题 音响音质的好坏简单的两招测出 怎样判断一个音响好坏 对于略懂略懂的你真的可以判断一个音响的好坏 当没有专业的测试工具也没有精确的仪器时候 应该怎样判断一个音响好坏 然后就买买买 低配置的测试 工具 一杯水 一首无损音质的歌曲 测试低
  • Android实现屏幕旋转方法

    本文实例总结了Android实现屏幕旋转方法 分享给大家供大家参考 具体如下 在介绍之前 我们需要先了解默认情况下android屏幕旋转的机制 默认情况下 当用户手机的重力感应器打开后 旋转屏幕方向 会导致当前activity发生onDes
  • 金融分析与风险管理——投资组合的有效前沿及资本市场线

    金融分析与风险管理 投资组合的有效前沿及资本市场线 1 投资组合的可行集 2 投资组合的有效前沿 3 资本市场线 1 投资组合的可行集 投资组合中的权重变量可以实现投资组合的预期收益率与收益波动率之间的映射关系 在投资组合的理论中 所有可能
  • Tomcat服务安全加固和优化

    转载来源 https help aliyun com knowledge detail 37421 html spm a2c4g 11186623 4 5 4ad6510eY2UhOS 介绍 tomcat服务默认启用了管理后台功能 使用该后
  • Docker安装(RPM包方式)

    Docker安装 RPM包方式 一 安装环境准备 1 操作系统要求 1 查看内核版本 root nod var uname r 3 10 0 957 el7 x86 64 2 查看操作系统版本 root nod var cat etc os
  • java gridlayout 行高,RecyclerView GridLayoutManager和動態的行高

    初始化 postLine setAdapter postsAdapter postLine setLayoutManager new GridLayoutManager getActivity 2 準備後添加他們recyclerView功能
  • 【青少年CTF】“Flag在哪里?”解题记录

    青少年CTF训练平台 www qsnctf com 博主用户名 Fourstar 题目介绍 描述中并没有给出什么有用的信息 一般来讲有关于直接问Flag的 例如 Flag在哪里 Where is Flag 此类题目 第一反应就是查看网页源代
  • GitLab+Jenkins+Harbor+Kubernetes构建Devops体系

    文章目录 一 架构设计 二 环境准备 1 安装GitLab 2 安装Jenkins 1 安装方式 2 配置 3 安装Harbor 4 安装k8s 1 安装方式 2 配置 三 服务代码结构 四 Jenkins持续集成 本文介绍一套比较简单的