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
posted @ 2024-11-26 23:57  尹正杰  阅读(31)  评论(0编辑  收藏  举报