目录
gitlab介绍
gitlab cicd简介
GitLab一个开源的git仓库管理平台,方便团队协作开发、管理。
在GitLab上可以实现完整的CI(持续集成)、CD(持续发布)流程。
而且还提供了免费使用的Plan,以及免费的可以独立部署的社区版本。
gitlab特点
GitLab主要的特点:
- 完整的代码托管功能: GitLab提供了强大的代码仓库管理功能,支持Git版本控制系统。
- 集成的CI/CD: GitLab内置了强大的持续集成和持续交付(CI/CD)功能。
- 问题跟踪和协作: 团队成员可以报告问题issue、讨论和分配任务。创建问题、添加注释、设置优先级和指派责任人等等都可以。
- 代码审查:支持代码审查功能,帮助团队进行代码质量控制和知识共享、模块讨论等。
- 安全性和漏洞扫描: 提供了代码静态分析、漏洞扫描和容器扫描等功能。
- 集成和插件支持: 支持与其他工具和服务的集成,例如Jira、Slack、Kubernetes等。
git主要目录
/opt/gitlab/ # 主目录
/etc/gitlab/ # 放置配置文件
/var/opt/gitlab/ # 各个组件
/var/log/gitlab/ # 放置日志文件
/var/opt/gitlab/git-data/repositories # 数据库的地址
/var/opt/gitlab/postgresql/data # gitlab组和项目的地址
/etc/gitlab/gitlab.rb # gitlab配置文件
版本区别
gitlab提供gitlab-jh版本和gitlab-ce、gitlab-ee版本,主要差别是:
- gitlab-jh和gitlab-ce的主要区别在于版本来源、功能和服务。
gitlab-ce(Community Edition,社区版)是向全球提供的免费社区版本,它提供了基本的代码托管和版本控制功能,适合个人或小型团队使用。这个版本主要是开源的,全球用户都可以免费使用,没有企业级的服务和支持。
gitlab-jh(极狐版)是国内极狐提供的版本,它基于gitlab-ce和gitlab-ee(企业版)进行开发,面向中国用户进行了一些定制化功能。极狐版提供了基础款和专业版,基础版免费使用,专业版面向企业以订阅的形式收费。这个版本主要是为了满足中国市场的特定需求,提供了更贴近中国用户的中文文档支持和更易于上手的使用体验。
此外,极狐版(gitlab-jh)的代码仓库存放在中国境内,而gitlab-ce则是全球范围内的版本,没有地域限制。
提示:gitlab-jh的版本号/镜像tag,可通过 https://packages.gitlab.cn/ 进行查询。
gitlab部署
gitlab支持多种方式部署,同时不同方式部署需要不同的环境需求。
其主要部署方式有:
- Omnibus 部署(本地部署);
- docker容器部署;
- Kubernetes部署。
Omnibus 部署
Linux 安装包安装是一种快速的安装方式,而且容易升级。安装包中包含了运行极狐GitLab所需要的所有服务和工具,这种方式也被称之为 Omnibus 安装。
部署需求
-
存储
Omnibus GitLab 软件包需要大约 2.5 GB 的存储空间用于安装。通常部署建议采用LVM,便于后期扩容,基于性能考虑,建议至少7200转HDD,或者采用SSD。
-
CPU
CPU 需求取决于用户数量和预期的工作负载,工作负载受多重因素影响,包括但不限于用户活跃程度、使用的自动化程度、镜像大小和变更频率。
以下是针对部分用户数量群体,推荐的最低 CPU 硬件要求:
4 核 是推荐的最小核数,支持多达 500 名用户;
8 核支持多达 1000 名用户。
- 内存
内存需求取决于用户数量和预期的工作负载,工作负载受多重因素影响,包括但不限于用户活跃程度、使用的自动化程度、镜像大小和变更频率。
以下是针对部分用户数量群体,推荐的最低内存硬件要求:
4GB RAM 是必需的最小内存,支持多达 500 名用户;
8GB RAM 支持多达 1000 名用户。
除了上述需求之外,通常建议服务器上至少有 2GB 的 swap 存储空间,即使已有足够可用的 RAM。如果可用内存发生变化,swap 可帮助减小错误发生的概率。
同时建议将内核的 swappiness 设置为低值,例如 10,在充分利用 RAM 的同时,使 swap 在需要时可用。
- 数据库
PostgreSQL 是唯一支持的数据库,整合在 Omnibus GitLab 软件包中,也可以使用外部 PostgreSQL 数据库。
提示:其他更多部署前置需求参考 GitLab 安装系统要求 。
安装依赖
安装相关依赖项,以及关闭防火墙,或者放通相关规则。
bash
[root@gitlab ~]# yum install -y curl policycoreutils-python3 openssh-server perl
[root@gitlab ~]# systemctl enable sshd --now
[root@gitlab ~]# systemctl disable firewalld.service --now
提示:可通过如下方式放通gitlab需要的http访问规则:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewalld
导入软件源
配置gitlab软件源。
[root@gitlab ~]# curl -L get.gitlab.cn | bash
正式安装
导入repo后,可正式安装。
本实验采用指定URL参数进行安装,以便于实现通过域名进行访问。
默认情况下,Linux 软件包安装会自动为初始管理员用户账号 (root) 生成密码,并将其存储到 /etc/gitlab/initial_root_password 至少 24 小时。出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除。
[root@gitlab ~]# sudo EXTERNAL_URL="http://gitlab.linuxsb.com" yum install -y gitlab-jh

