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 云原生部署方面一直没 ...
随机推荐
- Advanced .NET Remoting: 第 9 章 4.改变编程模型
Advanced .NET Remoting: 第 9 章 4.改变编程模型 前面的所有连接器在 .NET Remoting 应用程序的服务器端和客户端两方面增强功能.可插拔的连接器架构不仅支持创建连 ...
- 【服务器安全问题】双防火墙有什么意义?SSH暴力破解如何防范
发现我的服务器有大量的陌生IP尝试SSH登录,似乎想暴力破解. 我个人习惯是服务器提供商开放了所有端口的,同时也没有开启运维软件提供的防火墙emm 这倒是让我想到了 一般服务器提供商(比如阿里云.华为 ...
- 【C#】【平时作业】习题-5-类的基础知识
一.概念题 1. 举例说明什么是类,什么是对象,并说明类与对象的关系? 类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类. 对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还 ...
- Markdown转Beamer
技术背景 在早期我写过一些文章介绍用RMarkdown写Beamer,还有相应的TinyTex配置.后来Xie Yihui大神发文离开了RMarkdown核心团队,想来中文社区的支持力度和活跃度可能会 ...
- Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放
一.前言说明 地图雷达扫描的需求场景也不少,很多人的做法是直接搞个覆盖层widget,在widget上绘制雷达,优缺点很明显,优点是性能高,毕竟直接在widget上绘制性能明显比js中绘制要高,缺点是 ...
- Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
一.前言 采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另 ...
- Qt音视频开发20-海康sdk本地播放
一.前言 海康sdk中包含了MP4解码播放库,对应的API函数都是PlayM4开头的,顾名思义播放MP4,海康的视频默认可以保存成MP4文件,可以用通用的播放器来播放,这就是为啥前面好多篇文章讲到的各 ...
- 如何使用vs将现有的项目或者文件夹(尤其是多层目录的)添加到项目中
在Visual Studio中将现有的项目或者文件夹(尤其是多层目录的)添加到项目解决方案中,步骤如下: 1.将现有项目或文件夹拷贝到指定目录下: 2.解决方案右上有个显示所有文件的按钮,如下图所示: ...
- [转]VC++中如何快速创建多层文件夹
在创建目录时,原来的可用的方法是 _mkdir()或 BOOL CreateDirectory( LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurit ...
- Python中的zip/unzip:像拉拉链一样组合数据的艺术
今天让我们一起探讨Python中一个优雅而强大的内置功能: zip 和 unzip .听名字就知道,它就像我们衣服上的拉链一样,能把两边的数据完美地咬合在一起. 从一个有趣的例子开始 想象你正在开发一 ...