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 安装系统要求

安装依赖

安装相关依赖项,以及关闭防火墙,或者放通相关规则。

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部署

部署需求

添加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

提示:如下脚本也可直接生产泛域名自签名证书。

[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
相关推荐
User_undefined1 天前
批量将gitlab仓库转移到gitea中
gitlab·gitea
秋の水1 天前
使用Docker Desktop部署GitLab
docker·gitlab
深情不及里子4 天前
纯手工搭建整套CI/CD流水线指南
ci/cd·gitlab·jenkins·harbor
AliCloudROS5 天前
阿里云ACK+GitLab企业级部署实战教程
k8s·gitlab·helm·ack·计算巢
{⌐■_■}5 天前
【gitlab】认识 持续集成与部署
ci/cd·log4j·gitlab
JAVA坚守者11 天前
Jenkins+maven+gitlab+shell 实现项目自动化部署
gitlab·jenkins·maven
大熊程序猿11 天前
jenkins 配置ssh拉取gitlab
ssh·gitlab·jenkins
到不了p8不改名12 天前
gitlab无法登录问题
运维·服务器·容器·centos·gitlab·jenkins
java 凯13 天前
Ubuntu 上安装 GitLab
linux·ubuntu·gitlab