CentOS和Ubuntu双系统实现GitLab私有仓库环境部署
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.gitlab概述
1.gitlab介绍
gitlab是一个基于Ruby on Rails构建用于仓库管理系统的开源项目,使用git作为代码管理工具,提供了web界面进行访问公开或者私有的项目。
gitlab优势:
- 开源免费
- 开源作为git代码仓库
- 提供了方便易用的web管理界面
- 支持离线提交
- 安全性高,开源对不同的用户设置不同的权限,并且支持不同用户只能访问特定的代码,实现代码部分可见
2.gitlab架构
如上图所示,gitlab是一个复杂的系统,由很多应用组成。
如下图所示,gitlab服务由多个组件构成:
- nginx:
提供静态web服务器。
- gitlab-shell:
用于处理git命令和修改authorized keys列表。
- gitlab-workhorse:
轻量级的反向代理服务器,它旨在充当智能反向代理,以帮助整个gitlab加速。
- postgresql:
数据库。
- redis:
缓存数据库。
- sidekiq:
用户在后台执行队列任务(异步执行)
- unicorn:
gitlab rails应用托管在这个服务器上面的。
参考链接:
https://panlw.github.io/15365441001781.html
https://docs.gitlab.com/ee/development/architecture.html
3.gitlab推荐配置
- gitlab硬件和软件的环境要求:
https://docs.gitlab.com/ee/install/requirements.html
- gitlab服务的安装文档
https://docs.gitlab.com/ee/install/install_methods.html
- 硬件配置要求:
CPU:
- CPU需求取决于用户数量和预期工作负载,比如:
4核心支持500用户
8核心支持1000用户
- 如果有更多的用户需求,可参考官网:
https://docs.gitlab.com/ee/administration/reference_architectures/index.html
memory:
- 根据您的需求配置相应内存即可,比如:
4GB内存支持500用户
8GB内存支持1000用户
- 如果有更多的用户需求,可参考官网:
https://docs.gitlab.com/ee/administration/reference_architectures/index.html
- 建议设置至少2GB的交换内存,尽管您有足够的物理内存空间:
如果可用内存发生变化,交换有助于减少发生错误的机会。并将"swappiness"的值设置为10以充分利用物理内存。
Disk:
根据您的gitlab存储预期配置相应的存储大小即可。支持nfs,lvm等技术栈。
DataBase:
如下图所示,gitlab 12.1版本开始就移除了对MySQL数据库的支持,PostGreSQL是目前唯一支持的数据库哟。
其他更详细文档可参考:
https://docs.gitlab.com/ee/install/requirements.html
温馨提示:
学习环境中,建议搭大家使用2c4G基本上够用了。
二.部署gitlab前准备
1.ubuntu系统环境安装前准备
1.1 配置Ubuntu主机名
# hostnamectl set-hostname ubuntu11.yinzhengjie.com
1.2 配置Ubuntu远程链接
# grep ^PermitRootLogin /etc/ssh/sshd_config
1.3 配置ubuntu仓库
# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu focal main restricted
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu focal universe
deb http://mirrors.aliyun.com/ubuntu focal-updates universe
deb http://mirrors.aliyun.com/ubuntu focal multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu focal-security universe
deb http://mirrors.aliyun.com/ubuntu focal-security multiverse
参考链接:
https://developer.aliyun.com/mirror/ubuntu
1.4 修改终端颜色
cat <<EOF >> ~/.bashrc
PS1='[\[\e[30;1m\]\u@\[\e[0m\]\[\e[31;1m\]\H\[\e[0m\]\[\e[32;1m\] \W\[\e[0m\]]# '
EOF
source ~/.bashrc
1.5 重启虚拟机
# reboot
2.RHEL系统环境安装前准备
2.1 修改centos主机名
# hostnamectl set-hostname centos10.yinzhengjie.com
2.2 关闭centos防火墙并禁用selinux
# systemctl disable firewalld
# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
2.3 配置epel源
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.4 修改终端颜色
cat <<EOF >> ~/.bashrc
PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]# '
EOF
source ~/.bashrc
2.5 重启虚拟机
# reboot
三.部署gitlab
1.选择gitlab的安装方式
如上图所示,gitlab有很多种安装方式,咱们选择包安装方式。
如下图所示,我们需要手动下载对应的软件包。
参考链接:
https://docs.gitlab.com/ee/install/install_methods.html
https://docs.gitlab.com/omnibus/installation/
2. 下载gitlab软件包
2.1 从gitlab官方下载软件包
如上图所示,我们要去访问官方的仓库。
如下图所示,我们选择docker-ce版本进行安装即可。
参考链接:
https://packages.gitlab.com/gitlab/gitlab-ce
2.2 从国内镜像仓库下载软件包
如上图所示,我们也可以在国内网站进行下载哟。
如果从官网下载速度较慢的小伙伴们,可以使用给你的镜像地址即可,也可以使用迅雷下载速度会更快哟!
参考链接:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
3 安装gitlab软件包
3.1 ubuntu安装gitlab
# dpkg -i gitlab-ce_15.6.7-ce.0_amd64.deb
3.2 centos安装gitlab
# yum -y localinstall gitlab-ce-15.6.7-ce.0.el7.x86_64.rpm
4.初始化gitlab
4.1 gitlab相关目录说明
- /etc/gitlab/
配置文件目录。
- /run/gitlab
运行目录,存放很多数据库文件。该目录需要运行gitlab服务后会自动生成。
- /opt/gitlab/
gitlab安装目录。
- /var/opt/gitlab
数目目录,源代码存放在此目录。初次运行gitlab服务会自动生成初始化数据哟。
- /var/log/gitlab/
日志目录。
4.2 测试邮箱是否正常
(1)安装mail服务
# yum -y install mailx
(2)修改配置文件
# vim /etc/mail.rc
...
set from=你的邮箱
set smtp=smtp.qq.com
set smtp-auth-user=你的邮箱
set smtp-auth-password=你的邮箱授权码
(3)测试邮箱是否能够正常发送,测试结构如上图所示。
# echo JasonYin2020 | mail -s hello y1053419035@qq.com
4.3 gitlab初始化配置
(1)修改配置文件
# grep "^[a-Z]" /etc/gitlab/gitlab.rb
...
# 对外暴露服务的uri地址,注意配置hosts文件解析哟~
external_url 'http://gitlab11.yinzhengjie.com'
# 可选邮箱通知配置~
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "你的邮箱"
gitlab_rails['smtp_password'] = "你的邮箱授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "你的邮箱"
# 新增版本中,为gitlab的webUI设置root用户初始登录密码~
gitlab_rails['initial_root_password'] = "yinzhengjie"
(2)将配置文件生效
# gitlab-ctl reconfigure
(3)添加hosts文件解析
cat >> /etc/hosts <<EOF
10.0.0.11 gitlab11.yinzhengjie.com
EOF
(4)查看gitlab的状态,如上图所示
# gitlab-ctl status
(5)访问gitlab的WebUI
如下图所示。
温馨提示:
如果没有在配置文件中对密码做初始化设置,可以从"/etc/gitlab/initial_root_password"文件中找到初始密码。
5.gitlab服务基础管理
- gitlab-ctl status
查看服务状态。
- gitlab-ctl stop
停止gitlab服务。
- gitlab-ctl start
启动服务。
- gitlab-ctl reconfigure
重新配置应用。
- gitlab-ctl -h
查看帮助信息。
6.在K8S集群部署gitlab
1.导入镜像到harbor仓库
[root@master231 ~]# wget http://192.168.13.253/Resources/Kubernetes/images/Project/DevOps/yinzhengjie-gitlab-ce-v17.5.2.tar.gz
[root@master231 ~]# docker load -i yinzhengjie-gitlab-ce-v17.5.2.tar.gz
2.编写资源清单
[root@master231 case-demo]# cat 06-devops-gitlab.yaml
apiVersion: v1
kind: Namespace
metadata:
name: devops
---
apiVersion: v1
kind: ReplicationController
metadata:
name: yinzhengjie-gitlab
namespace: devops
spec:
replicas: 1
selector:
apps: gitlab
template:
spec:
nodeName: worker233
containers:
- name: c1
# image: gitlab/gitlab-ce:17.5.2-ce.0
image: harbor.yinzhengjie.com/yinzhengjie-devops/gitlab-ce:17.5.2-ce.0
# 配置宿主机的端口映射
ports:
# 定义容器的端口
- containerPort: 80
# 绑定到宿主机的端口
hostPort: 8080
metadata:
labels:
apps: gitlab
[root@master231 case-demo]#
3.创建资源
[root@master231 case-demo]# kubectl apply -f 06-devops-gitlab.yaml
namespace/devops created
replicationcontroller/yinzhengjie-gitlab created
[root@master231 case-demo]#
[root@master231 case-demo]#
[root@master231 case-demo]# kubectl get pods -o wide -n devops
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
yinzhengjie-gitlab-sw2n6 1/1 Running 0 6m1s 10.100.2.60 worker233 <none> <none>
[root@master231 case-demo]#
[root@master231 case-demo]# kubectl -n devops exec -it yinzhengjie-gitlab-sw2n6 -- bash
root@yinzhengjie-gitlab-sw2n6:/# netstat -untal | egrep ":80"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
..
root@yinzhengjie-gitlab-sw2n6:/#
4.查看默认的root密码
[root@master231 case-demo]# kubectl -n devops exec yinzhengjie-gitlab-sw2n6 -- cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: Pm9uyDtMdoR1FEw4rGcKsjl55VQQ3iOGxrNFuz/Dj9o=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
[root@master231 case-demo]#
5.windows修改root密码
http://10.0.0.233:8080/
推荐阅读:
https://docs.gitlab.com/ee/install/docker/installation.html#install-gitlab-by-using-docker-compose
默认的密码存放路径:
/etc/gitlab/initial_root_password
7.其他部署方式
如上图所示,官方提供了多种安装方式供咱们选择。
推荐阅读:
https://docs.gitlab.com/ee/install/install_methods.html
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/18571224,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。