gitlabcicd-k8s部署gitlab

一.安装准备环境

存储使用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

相关推荐
snow@li19 小时前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
旧梦星轨3 天前
Git Flow 工作流实践
git·gitee·gitlab·github
旧梦星轨3 天前
Github Flow 与 Gitlab Flow工作流实践解读
gitlab·github
极小狐6 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
snow@li6 天前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
极小狐7 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
DevOps老兵8 天前
AI Infra实战11:模型部署Pipeline——CI/CD自动化
人工智能·ci/cd·ai·自动化·gitlab
极小狐8 天前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
极小狐8 天前
用 Flow 编排 Agent 智能体:极狐GitLab Duo 自定义工作流实战
ai·gitlab·agent·devops·flow·duo
陈皮糖..8 天前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab