001.GItLab介绍及云原生部署
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 安装系统要求 。
安装依赖
安装相关依赖项,以及关闭防火墙,或者放通相关规则。
[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
001.GItLab介绍及云原生部署的更多相关文章
- BSS应用程序云原生部署的8大挑战
		云原生部署改变了软件开发.根据云原生计算基金会(CNCF)2021年年度调查,96%的组织正在使用或评估Kubernetes.更确切地说,560万开发者在使用Kubernetes,比去年增加了67%. ... 
- Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关
		在 Apache ShardingSphere 5.1.1 发布后,ShardingSphere 合并了来自全球的团队或个人的累计 1028 个 PR,为大家带来 5.1.2 新版本.该版本在功能.性 ... 
- 云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍
		云原生 • Kubernetes 认识 k8s.k8s 架构.核心概念点介绍 一.Kubernetes 简介Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌.谷歌早在十几年之 ... 
- 云原生生态周报 Vol.9| K8s v1.15 版本发布
		本周作者 | 衷源.心贵 业界要闻 1.Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性.(https://github.com/kubernetes ... 
- 从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
		作者 | 易立 阿里云资深技术专家 导读:从十余年前的各种分布式系统研发到现在的容器云,从支撑原有业务到孵化各个新业务,企业的发展离不开统一的.与时俱进的技术架构.本篇文章从企业分布式应用架构层面介绍 ... 
- [转帖]从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
		从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑? 2019-10-08 10:26:28 阿里云云栖社区 阅读数 54 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ... 
- 云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析
		POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL.PostgreSQL.Oracle.POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB ... 
- AI云原生浅谈:好未来AI中台实践
		AI时代的到来,给企业的底层IT资源的丰富与敏捷提出了更大的挑战,利用阿里云稳定.弹性的GPU云服务器,领先的GPU容器化共享和隔离技术,以及K8S集群管理平台,好未来通过云原生架构实现了对资源的灵活 ... 
- 如何优雅地使用云原生 Prometheus 监控集群
		作者陈凯烨,腾讯云前端开发工程师.负责 TKE 集群,弹性集群和云原生监控等模块控制台开发. 概述 Prometheus 是一套开源的系统监控报警框架.2016 年,Prometheus 正式加入 C ... 
- 前端云原生,以 Kubernetes 为基础设施的高可用  SSR(Vue.js) 渲染微服务初探(开源 Demo)
		背景 笔者在逛掘金的时候,有幸看到掘友狼族小狈开源的 genesis - 一个可以支持 SSR 和 CSR 渲染的微服务解决方案.总体来说思想不错,但是基于 Kubernetes 云原生部署方面一直没 ... 
随机推荐
- 【Amadeus原创】域用户完美执行应用程序
			企业环境中,为了安全起见一般都没有赋予域用户或者企业的PC客户端用户管理员权限. 但偶尔会有个别的程序一定需要管理员身份才能执行,如财务某些程序或专业的应用程序.那么如何不赋予用户管理员权限及密码但又 ... 
- FineReport模板性能问题排查方法
			1. 概述 模板的加载速度受到很多因素影响,如果一个模板预览的时候,加载较慢,该如何去分析问题原因呢? 2. 排查步骤 2.1 查看数据集查询速度 大部分模板加载慢,都是因为 sql 执行速度比较慢. ... 
- containerd 导入镜像
			containerd 导入镜像 containerd而非docker,需要离线导入镜像 解决原理https://segmentfault.com/a/1190000019534913ctr --nam ... 
- kafka各个版本的特性
			1. kafka-0.8.2 新特性 1.1 异步发送 producer不再区分同步(sync)和异步方式(async),所有的请求以异步方式发送,这样提升了客户端效率.producer请求会返回一个 ... 
- Qt编写可视化大屏电子看板系统14-标准曲线图
			一.前言 近期将可视化大屏电子看板系统重新规划和调整项目结构代码,几个重大改变是新增启动窗体选择,可选大屏系统.控件演示.模块演示三种,其中控件演示是专门针对本系统中用到的各种自定义控件单独做的使用d ... 
- IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK改造实践总结
			本文由融云技术团队分享,有修订和改动. 1.引言 Electron 凭借其相对更低的研发成本投入.强大的跨平台支持.拥有基数庞大的 Javascript 开发者受众等优势,在 PC 端跨平台桌面开发领 ... 
- 配置Ubuntu上的NFS
			$sudo apt-get install nfs-kernel-server nfs-common 配置 $sudo vim /etc/exports#添加#/home/pi/project/roo ... 
- 手把手带你使用Karpenter减少K8s集群资源浪费
			Kubernetes 集群的主要成本因素之一是数据平面上的计算层.将 Kubernetes 集群运行在 Amazon EC2 Spot 实例上是一种显著降低计算成本的有效方式.使用 Spot 实例可以 ... 
- 最新AI智能体开发案例:辅助写作神器!教你用Coze平台搭建「文匠智创 1.0」智能体!
			各位小伙伴们,大家好呀!我是疯狂老包.我精心打造的<疯狂AI智能体开发:100个实战案例, 从 入门到精通 >正在开发中!要是你对 AI 应用搭建满怀热忱,渴望深入学习其中的奥秘与技巧,那 ... 
- 探索自联接(SELF JOIN):揭示数据间复杂关系的强大工具
			title: 探索自联接(SELF JOIN):揭示数据间复杂关系的强大工具 date: 2025/1/11 updated: 2025/1/11 author: cmdragon excerpt: ... 