准备证书
实际生产环境,建议部署为HTTPS,并通过域名访问的gitlab。
同时若通过 HTTPS 来访问gitlab,可以根据官方文档进行配置,让实例使用 Let's Encrypt 自动请求 SSL 证书。
本试验部采用自动请求SSL证书,采用当前已有的证书,同时规划的域名为: https://gitlab.linuxsb.com 。
相关SSL这个证书可通过腾讯云SSL证书进行免费申请。
提示:SSL证书也可以通过如下方式自签:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=Xianghy/OU=Xianghy/CN=gitlab.linuxsb.com"
[root@gitlab ~]# ll
total 8.0K
-rw-r--r-- 1 root root 3.9K Aug 16 01:24 gitlab.linuxsb.com.crt
-rw-r--r-- 1 root root 1.7K Aug 16 01:24 gitlab.linuxsb.com.key
[root@gitlab ~]# mkdir /etc/gitlab/ssl
[root@gitlab ~]# chmod 755 /etc/gitlab/ssl
[root@gitlab ~]# mv gitlab.linuxsb.com.* /etc/gitlab/ssl/
配置SSL及密码
对gitlab启用ssl,同时不采用随机密码登录,可在首次执行重新配置(即gitlab-ctl reconfigure)之前,配置文件中引入需要设置的密码。
gitlab默认会读取 /etc/gitlab/ssl目录下的指定域名的的证书。
若需要手动指定其他路径证书,可配置 nginx['ssl_certificate'] =
和 nginx['ssl_certificate_key'] =
选项。
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
#......
external_url "https://gitlab.linuxsb.com" #指定HTTPS访问
gitlab_rails['gitlab_ssh_host'] = 'gitlab.linuxsb.com' #使用ssh访问gitlab的域名,ssh://git@gitlab.linuxsb.com:/xxx/project.git
letsencrypt['enable'] = false #关闭letsencrypt
nginx['redirect_http_to_https'] = true #指定HTTP重定向为HTTPS
nginx['client_max_body_size'] = '1024m' #gitlab-ce自带Nginx的最大包大小
gitlab_rails['time_zone'] = 'Asia/Shanghai' #配置时区
gitlab_rails['initial_root_password'] = 'x120952576' #重置为指定密码
#......
[root@gitlab ~]# gitlab-ctl reconfigure #重载配置
提示:更多SSL开启配置参考: 安装配置SSL 。
确认验证
使用浏览器访问: https://gitlab.linuxsb.com ,默认用户名root。


