DevOps自动化部署学习
持续集成流程图:
1、首先,开发人员每天进行代码提交,提交到Git仓库
2、然后,Jenkins从Gitlab中拉取项目源码,编译并打成jar包,然后构建成Docker镜像,将镜像上传到Harbor私有仓库。
3、Jenkins发送SSH远程命令,让生产部署服务器到Harbor私有仓库拉取镜像到本地,然后创建容器。
4、最后,用户可以访问到容器
服务器准备:准备四台服务器
1、服务器1只装gitlab,专门用于存放代码
2、服务器2主要是使用jenkins进行持续集成,而向gitlab拉取代码,需要装git,向docker推送镜像,需要装docker
3、服务器3主要是用来存镜像,需要安装docker和harbor
4、服务器4主要是部署应用,由于需要向docker仓库服务器拉取镜像,所以需要装docker
服务器配置;
名称 | IP地址 | 安装的软件 |
代码托管服务器(CentOS7-test001) | 192.168.80.133 | gitlab |
持续集成服务器(CentOS7-test002) | 192.168.80.134 | jenkins,jdk,maven,git,docker |
docker仓库部署服务器(CentOS7-test003) | 192.168.80.135 | docker,harbor |
生产部署服务器(CentOS7-test004) | 192.168.80.136 | docker |
- 安装gitlab
- 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
- 设置postfix开机自启,并启动,postfix支持gitlab发信功能:
systemctl enable postfix && systemctl start postfix
- 开放ssh以及http服务,然后重新加载防火墙列表 :
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd –reload
- 下载gitlab包并安装,此处我放在opt目录下
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.1.0-ce.0.el7.x86_64.rpm
5、安装gitlab
rpm -ivh gitlab-ce-14.1.0-ce.0.el7.x86_64.rpm
6、修改gitlab配置,gitlab访问地址和端口
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.80.133:82'
nginx['listen_port'] = 80
7、重载配置及启动gitlab
gitlab-ctl reconfigure #此命令花时几分钟
gitlab-ctl restart
8、把端口添加到防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd –reload
9、安装完gitlab之后浏览器输入http地址访问
- gitlab的基本使用
- 更改密码:gitlab的初始密码存储在 /etc/gitlab/initial_root_password下
- 登录gitlab,创建用户和用户组,将用户添加到用户组,在用户组里创建项目
- 将本地项目代码上传到gitlab项目中
- 安装jenkins
默认安装目录: /usr/lib/jenkins
工作目录: /var/lib/jenkins(对应于环境变量 JENKINS_HOME)
1、jenkins配置
vim /etc/sysconfig/Jenkins
修改内容如下:
JENKINS_USER="root"
JENKINS_PORT="8888"
JENKINS_USER 必须修改,否则权限不足
JENKINS_PORT可以不修改,为了避免与tomcat服务器端口冲突,此处还是要改改
(vim /usr/lib/systemd/system/jenkins.service加载目录也可以修改端口)
2、启动并查看状态
systemctl start jenkins
systemctl status Jenkins
3、重新加载配置文件
systemctl daemon-reload
4、防火墙开放http服务以及8888端口
firewall-cmd --add-service=http --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd –reload
访问jenkins:
二、jenkins的基本使用
1、安装汉化插件:Manage Jenkins->Manage Plugins->在"available"tab列搜索"Chinese"->下载后重启
2、安装[Role-based Authorization Strategy]插件(jenkins权限管理需要使用到的插件
3、创建角色以及用户,将角色绑定到用户上
4、jenkins上安装git插件,在服务器上安装git工具
yum install git -y
git --version #安装完后查看版本
5、安装credentails binding来进行jenkins凭证管理
进行凭证管理:
1)
添加密码用户类型,将github上的用户和密码配置
2)
ssh密钥类型凭证,
使用root用户生成公钥和私钥: ssh-keygen -t rsa
生成密钥公钥保存在/root/.ssh下
把公钥放到gitlab中:
在jenkins中配置私钥:
- maven安装配置
- 服务器安装maven
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解压:tar -zxvf apache-maven-3.6.3-bin.tar.gz
- 配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
查看配置是否生效:
source /etc/profile #使配置生效
mvn -v #查看Maven版本
- 在jenkins全局配置中关联jdk和maven
添加jenkins全局变量:
4.修改maven的settings.xml配置
指定默认java8:
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>