一.安装准备环境
存储使用nfs挂载持久化
k8s环境
helm安装 建议helm 3+
二.部署gitlab-deploy.yaml
nfs的ip是192.168.110.190 挂载目录是/data/data
注意所需要的目录需要创建:/data/data/gitlab/config ,/data/data/gitlab/logs ,/data/data/gitlab/data
apiVersion: v1
kind: Service
metadata:
name: gitlab
spec:
type: NodePort
ports:
# Port上的映射端口
- port: 443
targetPort: 443
name: gitlab443
- port: 80
targetPort: 80
name: gitlab80
- port: 22
targetPort: 22
name: gitlab22
selector:
app: gitlab
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitlab
spec:
selector:
matchLabels:
app: gitlab
revisionHistoryLimit: 2
template:
metadata:
labels:
app: gitlab
spec:
containers:
# 应用的镜像
- image: gitlab/gitlab-ce
name: gitlab
imagePullPolicy: IfNotPresent
# 应用的内部端口
ports:
- containerPort: 443
name: gitlab443
- containerPort: 80
name: gitlab80
- containerPort: 22
name: gitlab22
volumeMounts:
# gitlab持久化
- name: gitlab-persistent-config
mountPath: /etc/gitlab
- name: gitlab-persistent-logs
mountPath: /var/log/gitlab
- name: gitlab-persistent-data
mountPath: /var/opt/gitlab
imagePullSecrets:
- name: devops-repo
volumes:
# 使用nfs互联网存储
- name: gitlab-persistent-config
nfs:
server: 192.168.110.190 #nfs服务端的ip地址
path: /data/data/gitlab/config
- name: gitlab-persistent-logs
nfs:
server: 192.168.110.190 #nfs服务端的ip地址
path: /data/data/gitlab/logs
- name: gitlab-persistent-data
nfs:
server: 192.168.110.190 #nfs服务端的ip地址
path: /data/data/gitlab/data
三.部署yaml 查看服务
kubectl -f apply gitlab-deploy.yaml -n gitlab
四.gitlab优化
为了优化 GitLab 访问总是报 500 和 502 错误的问题,查看容器日志总是连接redis超时/拒绝,可以考虑将 GitLab 的内置 Redis 替换为外部托管的 Redis 服务。这可以提高 Redis 的性能和可靠性,从而提升 GitLab 的稳定性。
1.编辑配置文件
vim /etc/gitlab/gitlab.rb修改下面配置
编辑配置文件-禁用内部redis
redis['enable'] = false
配置外部redis连接信息
gitlab_rails['redis_host'] = "127.0.0.1"
gitlab_rails['redis_port'] = 6379
gitlab_rails['redis_password'] = "12345678"
gitlab_rails['redis_database'] = 10
2.内存优化
刚开始内存会达到8-10G 经过优化参数之后降低到5G
- 为每个 GitLab 组件设置合适的内存限制,可以避免单个组件消耗过多内存。
- 修改
gitlab.rb
配置文件,调整 Puma、Sidekiq 和其他关键组件的内存使用。 - 将 GitLab 的 PostgreSQL 数据库和 Redis 缓存迁移到外部托管服务,可以减轻 GitLab 主机的内存负担。
- 优化 CI/CD 管道,减少不必要的构建和测试任务。
puma['worker_timeout'] = 30
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
postgresql['shared_buffers'] = "256MB"
sidekiq['max_concurrency'] = 8
postgresql['max_worker_processes'] = 4
puma['per_worker_max_memory_mb'] = 600
prometheus_monitoring['enable'] = false
sidekiq['min_concurrency'] = 8
通过调整 GitLab 组件的内存限制、使用外部数据库和缓存、优化工作负载、调整日志级别以及持续监控和调优,可以有效降低 GitLab 的内存使用。这些优化措施不仅可以减少内存消耗,还能提高系统的稳定性和性能。
刷新加载配置配置
gitlab-ctl reconfigure
gitlab-ctl restart