DevOps平台搭建过程详解--Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台

一、环境说明

1.1CI/CD

CI即为持续集成(Continue Integration,简称CI),用通俗的话讲,就是持续的整合版本库代码编译后制作应用镜像。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、提高代码质量、快速迭代等;(Jenkins)

CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程;(k8s)

1.2 系统架构

研发人员通过Git将代码上传至Gitlab,项目管理员审核代码后合并代码;

Jenkins通过webhook获取Gitlab上的项目代码,并通过maven打包构建镜像,如果构建报错,则可以通过邮件或钉钉等通知相关人员;

镜像构建完成后,Jenkins自动将镜像pull到Harbor镜像仓库;

Harbor镜像仓库通过将镜像push到k8s集群运行,k8s通过编排管理,实现镜像服务的伸缩和高可用。

1.3 软硬件环境

角色 主机名 ip地址 备注
master k8s-master 192.168.250.217

k8s主节点、8核CPU、4GB(CD)

node k8s-node1 192.168.250.218

k8s从节点、8核CPU、4GB

node k8s-node2 192.168.250.219

k8s从节点、8核CPU、4GB

Gitlab+Jenkins+Docker jenkins 192.168.250.188

 8核CPU、12GB,Gitlab最少需要4G(CI)

docker镜像仓库:harbor harbor 192.168.250.220

8核CPU、4GB

软件 版本
linux centos7
docker 26.1.3
k8s 1.22.2
harbor 2.0.6
Jenkins 2.457(尽量别用latest版本安装 可能导致插件安装失败)
gitlab 10.7.5


二、环境准备

在所有节点操作

2.1 关闭NetworkManager

NetworkManager会和network启动是发生冲突,导致network启动失败,不能远程访问虚拟机;

systemctl stop NetworkManager                #临时关闭
systemctl disable NetworkManager             #永久关闭网络管理命令
systemctl start network.service              #开启网络服


2.2 设置静态ip


  2.2.1查看网络配置

ifconfig #查看网络配置


2.2.2 修改网络配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

1)选择动态分配或者静态分配

BOOTPROTO=static    #dhcp:自动分配ip ,static:静态ip

2)开启自动打开网卡

ONBOOT=yes     #开启启动必须是yes

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static    #dhcp:自动分配ip ,static:静态ip
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9c922cc8-b3ed-419a-88bd-6fd756e04880
DEVICE=ens33
ONBOOT=yes  #开启启动必须是yes
IPADDR=192.168.163.152 #静态ip
NETMASK=255.255.255.0  #
GATEWAY=192.168.163.2  #网关
DNS1=192.168.163.0   #DNS
DNS2=114.114.114.114

2.2.3重启服务

systemctl restart network

2.2.4查看网络状态

systemctl status network.service

图示:

ifconfig

2.3 修改主机名 

hostnamectl set-hostname k8s-master #k8s-master 为主机名称

2.4 所有机器关闭防火墙 

 systemctl stop firewalld    #关闭
 systemctl disable firewalld        #开机不自启
 systemctl status firewalld        #查看状态

2.5 所有机器关闭selinux 

 sed -i 's/enforcing/disabled/' /etc/selinux/config 
 setenforce 0
 systemctl status firewalld


2.6 所有机器关闭swap 

swapoff -a # 临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭
swapon -s #查看swapon分区


2.7 为所有节点安装docker 

yum install wget.x86_64 -y
rm -rf /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/centos7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-20.10.11 -y
systemctl start docker
systemctl enable docker
docker version


配置docker加速器

mkdir -p /etc/docker
 tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://2tefyfv7.mirror.aliyuncs.com"]
}
EOF
 systemctl daemon-reload
 systemctl restart docker

三、部署k8s集群 

3.1 添加主机名与ip的对应关系(k8s-master、k8s-node1、k8s-node2)

cat >> /etc/hosts << EOF
192.168.163.151 k8s-master
192.168.163.152 k8s-node1
192.168.163.153 k8s-node2
EOF

source /etc/profile

3.2 将桥接的ipv4流量传递到iptables的链(k8s-master、k8s-node1、k8s-node2) 

cat >> /etc/sysctl.d/k8s.conf << EOF
 net.bridge.bridge-nf-call-ip6tables = 1
 net.bridge.bridge-nf-call-iptables = 1
EOF


3.3 安装kubeadm、kubelet、kubectl(k8s-master、k8s-node1、k8s-node2) 

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-ke

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码界云仓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值