参考: https://segmentfault.com/a/1190000040220475
Docker部署
部署需求
- 安装Docker
必须先部署好Docker,参考: Docker安装部署
配置环境
配置环境变量,及相关需要持久保存的数据路径。
[root@gitlab ~]# mkdir -p /gitlab/{logs,data,config}
[root@gitlab ~]# echo 'export GITLAB_HOME=/gitlab' > /etc/profile.d/gitlab.sh
[root@gitlab ~]# source .bashrc
[root@gitlab ~]# echo $GITLAB_HOME
/gitlab
[root@gitlab ~]# vim /etc/ssh/sshd_config
#......
Port 8022
[root@gitlab ~]# systemctl restart sshd
提示:为支持git clone ssh方式,需要占用宿主机22端口,建议如上修改宿主机的ssh端口。
运行实例
运行容器,同时将需要持久保存的路径进行挂载。
[root@gitlab ~]# docker run --detach \
--hostname gitlab.linuxsb.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart unless-stopped \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 2048m \
gitlab/gitlab-ce:latest
[root@gitlab ~]# docker logs -f gitlab #观察部署过程
提示:如上启动容器会占用宿主机443和80端口,以此可根据实际生产环境,在宿主机部署nginx进行代理,容器映射至宿主机更换为其他端口。
提示:以上使用gitlab-ce社区版,也可以使用官方发布的最新版Docker镜像 registry.gitlab.cn/omnibus/gitlab-jh:latest
,更多 gitlab image tag参考: https://hub.docker.com/r/gitlab/gitlab-ce/tags/ 。
提示:如上设置了hostname,也可同哦过--env GITLAB_OMNIBUS_CONFIG设置其他gitlab.rb的参数,如下在初始化的时候直接设置external_url。
docker run --detach \
--hostname gitlab.linuxsb.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.linuxsb.com/'; letsencrypt['enable'] = false;" \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 2048m \
gitlab/gitlab-ce:latest
部署参考: https://lewang.dev/posts/2018-12-18-gitlab-docker-install/ 。
配置SSL
Docker部署后默认随机密码,并且没有开启TLS HTTPS登录。
gitlab默认会读取 /etc/gitlab/ssl目录下的指定域名的的证书。
若需要手动指定其他路径证书,可配置 nginx['ssl_certificate'] =
和 nginx['ssl_certificate_key'] =
选项。
[root@gitlab ~]# ll
total 8.0K
-rw-r--r-- 1 root root 3.9K Aug 16 07:06 gitlab.linuxsb.com.crt
-rw-r--r-- 1 root root 1.7K Aug 16 07:06 gitlab.linuxsb.com.key
[root@gitlab ~]# mkdir /gitlab/config/ssl
[root@gitlab ~]# cp gitlab.linuxsb.com.* /gitlab/config/ssl/
[root@gitlab ~]# vi /gitlab/config/gitlab.rb
#......
external_url "https://gitlab.linuxsb.com" #指定HTTPS访问
gitlab_rails['gitlab_ssh_host'] = 'gitlab.linuxsb.com' #使用ssh访问gitlab的域名,ssh://git@gitlab.linuxsb.com:/xxx/project.git
letsencrypt['enable'] = false #关闭letsencrypt
nginx['redirect_http_to_https'] = true #指定HTTP重定向为HTTPS
nginx['client_max_body_size'] = '1024m' #gitlab-ce自带Nginx的最大包大小
gitlab_rails['time_zone'] = 'Asia/Shanghai' #配置时区
gitlab_rails['initial_root_password'] = 'x120952576' #重置为指定密码
[root@gitlab ~]# docker exec -it gitlab /bin/bash #进入容器
root@gitlab:/# gitlab-ctl reconfigure #重载配置
确认验证
获取Docker部署的gitlab root用户随机密码。
成功登录后可对当前随机密码进行修改。
[root@gitlab ~]# docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password #查看随机密码
Password: iX/18cQEyW60ZZASixjTjR7XCp85v0rzYed0qCLlTS8=
使用浏览器访问: https://gitlab.linuxsb.com ,默认用户名root。


修改密码。

使用修改后的密码进行登录。


