架构师的成长之路初片~搭载web端的gitlab
此次使用容器的方式部署:
一、Gitlab
环境准备:
关闭防火墙、SELinux
- [root@git ~]# firewall-cmd --set-default-zone=trusted
- [root@git ~]# setenforce 0
- [root@git ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)修改sshd默认端口。
因为Git是通过SSH协议形式访问,后面需要启动GitLab容器,该容器需要占用22端口,而电脑的sshd服务也需要占用22端口(端口冲突),所以需要提前修改sshd默认端口,将端口修改为2022。
注意:修改后需要重新登录一次虚拟机(重新登录需要指定端口)
[root@git ~]# vim /etc/ssh/sshd_config Port 2022 #17行 [root@git ~]# systemctl restart sshd [root@git ~]# exit 真机# ssh -p 2022 192.168.2.20
3)准备容器环境。
提示:gitlab_zh.tar在第5阶段素材目录中,需要先将该素材拷贝到192.168.2.20主机。
[root@git ~]# dnf -y install podman [root@git ~]# podman load < ./gitlab_zh.tar [root@git ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/gitlab_zh latest 1f71f185271a 2 years ago 1.73 GB
4)创建数据目录
容器无法持久保存数据,需要将真机目录和容器目录绑定,实现数据永久保存。
[root@git ~]# mkdir -p /srv/gitlab/{config,logs,data}
步骤二:启动GitLab容器(192.168.4.20操作)
1)启动容器
[root@git ~]# podman run -d -h gitlab --name gitlab \ -p 443:443 -p 80:80 -p 22:22 \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh
注释:
-d将容器放入后台启动。
-h设置容器的主机名为gitlab。
--name设置容器名称为gitlab。
-p进行端口映射,将git主机的443、80、22端口和git上面运行的容器端口绑定
这样以后任何人访问git主机(192.168.4.20)的22端口也就是在访问容器里面的22端口,任何人访问git主机(192.168.4.20)的80端口也就是访问容器里面的80端口。
-v将git主机上面的目录和容器里面的目录绑定,git主机的/srv/gitlab/config目录对应容器里面的/etc/gitlab/目录,其他目录同理。
最后的gitlab_zh是镜像名称。
2)配置systemd,实现容器开机自启动
生成service文件,-n是容器的名称,给gitlab容器生成service文件
[root@git ~]# podman generate systemd -n gitlab --files
设置开机自启动
[root@git ~]# systemctl enable container-gitlab.service
3)初始化登录密码(真机使用浏览器访问GitLab页面)
# firefox http://192.168.4.20
GitLab默认用户名为root,第一次访问需要设置密码,效果如图-2所示。
设置密码后即可使用新设置的密码登录,效果如图-3所示。
配置GitLab
沿用练习一,配置GitLab,具体要求如下:
- 创建GitLab用户和组
- 创建GitLab项目
- 客户端管理GitLab项目
- 上传代码
2.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建用户和组
1)创建用户,点击GitLab页面的小扳手图标,创建用户,效果如图-4所示。
创建jerry用户,点击《编辑》设置用户的密码,效果如图-5所示。
2)创建组
点击GitLab页面的小扳手图标,创建组,效果如图-6所示。
设置组名称(组名称为devops)以及可见等级(等级为公开),效果如图-7所示。
3)将用户加入到组(将jerry用户加入devops组),效果如图-8所示。
步骤二:创建GitLab项目
1)创建项目,效果如图-9所示。
2)设置项目名称、组、可见等级,效果如图-10所示。
步骤三:管理GitLab项目
1)客户端使用密码管理GitLab项目(在192.168.4.10主机操作)
[root@develop ~]# git config --global user.name "Administrator" [root@develop ~]# git config --global user.email "admin@example.com" [root@develop ~]# git clone http://192.168.4.20/devops/myproject.git [root@develop ~]# cd myproject [root@develop myproject]# touch README.md [root@develop myproject]# git add README.md [root@develop myproject]# git commit -m "add README" [root@develop myproject]# git push -u origin master Username for 'http://192.168.4.20': jerry #这里输入用户名 Password for 'http://jerry@192.168.4.20': #这里输入密码
2)客户端生成SSH密钥(在192.168.4.10主机操作)
[root@develop myproject]# ssh-keygen #生成ssh密钥文件 [root@develop myproject]# cat ~/.ssh/id_rsa.pub #查看密钥文件 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPVwP8E7TtKha9H8Ec+CU2n19aIPo9sUa/pdM7gRaf0yG+Bcdy Q7Hgi6pI51IhX6tat46L5tLkAY7urVeEmnPtUk/TVIUc0smJPXYKIggOCr2dDd9s1S0
3)使用jerry用户登录GitLab页面
jerry用户第一次登录页面需要重置一次密码,密码可以与旧密码相同。效果如图-11所示。
4)上传密钥
将刚刚192.168.4.10上面创建的密钥文件内容上传到GitLab。
点击右上角账户图标,点击《设置》,点击展开按钮,点击《SSH密钥》,然后将develop主机生成的密钥文件内容复制到GitLab上面。效果如图-12、图-13所示。
5)使用密钥管理GitLab项目
首先要查看下基于SSH连接方式的链接,如图-14所示。
[root@develop myproject]# git remote remove origin [root@develop myproject]# git remote add \ origin git@192.168.4.20:devops/myproject.git [root@develop myproject]# echo hello word >> README.md [root@develop myproject]# git add . [root@develop myproject]# git commit -m "modify readme" [root@develop myproject]# git push -u origin master
6) 上传静态页面代码(代码在第二阶段素材lnmp_soft.tar.gz中)
需要提前将真机的网页素材scp拷贝到develop虚拟机用户的家目录。
[root@develop ~]# cd ~ [root@develop ~]# dnf -y install unzip [root@develop ~]# unzip www_template.zip [root@develop ~]# cp -r www_template/* myproject/ [root@develop ~]# cd myproject/ [root@develop myproject]# git add . [root@develop myproject]# git commit -m "web site" [root@develop myproject]# git push -u origin master [root@develop myproject]# git tag v1 [root@develop myproject]# git push -u origin v1
3 案例3:部署Jenkins
3.1 问题
沿用练习二,部署CI/CD环境,部署Jenkins,具体要求如下:
- 准备实验环境
- 部署Jenkins、初始化Jenkins
- 管理Jenkins插件、调整系统配置
3.2 方案
实验环境准备:
1)5台RHEL8虚拟机,主机名分别为develop、git、jenkins、web1和web2。
2)develop主机的IP地址为192.168.4.10,不需要配置网关和DNS。
3)git主机的IP地址为192.168.4.20,不需要配置网关和DNS。
4)jenkins主机的IP地址为192.168.4.30,不需要配置网关和DNS。
5)web1和web2主机的IP地址分别为192.168.4.100和192.168.4.200,不需要配置网关和DNS。
6)所有主机都需要配置可用的系统YUM源,设置防火墙信任所有,SELinux放行所有。
备注:跨网段走路由,相同网段不需要配置网关就可以互联互通!实验拓扑如图-15所示。
步骤一:环境准备
1)设置防火墙和SELinux(仅以一台主机为例,其他所有主机都需要操作)
[root@git ~]# firewall-cmd --set-default-zone=trusted [root@git ~]# setenforce 0 [root@git ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)安装依赖软件(git、postfix、java JDK)。
注意:仅在jenkins主机操作!
[root@jenkins ~]# dnf -y install git [root@jenkins ~]# dnf -y install postfix [root@jenkins ~]# dnf -y install mailx [root@jenkins ~]# dnf -y install java-11-openjdk
备注:Git(版本控制软件)、postfix(邮件服务器软件)、mailx(邮件客户端软件)、openjdk(Java JDK工具)。
步骤二:部署、初始化Jenkins
1)安装、启动Jenkins。
[root@jenkins ~]# dnf -y install ./jenkins-2.164.3-1.1.noarch.rpm [root@jenkins ~]# systemctl enable jenkins --now #设置jenkins服务为开机自启动服务,并立刻启动该服务
2)初始化Jenkins
真机浏览器访问Jenkins页面(firefox http://192.168.4.30:8080。 端口为8080
第一次访问会提示初始密码的位置(密码在/var/lib/Jenkins/secrets/initialAdminPassword文件中),效果如图-16所示。
初始化时选择不安装插件,效果如图-17和图-18所示
使用默认的admin用户登录,完成初始化操作,效果如图-19,图-20,图-21所示。
步骤三:管理Jenkins插件、系统配置
1)重置管理员密码。
重置密码如图-22所示。
使用新密码重新登录,如图-23所示。
2)插件管理。
查看插件列表,效果如图-24、图-25所示。
拷贝插件文件到Jenkins目录,Jenkins插件目录为插件目录:/var/lib/jenkins/plugins/。
Jenkins插件文件在第二阶段素材目录:jenkins_plugins.tar.gz。
插件包含:中文插件、Git插件等。
需要提前将真机素材拷贝到Jenkins虚拟机。
[root@jenkins ~]# tar -xf jenkins_plugins.tar.gz [root@jenkins ~]# cp -rp jenkins_plugins/* /var/lib/jenkins/plugins/ [root@jenkins ~]# systemctl restart jenkins
重新登录Jenkins网页控制台,如图-26所示
再次查看插件列表,效果如图-27、图-28所示。
3)调整系统设置,配置邮箱,效果如图-29、图-30所示。