作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
目录
- 一.gitlab概述
- 1.gitlab介绍
- 2.gitlab架构
- 3.gitlab推荐配置
- 二.部署gitlab前准备
- 1.ubuntu系统环境安装前准备
- 1.1 配置Ubuntu主机名
- 1.2 配置Ubuntu远程链接
- 1.3 配置ubuntu仓库
- 1.4 修改终端颜色
- 1.5 重启虚拟机
- 2.RHEL系统环境安装前准备
- 2.1 修改centos主机名
- 2.2 关闭centos防火墙并禁用selinux
- 2.3 配置epel源
- 2.4 修改终端颜色
- 2.5 重启虚拟机
- 1.ubuntu系统环境安装前准备
- 三.部署gitlab
- 1.选择gitlab的安装方式
- 2. 下载gitlab软件包
- 2.1 从gitlab官方下载软件包
- 2.2 从国内镜像仓库下载软件包
- 3 安装gitlab软件包
- 3.1 ubuntu安装gitlab
- 3.2 centos安装gitlab
- 4.初始化gitlab
- 4.1 gitlab相关目录说明
- 4.2 测试邮箱是否正常
- 4.3 gitlab初始化配置
- 5.gitlab服务基础管理
- 6.在K8S集群部署gitlab
- 7.其他部署方式
一.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.htmlhttps://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.htmlmemory:- 根据您的需求配置相应内存即可,比如: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.htmlhttps://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=2771787258@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=2771787258@qq.com
set smtp-auth-password=crpdkjfvmoymdggd(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'] = "2771787258@qq.com"
gitlab_rails['smtp_password'] = "crpdkjfvmoymdggd"
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'] = "2771787258@qq.com"# 新增版本中,为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-gitlabnamespace: devops
spec:replicas: 1selector:apps: gitlabtemplate:spec:nodeName: worker233containers:- name: c1# image: gitlab/gitlab-ce:17.5.2-ce.0image: harbor.yinzhengjie.com/yinzhengjie-devops/gitlab-ce:17.5.2-ce.0# 配置宿主机的端口映射ports:# 定义容器的端口- containerPort: 80# 绑定到宿主机的端口hostPort: 8080metadata: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