Docker Compose部署
部署需求
- 安装Docker
必须先部署好Docker,参考: Docker安装部署
- 安装Docker Compose
必须先部署好Docker Compose,参考: Docker Compose部署及基础使用
配置环境
配置环境变量,及相关需要持久保存的数据路径。
[root@gitlab ~]# mkdir -p /gitlab/{log,data,config}
[root@gitlab ~]# echo 'export GITLAB_HOME=/gitlab' > /etc/profile.d/gitlab.sh
[root@gitlab ~]# source .bashrc
[root@gitlab ~]# echo $GITLAB_HOME
/gitlab
配置SSL
Docker Compose部署后默认随机密码,并且没有开启TLS HTTPS登录。
建议部署的时候直接设置自定义密码,同时配置SSL证书。
gitlab默认会读取 /etc/gitlab/ssl目录下的指定域名的的证书。
若需要手动指定其他路径证书,可配置 nginx['ssl_certificate'] =
和 nginx['ssl_certificate_key'] =
选项。
[root@gitlab ~]# ll
total 8.0K
-rw-r--r-- 1 root root 3.9K Aug 16 07:06 gitlab.linuxsb.com.crt
-rw-r--r-- 1 root root 1.7K Aug 16 07:06 gitlab.linuxsb.com.key
[root@gitlab ~]# mkdir /gitlab/config/ssl
[root@gitlab ~]# cp gitlab.linuxsb.com.* /gitlab/config/ssl/
运行实例
运行容器,同时将需要持久保存的路径进行挂载。
[root@gitlab ~]# mkdir -p /gitlab/deploy
[root@gitlab ~]# cd /gitlab/deploy
[root@gitlab deploy] vi docker-compose.yml
version: '3.8'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: unless-stopped
hostname: 'gitlab.linuxsb.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "https://gitlab.linuxsb.com" #指定HTTPS访问
letsencrypt['enable'] = false #关闭letsencrypt
nginx['redirect_http_to_https'] = true #指定HTTP重定向为HTTPS
nginx['client_max_body_size'] = '1024m' #gitlab-ce自带Nginx的最大包大小
gitlab_rails['time_zone'] = 'Asia/Shanghai' #配置时区
gitlab_rails['gitlab_ssh_host'] = 'gitlab.linuxsb.com' #使用ssh访问gitlab的域名,ssh://git@gitlab.linuxsb.com:/xxx/project.git
gitlab_rails['initial_root_password'] = 'x120952576' #指定自定义密码
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '2048m'
[root@gitlab deploy] docker compose up -d
[root@gitlab deploy]# docker compose logs -f web #观察部署过程
提示:更多 gitlab image tag参考: https://hub.docker.com/r/gitlab/gitlab-ce/tags/ 。
提示:如上启动容器会占用宿主机443和80以及22端口,以此可根据实际生产环境,在宿主机部署nginx进行代理,容器映射至宿主机更换为其他端口,同时针对22被容器占用,建议宿主机更改sshd端口。
确认验证
使用浏览器访问: https://gitlab.linuxsb.com ,默认用户名root。


提示:Docker、Docker Compose部署参考: Docker部署gitlab 。
Kubernetes部署
部署需求
-
Kubernetes集群
在Kubernetes中部署gitlab,可使用helm chart进行部署,必须先有一个完备的Kubernetes集群,同时安装了helm工具。
Kubernetes部署及helm工具安装参考: 附038.Kubernetes_v1.32.2高可用部署架构二 。
-
先决条件
其他更多的helm部署gitlab的先决条件参考: GitLab chart 的先决条件 。
添加repo
添加gitlab的repo仓库。
[root@master01 ~]# helm repo add gitlab https://charts.gitlab.io/
[root@master01 ~]# helm repo update
[root@master01 ~]# helm search repo gitlab #查看gitlab chart包
[root@master01 ~]# helm show chart gitlab/gitlab #查看对应gitlab chart的详情

提示:对于国内gitlab-jh版,可添加 helm repo add gitlab-jh https://charts.gitlab.cn
源。
配置SSL环境
配置环境变量,及namespace,同时创建需要持久保存的数据路径。
在Kubernetes中,使用helm部署gitlab,chart 会默认安装并配置 cert-manager 获得免费 TLS 证书。
基于实验需要,关闭 cert-manager ,但又需要开启 https ,因此采用自签名证书的方式实现。仅供实验环境,不建议用于生产环境。
不采用https的部署方式,参数略有不同,可直接参考: Helm方式部署Gitlab、Gitlab-Runner、Harbor 。
- 自签名证书
配置后续部署所需的域名,gitlab.linuxsb.com,minio.linuxsb.com,registry.linuxsb.com,kas.linuxsb.com 。
提示:如下脚本也可直接生产泛域名自签名证书。
[root@master01 ~]# mkdir -p /gitlab/{log,data,config,deploy}
[root@master01 ~]# cd /gitlab/config/
[root@master01 config]# wget http://down.linuxsb.com/myshell/signcert.sh
[root@master01 config]# vim signcert.sh
#!/bin/sh
#***************************************************************#
# ScriptName: signcert.sh
# Author: xhy
# Create Date: 2025-02-25 21:49
# Modify Author: xhy
# Modify Date: 2025-02-25 21:49
# Version: v1
#***************************************************************#
# 配置参数
#PARENT_DOMAIN="linuxsb.com" # 父级域名
#SUB_DOMAINS=("gitlab" "minio" "rminio" "kas") # 子域名列表,可选配置
PARENT_DOMAIN="linuxsb.com"
SUB_DOMAINS=()
CERT_DIR="./certs" # 证书存储目录
CA_NAME="myCA" # CA证书名称
# 创建证书目录
mkdir -p "${CERT_DIR}"
cd "${CERT_DIR}" || exit
# 生成CA证书(使用父级域名)
openssl genrsa -out "${CA_NAME}.key" 2048
openssl req -x509 -new -nodes -key "${CA_NAME}.key" \
-subj "/CN=${PARENT_DOMAIN}" -days 3650 -out "${CA_NAME}.crt"
# 生成服务器密钥和CSR(使用父级域名作为前缀)
openssl genrsa -out "${PARENT_DOMAIN}.key" 2048
openssl req -new -key "${PARENT_DOMAIN}.key" \
-subj "/CN=${PARENT_DOMAIN}" -out "${PARENT_DOMAIN}.csr"
# 生成扩展配置文件
cat > extfile.cnf << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = ${PARENT_DOMAIN} # 主域名
DNS.2 = *.${PARENT_DOMAIN} # 泛域名
EOF
# 添加具体子域名
index=3
for sub in "${SUB_DOMAINS[@]}"; do
echo "DNS.${index} = ${sub}.${PARENT_DOMAIN}" >> extfile.cnf
((index++))
done
# 用CA签发服务器证书
openssl x509 -req -in "${PARENT_DOMAIN}.csr" \
-CA "${CA_NAME}.crt" -CAkey "${CA_NAME}.key" -CAcreateserial \
-out "${PARENT_DOMAIN}.crt" -days 3650 -extfile extfile.cnf
# 清理临时文件
rm -f extfile.cnf "${PARENT_DOMAIN}.csr"
echo "证书生成完成,文件保存在 ${CERT_DIR} 目录:"
ls -l
[root@master01 config]# bash signcert.sh
Certificate request self-signature ok
subject=CN=linuxsb.com
证书生成完成,文件保存在 ./certs 目录:
total 20
-rw-r--r-- 1 root root 1184 Feb 25 22:03 linuxsb.com.crt
-rw------- 1 root root 1704 Feb 25 22:03 linuxsb.com.key
-rw-r--r-- 1 root root 1119 Feb 25 22:03 myCA.crt
-rw------- 1 root root 1704 Feb 25 22:03 myCA.key
-rw-r--r-- 1 root root 41 Feb 25 22:03 myCA.srl
[root@master01 config]# openssl x509 -noout -text -in certs/linuxsb.com.crt | grep -A2 "X509v3 Subject Alternative Name"
X509v3 Subject Alternative Name:
DNS:linuxsb.com, DNS:*.linuxsb.com
X509v3 Subject Key Identifier:
-
创建证书secret
[root@master01 config]# kubectl create namespace gitlab
[root@master01 config]# kubectl create secret -n gitlab tls gitlab-tls --cert=/gitlab/config/certs/linuxsb.com.crt --key=/gitlab/config/certs/linuxsb.com.key #创建泛域名证书secret[root@master01 config]# kubectl create secret -n gitlab generic gitlab-custom-ca --from-file=myCA.crt=/gitlab/config/certs/myCA.crt #创建自签名CA证书secret
[root@master01 config]# kubectl -n gitlab get secret gitlab-custom-ca -o jsonpath='{.data}' | jq
配置密码
为后期维护和管理,可以将gitlab、pgsql、redis用户名及密码均提前创建,部署的时候直接引用。
[root@master01 ~]# kubectl create secret -n gitlab generic release-gitlab-initial-root-password --from-literal=password=x120952576 # 创建初始密码
[root@master01 ~]# kubectl create secret -n gitlab generic gitlab-postgres --from-literal=psql-password=x120952576 # pgsql 密码
[root@master01 ~]# kubectl create secret -n gitlab generic gitlab-redis --from-literal=redis-password=x120952576 # redis
配置gitlab
使用helm默认配置部署的gitlab,仅可用于Poc测试,对于生产环境需要做一定的调整。
可通过引入yaml配置文件,或命令行--set进行配置。
对于配置项较多,建议使用yaml文件进行配置。
配置项释义:
- 配置主域名:linuxsb.com
- 开启ttps,并设置其他主要组件的host
- 设置相关初始化密码
- psql、redis使用已创建的固定密码
- 设置时区为Asia/Shanghai
- 配置日志截断,以及检查截断的时间间隔和每个单独日志的大小
- 关闭certmanager、nginx-ingress、Prometheus组件的部署
- 设置redis、postgresql、gitlab、minio的持久存储容量,并使用集群已存在的Longhorn存储
提示:各PV卷大小可根据实际情况进行调整。
[root@master01 ~]# cd /gitlab/deploy/
[root@master01 deploy]# helm show values gitlab/gitlab >> myvaules.yaml #可获取默认的values参数
[root@master01 deploy]# vim myvaules.yaml
global:
edition: ce
hosts:
domain: linuxsb.com
https: true
gitlab:
name: gitlab.linuxsb.com
minio:
name: minio.linuxsb.com
registry:
name: registry.linuxsb.com
kas:
name: kas.linuxsb.com
ingress:
apiVersion: "networking.k8s.io/v1"
configureCertmanager: false
class: nginx
tls:
enabled: true
secretName: gitlab-tls
initialRootPassword:
secret: release-gitlab-initial-root-password
key: password
psql:
password:
useSecret: true
secret: gitlab-postgres
key: psql-password
port: 5432
username: gitlab
database: gitlabhq_production
redis:
auth:
enabled: true
secret: gitlab-redis
key: redis-password
port: 6379
time_zone: Asia/Shanghai
extraEnv:
GITLAB_LOGGER_TRUNCATE_LOGS: true
GITLAB_LOGGER_TRUNCATE_INTERVAL: 500
GITLAB_LOGGER_MAX_FILESIZE: 1000
certificates:
customCAs:
- secret: gitlab-custom-ca
certmanager:
installCRDs: false
rbac:
create: false
nginx-ingress:
enabled: false
prometheus:
install: false
redis:
install: true
master:
persistence:
enabled: true
storageClass: "longhorn"
size: 4Gi
postgresql:
install: true
persistence:
enabled: true
storageClass: "longhorn"
size: 4Gi
auth:
adminPasswordKey: "psql-password"
userPasswordKey: "psql-password"
gitlab-runner:
install: false
gitlab:
gitaly:
persistence:
enabled: true
storageClass: "longhorn"
size: 8Gi
minio:
persistence:
enabled: true
storageClass: "longhorn"
size: 5Gi
accessMode: ReadWriteOnce
提示:完整的gitlab helm charts参数参考: gitlab 配置 。
helm部署
使用helm正式部署gitlab。
[root@master01 deploy]# helm upgrade --install mygitlab gitlab/gitlab --create-namespace --namespace gitlab -f myvaules.yaml

确认验证
验证相关部署结果。
[root@master01 deploy]# helm -n gitlab list
[root@master01 deploy]# kubectl -n gitlab get pods -o wide
[root@master01 deploy]# kubectl -n gitlab get pv
[root@master01 deploy]# kubectl -n gitlab get pvc
[root@master01 deploy]# kubectl -n gitlab get svc -o wide
[root@master01 deploy]# kubectl -n gitlab get ingress -o wide

访问测试
helm部署gitlaba会默认部署ingress。
部署完成后将linuxsb.com.crt证书导入浏览器,然后浏览器访问: https://gitlab.linuxsb.com 。
使用设置的用户名 root 和密码登录。


gitlab卸载
删除用户
在删除软件包(使用 apt 或 yum)之前,删除由 Linux 软件包创建的所有用户和群组:
[root@master01 deploy]# sudo gitlab-ctl stop && sudo gitlab-ctl remove-accounts
停止服务
停止gitlab服务,及根据实际情况选择是否删除数据。
[root@master01 deploy]# sudo gitlab-ctl uninstall
[root@master01 deploy]# sudo gitlab-ctl cleanse && sudo rm -r /opt/gitlab #可选删除数据
卸载服务
卸载gitlab软件包。
[root@master01 deploy]# sudo yum remove gitlab-jh
参考官方文档: 卸载gitlab
helm卸载
对于helm部署场景,可通过如下方式卸载。
[root@master01 deploy]# helm uninstall -n gitlab mygitlab
然后删除对应 pvc 、secret 。
[root@master01 deploy]# kubectl -n gitlab delete secrets gitlab-tls gitlab-postgres gitlab-redis mygitlab-gitaly-secret mygitlab-gitlab-kas-secret mygitlab-gitlab-runner-secret mygitlab-gitlab-shell-host-keys mygitlab-gitlab-shell-secret mygitlab-gitlab-suggested-reviewers mygitlab-gitlab-workhorse-secret mygitlab-kas-private-api mygitlab-kas-websocket-token mygitlab-minio-secret mygitlab-rails-secret mygitlab-registry-httpsecret mygitlab-registry-notification mygitlab-registry-secret mygitlab-zoekt-basicauth release-gitlab-initial-root-password
[root@master01 deploy]# kubectl -n gitlab delete pvc data-mygitlab-postgresql-0 redis-data-mygitlab-redis-master-0 repo-data-mygitlab-gitaly-0