docker+gitlab(代码托管)+k8s(rancher)+habor(存储镜像)+Drone(ci/cd流水线)


流程图

在这里插入图片描述

一、docker

docker 安装

1. 准备工作,需要关闭selinux和分区
1. vim /etc/selinux/config  修改SELINUX的值为disable
2. vim /etc/fstab 注释  swap的一行
2. 安装
	1. 切换镜像源
		wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
	2. 查看当前镜像源中支持的docker版本
		yum list docker-ce --showduplicates
	3. 安装特定版本的docker-ce (必须制定--setopt=obsoletes=0,否则yum会自动安装更高版本)  
		yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
	4. 添加一个配置文件 并配置docker的仓库(目前配置aliyun仓库)
		mkdir /etc/docker
		cat <<EOF> /etc/docker/daemon.json
		{
			"exec-opts": ["native.cgroupdriver=systemd"],
			"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
		}
		EOF
	5.  添加linux服务并重启
		systemctl enable docker & systemctl restart docker
	6. docker 更新daemon.json之后,必须要更新docker仓库 并重启docekr
		systemctl daemon-reload & systemctl restart docker

docker 相关文档:

  1. 中文文档
  2. 英文官方文档
  3. 菜鸟教程的指令介绍

二、安装gitlab

gilab安装(版本建议安装13版本,其他版本也可以)

	1. 安装gitlab的依赖包
		yum -y install policycoreutils openssh-server openssh-clients postfix
	2. 设置ssh服务开机自启并启动ssh服务
		systemctl enable sshd && sudo systemctl start sshd
	3. 设置postfix开机自启并启动
		systemctl enable postfix && systemctl start postfix
	4. 使用wget 下载gitlab包(我用的是13版,比较好用)
		wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.3.0-ce.1.el7.x86_64.rpm
	5. 安装
		rpm -ivh gitlab-ce-13.3.0-ce.1.el7.x86_64.rpm
	6. 修改gitlab配置
		vim /etc/gitlab/gitlab.rb 
		更改
			external_url 'http://服务器IP:端口'
			nginx['listen_port'] = 端口
	7. 配置并启动gitlab
		gitlab-ctl reconfigure  加载配置
		gitlab-ctl restart|stop|start|status  git服务操作
		gitlab-ctl tail   查看日志
	8. 注意如果出了错误,解决方案,重复执行第七步	

2. gitlab 彻底卸载


	1. 停止gitlab服务
		gitlab-ctl stop
	2. 卸载gitlab
		rpm -e gitlab-ce
	3. 查看gitlab进程 并杀掉一个叫runsvdir的进程
		ps aux | grep gitlab
	4. 删除gitlab相关的文件
		find / -name *gitlab*|xargs rm -rf      删除所有包含gitlab的文件及目录
		find / -name gitlab | xargs rm -rf
	5. 注意这样卸载之后重新安装会出现问题,但是问题不大,重复gitlab安装的第七步就好了

三、安装rancher

很简单,官网也有,但是关键在于使用

docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.5.7

1. 添加集群
添加集群
2. 自定义安装k8s在这里插入图片描述
3.选择k8s版本,然后直接点下一步
在这里插入图片描述
4. 然后跟着提示操作就行,其他的不用管了,会自己搞好的(记住,记得关防火墙)

5.如果想让虚拟机也可以执行k8s指令;请看下

注意,这个只提供如何安装以及初步使用,更多知识,可以网上找;或者关注我之后,我会发布出来

四、安装harbor

1. 准备工作,先安装docker-compose
	1. 登入 GitHub ,找到对应版本下载
		curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
	2. 将下载后的文件放到 /usr/local/bin 目录下,并添加执行权限
		chmod +x /usr/local/bin/docker-compose
	3. 查看版本
		docker-compose -version
2. 安装harbor(很简单,因为harbor默认是使用https,所以关键在于生成证书)

需要的docker-compose.yml和harbor.yml这个可以直接用我得,我回放在后面

	1. 去官网下载离线包,或者用wegt 对应得包
		登入官方地址下载对应版本: https://github.com/goharbor/harbor/releases 
		wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.1.tgz
	2. 解压并切换到home/harbor目录
		tar xvf harbor-offline-installer-v2.1.1.tgz  -C /home/ && cd /home/harbor/
	3. 生成证书颁发机构证书
		mkdir certs
		1、生成 CA 证书私钥 (IP表示你的主机)
		    openssl genrsa -out ca.key 4096
		2、生成 CA 证书。调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性。
			openssl req -x509 -new -nodes -sha512 -days 3650  -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=IP" -key ca.key  -out ca.crt
		生成服务器证书 证书通常包含一个.crt文件和一个.key文件
		1、生成私钥。
			openssl genrsa -out IP.key 4096
		2、生成证书签名请求 (CSR)。调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性并在密钥和 CSR 文件名中使用它。
		openssl req -sha512 -new  -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=IP" -key IP.key -out IP.csr
		3、生成 x509 v3 扩展文件。无论您是使用 FQDN 还是 IP 地址连接到您的 Harbor 主机,您都必须创建此文件,以便为您的 Harbor 主机生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求。替换DNS条目以反映您的域。 
		cat > v3.ext <<-EOF
			authorityKeyIdentifier=keyid,issuer
			basicConstraints=CA:FALSE
			keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
			extendedKeyUsage = serverAuth
			subjectAltName = @alt_names
	
			[alt_names]
			DNS.1=IP
			DNS.2=IP
			DNS.3=主机名
		EOF
		4、使用该v3.ext文件为您的 Harbor 主机生成证书。 将yourdomain.comCRS 和 CRT 文件名中的 替换为 Harbor 主机名。
		openssl x509 -req -sha512 -days 3650   -extfile v3.ext  -CA ca.crt -CAkey ca.key -CAcreateserial -in IP.csr   -out IP.crt
		向 Harbor 和 Docker 提供证书 生成后ca.crt,yourdomain.com.crt和yourdomain.com.key文件,必须将它们提供给港口和码头工人,和重新配置港使用它们。
		2、转换yourdomain.com.crt为yourdomain.com.cert,供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书。
		openssl x509 -inform PEM -in IP.crt -out IP.cert
		3、将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。您必须首先创建适当的文件夹。如果您将默认nginx端口 443映射到其他端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port。
			mkdir -p /etc/docker/certs.d/IP:harbor端口
			cp IP.cert /etc/docker/certs.d/IP:harbor端口/
			cp IP.key /etc/docker/certs.d/IP:harbor端口/
			cp ca.crt /etc/docker/certs.d/IP:harbor端口/
			./install.sh
		4、重启 Docker 引擎。
			修改 /etc/docker/daemon.json 增加 "insecure-registries": ["https://harbor端口"],  解决 because it doesn't contain any IP SANs
			修改 /etc/hosts  添加 主机ip harbor域名  解决 connect: connection refuesd
			systemctl restart docker
		docker 得证书结构
			/etc/docker/certs.d/
			    └── harborxiaohu.com:port
			       ├── IP.cert  <-- Server certificate signed by CA
			       ├── IP.key   <-- Server key signed by CA
			       └── ca.crt  
	5. 添加docker-compose 和修改harbor.yml
		https默认端口是443 可以手动修改,如果修改端口则需要修改docker-compose得nginx得端口
		hostname 域名 建议使用当前主机得IP作为域名,如果想自定义得域名到流水线会出问题,
		harbor_admin_password harbor密码,
		自定义生成得证书
		certificate: /home/harbor/certs/ip.crt
  		private_key: /home/harbor/certs/ip.key
  	6. 安装harbor
  		 ./prepare  这个是当你已经安装harbor之后,更新配置文件的指令
  		 ./install.sh 这个是第一次或者你已经删除harbor相关的文件之后执行
  		 docker-compose down -v 停止并删除容器(推荐)
  		 docker-compose up -d 启动harbor

  1. 生成证书你还可以借鉴官网提供的生成方式,我也是通过这个生成
  2. docker-compose的指令可以去菜鸟上看

五、安装drone(很简单,可以根据官网安装)

drone官网gitlab的安装

	1. 注意目前建议不要安装drone-server的2的版本,因为会一下问题
		1. 流水线不会去gitlabc,clone的代码
		2. 如果用了1以上2以下的版本会出现 Error response from daemon: client version 1.40 is too new. Maximum supported API version is 1.39
		解决方案 官网有提供解决
		https://discourse.drone.io/t/error-response-from-daemon-client-version-is-too-new/7882
	2.安装指令
		openssl rand -hex 16 生成共享密钥
		docker run --volume=/var/lib/drone:/data --volume=/var/run/docker.sock:/var/run/docker.sock  --env=DRONE_AGENTS_ENABLED=true --env=DRONE_GITLAB_SERVER=http://gitlab ip:端口 --env=DRONE_GITLAB_CLIENT_ID=gitlab应用的id --env=DRONE_GITLAB_CLIENT_SECRET=gitlab应用的密钥  --env=DRONE_SERVER_HOST=drone ip:端口  --env=DRONE_SERVER_PROTO=http --env=DRONE_TLS_AUTOCERT=false --env=DRONE_LOGS_DEBUG=true -e DRONE_RPC_SECRET=共享密钥 -e TZ="Asia/Shanghai"   --publish=6533:80 --publish=2443:443  -e DRONE_USER_CREATE=username:root,admin:true   --restart=always   --detach=true   --name=drone   drone/drone:1.6.5

		docker run -d -v /var/run/docker.sock:/var/run/docker.sock -e DRONE_RPC_PROTO=http -e DRONE_RPC_HOST=drone ip:端口  -e DRONE_RPC_SECRET=共享密钥  -e DRONE_RUNNER_CAPACITY=2 -e DRONE_RUNNER_NAME=my-first-runner -e TZ="Asia/Shanghai" -p 3000:3000 --restart always --env=DOCKER_API_VERSION=1.38 --name runner drone/drone-runner-docker:1

遇到问题,可以找我,互相学习

总结

写这个的原因是因为,花了很长时间搞这个,然后才搭建这个自动化部署

安装需要的资料

  1. harbor配置文件 :链接:https://pan.baidu.com/s/1QgciN3XS4uF-ROe9YO-jbA?pwd=qkfi
    提取码:qkfi
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值