Gitlab 入门和生产部署实践

1. 什么是 GitLab GitLab 是一款开源的 Git 代码托管平台,支持私有化部署,被众多企业用于搭建内部代码仓库。与 GitHub 主打开源协作不同,GitLab 更聚焦于代码托管和研发流程自动化,原生提供 CI/CD、代码评审、权限管控、镜像仓库、日志审计等能力。 GitLab 主要分为两个版本: CE 社区版:免费开源,基本能满足 95% 中小企业的生产需求(本文案例); EE 企业版:付费使用,提供高可用架构、高级安全扫描、集群权限管控以及官方技术支持,比较适合大厂落地。 总之,对企业来说,GitLab 的核心价值主要体现在四个方面:代码内网私有化存储、研发流程标准化、流水线自动化、操作可审计追溯。 2. 三种部署方式(选型) Omnibus 包部署(生产首选):官方推荐的标准生产部署方案,以一键安装包形式提供,支持主流 Linux 发行版。内置 PostgreSQL、Redis、Gitaly、Web、Sidekiq 等核心组件,部署路径清晰、运维成本较低、稳定性较高,是生产环境中最稳妥的选择。 K8s 混合部署(不推荐新人尝试):面向大规模高并发场景时,官方推荐采用混合架构,将 Web、Sidekiq 等无状态组件部署在 Kubernetes 中,便于弹性扩缩;Gitaly、数据库、缓存等有状态服务则保留在虚拟机或独立节点上部署,以保证存储和数据的稳定性。不建议新手直接使用 Kubernetes 全组件部署 GitLab。有状态组件在容器环境中的存储管理、备份恢复和升级复杂度较高,生产风险较大。 Docker 单容器部署(仅测试用):Docker 单容器部署启动快、上手简单,但在数据持久化、备份恢复、版本升级和高可用方面能力有限,仅适合本地测试、功能验证或演示环境,不建议用于生产。 3. 安装 GitLab 官方安装文档 3.1 前置硬件&系统要求 仅支持 linux,最低配置:4核8G(10人以内小团队),生产推荐 8 核 16G 及以上; 关闭 SELinux 或 AppArmor,否则可能影响服务正常运行; 存储优先用 SSD;不建议用 NFS、EFS、Azure Files 这类网络文件系统放仓库数据; 开放端口:80(http)、443(https)、22(ssh)。 3.2 添加 apt 源安装 # 更新系统依赖 sudo apt update && sudo apt upgrade -y # 安装必备依赖 sudo apt install -y curl openssh-server ca-certificates tzdata # 添加 GitLab 官方 APT 源 sudo curl --location "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh" | sudo bash # 安装 GitLab 社区版(默认启动初始化) sudo apt install gitlab-ce -y 3.3 离线包(无网络环境使用) 官方离线包下载地址 ...

ArgoCD 入门和生产实践指南

1. 什么是 ArgoCD ArgoCD 是 CNCF 毕业级项目,面向 Kubernetes 的声明式 GitOps 持续交付工具。 GitOps 核心思想:Git 仓库作为应用配置的唯一可信源。ArgoCD 持续监听 Git 仓库内定义的应用目标状态,对比集群内资源的实际运行状态,自动完成应用部署、版本更新与故障回滚。 ArgoCD 原生支持多种配置编排方式:Helm Chart、Kustomize、Jsonnet、Ksonnet,以及原生 YAML/JSON Kubernetes 资源清单。 2. 架构原理 ArgoCD 以 Kubernetes 控制器形态运行,持续对应用做状态巡检: 拉取 Git 仓库中声明的期望状态(Target State) 采集集群内资源实际运行状态(Live State) 对比两者差异,不一致时标记为 OutOfSync(不同步) 可视化展示资源差异,支持手动同步 / 自动同步,将集群状态收敛到 Git 定义的目标状态 Git 仓库中修改清单后,ArgoCD 会感知变更并同步至目标集群,实现“改 Git 即发布”。 具体工作流程参见下面的图片: 核心组件: 组件 核心作用 argocd-server ArgoCD API 服务,提供 REST API、Web UI,处理认证鉴权 argocd-repo-server Git 仓库管理服务,缓存仓库代码、渲染 Helm/Kustomize 生成K8s清单 argocd-application-controller 应用控制器,持续做状态比对,执行同步、健康检查 argocd-applicationset-controller ApplicationSet控制器,批量、模板化管理多环境/多集群 Application argocd-redis 缓存组件,存储仓库缓存、应用状态信息 argocd-dex-server 可选,Dex 身份代理,对接OIDC、LDAP等外部身份源 argocd-notifications-controller 可选,通知控制器,同步状态变更推送至邮件、Slack、Webhook等 3. 部署 部署前建议查阅官方版本兼容矩阵,选择与K8s集群匹配的ArgoCD版本。 ...