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
相关推荐
黑心的奥利奥11 小时前
Docker配置Gitlab-runner实现自动化容器化部署前端项目
docker·自动化·gitlab
wuzuyu36514 小时前
在腾讯云上安装gitlab
云计算·gitlab·腾讯云
xiaodaiwang15 小时前
OpenEuler 22.03 系统上安装配置gitlab runner
gitlab
TimberWill1 天前
gitlab私服搭建
gitlab
中东大鹅1 天前
访问 gitlab 跳转 0.0.0.0
gitlab
guygg882 天前
配置本地git到gitlab并推送
git·gitlab
大A崛起2 天前
Gitlab-CI实现组件自动推送
ci/cd·gitlab·github
越来越无动于衷3 天前
GitLab 社区版 10.8.4 安装、汉化与使用教程
gitlab
谭咏麟3 天前
Argo CD持续交付工具部署
kubernetes·argocd·cicd
DevOps0084 天前
将 RustFS 用作 GitLab 对象存储后端
rust·gitlab·minio·分布式存储·s3·rustfs