GitLab Duo 自托管:完整的 AWS/Google Cloud 部署指南,集成 Ollama
- Tier: Ultimate
- Add-on: GitLab Duo Pro 或 Enterprise
- Offering: GitLab Self-Managed
本文档描述了 GitLab 和 GitLab Duo 的安装与集成,使用在 Ollama 上运行 Mistral 模型的自托管大型语言模型(LLM)。本指南描述了使用 3 个不同虚拟机的设置,可以在 AWS 或 GCP 上轻松跟随操作。当然,该过程也适用于其他部署平台。
本指南是一套全面的端到端说明,用于实现所需的设置。它引用了许多 GitLab 文档区域,这些文档用于支持最终配置的创建。当需要更多背景信息来调整实施以适应特定场景时,引用的文档很重要。
- GitLab Duo 自托管:完整的 AWS/Google Cloud 部署指南,集成 Ollama
- 介绍
先决条件
虚拟机
资源与操作系统
我们将在各自独立的虚拟机中安装 GitLab、GitLab AI Gateway 和 Ollama。虽然本指南中使用的是 Ubuntu 24.0x,但您可以选择任何满足您组织要求和偏好的基于 Unix 的操作系统。然而,使用基于 Unix 的操作系统对此设置是强制性的。这确保了系统稳定性、安全性与所需软件栈的兼容性。此设置在测试和评估阶段提供了成本与性能的良好平衡,但根据您的使用需求团队规模,在生产环境中可能需要升级 GPU 实例类型。
| GCP | AWS | OS | Disk | |
|---|---|---|---|---|
| GitLab | c2-standard-4 | c6xlarge | Ubuntu 24 | 50 GB |
| AI Gateway | e2-medium | t2.medium | Ubuntu 24 | 20 GB |
| Ollama | n1-standard-4 | g4dn.xlarge | Ubuntu 24 | 50 GB |
有关组件及其用途的更多信息,请参阅 AI Gateway。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart LR
accTitle: GitLab Duo 自托管架构
accDescr: 显示从 GitLab Ultimate 到 AI Gateway 的流程,AI Gateway 连接到运行 Mistral 的 Ollama。
A[GitLab<br/>Ultimate] --> C
C[GitLab<br/>AI Gateway] --> B[Ollama<br/>Mistral]
这些组件协同工作以实现自托管 AI 功能。本指南提供了使用 Ollama 作为 LLM 服务器构建完整自托管 AI 环境的详细说明。
对于完整的生产环境,官方文档 建议使用更强大的 GPU 实例,例如 1x NVIDIA A100 (40 GB),但对于小团队用户的评估目的,g4dn.xlarge 实例类型应该足够。
网络配置
为了能够访问 GitLab,需要一个静态公共 IP 地址(如 AWS 中的 Elastic IP 或 Google Cloud 中的 External IP)。所有其他组件都应该并使用静态内部 IP 地址进行内部通信。我们假设所有虚拟机都在同一网络上,可以直接通信。
| Public IP | Private IP | |
|---|---|---|
| GitLab | yes | yes |
| AI Gateway | no | yes |
| Ollama | no | yes |
为什么使用内部 IP?
- 内部 IP 在 AWS/Google Cloud 中实例的整个生命周期内保持静态
- 只有 GitLab 服务器需要外部访问,而其他组件(如 Ollama)依赖内部通信
- 这种方法通过避免公共 IP 地址的费用并保持 LLM 服务器无法从互联网访问来降低成本并提高安全性
GitLab
本指南的其余部分假设您已经有一个正在运行的 GitLab 实例,满足以下要求:
许可证
运行 GitLab Duo Self-Hosted 需要 GitLab Ultimate 许可证和 GitLab Duo Enterprise 许可证。GitLab Ultimate 许可证可与在线或离线许可证选项配合使用。本文档假设两个许可证都已预先获得并可用于实施。
SSL/TLS
必须为 GitLab 实例配置有效的 SSL 证书(如 Let’s Encrypt)。这不仅是一个安全最佳实践,也是一个技术要求,因为:
- AI Gateway 系统(截至 2025 年 1 月)在与 GitLab 通信时严格要求正确的 SSL 验证
- AI Gateway 不接受自签名证书
- 也不支持非 SSL 连接(HTTP)
GitLab 提供了便捷的自动化 SSL 设置流程:
- 在 GitLab 安装期间,只需指定带有 “https://” 前缀的 URL
- GitLab 将自动:
- 获取 Let’s Encrypt SSL 证书
- 安装证书
- 配置 HTTPS
- 无需手动 SSL 证书管理
在 GitLab 安装期间,过程如下所示:
- 为 GitLab 实例分配并关联公共和静态 IP 地址
- 配置您的 DNS 记录以指向该地址
- 在 GitLab 安装期间,使用您的 HTTPS URL(例如
https://gitlab.yourdomain.com) - 让 GitLab 自动处理 SSL 证书设置
有关详细信息,请参阅 文档 页面。
介绍
在设置 GitLab Duo Self-Hosted 之前,了解 AI 的工作原理很重要。AI 模型是用数据训练的 AI 的"大脑"。这个大脑需要一个框架来运行,这被称为 LLM Serving Platform 或简称"Serving Platform"。在 AWS 中,这是"Amazon Bedrock",在 Azure 中,是"Azure OpenAI Service",对于 ChatGPT,是他们的平台。对于 Anthropic,是"Claude"。对于自托管模型,Ollama 是常见的选择。
例如:
- 在 AWS 中,服务平台是 Amazon Bedrock。
- 在 Azure 中,是 Azure OpenAI Service。
- 对于 ChatGPT,是 OpenAI 的专有平台
- 对于 Anthropic,服务平台是 Claude。
当您自己托管 AI 模型时,您还需要选择一个服务平台。自托管模型的一个流行选择是 Ollama。
在这个类比中,ChatGPT 的"大脑"部分是 GPT-4 模型,而在 Anthropic 生态系统中,是 Claude 3.7 Sonnet 模型。服务平台作为连接大脑与世界的关键框架,使其能够"思考"并有效交互。
有关支持的服务平台和模型的更多信息,请参阅 LLM Serving Platforms 和 Models。
什么是 Ollama?
Ollama 是一个精简的开源框架,用于在本地环境中运行大型语言模型(LLMs)。它简化了传统上复杂的 AI 模型部署过程,使个人和组织能够获得高效、灵活且可扩展的 AI 解决方案。
主要亮点:
- 简化的部署:用户友好的命令行界面确保快速设置和轻松安装。
- 广泛的模型支持:兼容流行的开源模型,如 Llama 2、Mistral 和 Code Llama。
- 优化的性能:在 GPU 和 CPU 环境中无缝运行,实现资源效率。
- 集成就绪:具有 OpenAI 兼容的 API,便于与现有工具和工作流集成。
- 无需容器:直接在主机系统上运行,无需 Docker 或容器化环境。
- 多样化的托管选项:可在本地机器、本地服务器或云 GPU 实例上部署。
Ollama 专为简单性和性能而设计,使用户能够利用 LLM 的强大功能,而无需传统 AI 基础设施的复杂性。关于设置和支持的模型的更多细节将在文档后面介绍。
安装
AI Gateway
虽然官方安装指南可在 Install the GitLab AI gateway 中找到,但这里有一个设置 AI Gateway 的简化方法。截至 2025 年 1 月,镜像 gitlab/model-gateway:self-hosted-v17.6.0-ee 已被验证可与 GitLab 17.7 一起使用。
-
确保…
- 允许 TCP 端口 5052 到 API Gateway VM(检查安全组配置)
- 在以下代码片段中,将
GITLAB_DOMAIN替换为您 GitLab 实例的域名:
-
运行以下命令启动 GitLab AI Gateway:
GITLAB_DOMAIN="gitlab.yourdomain.com" docker run -p 5052:5052 \ -e AIGW_GITLAB_URL=$GITLAB_DOMAIN \ -e AIGW_GITLAB_API_URL=https://${GITLAB_DOMAIN}/api/v4/ \ -e AIGW_AUTH__BYPASS_EXTERNAL=true \ gitlab/model-gateway:self-hosted-v17.6.0-ee
下表解释了关键环境变量及其在设置实例中的作用:
| 变量 | 描述 |
|---|---|
AIGW_GITLAB_URL |
您的 GitLab 实例域名。 |
AIGW_GITLAB_API_URL |
您的 GitLab 实例的 API 端点。 |
AIGW_AUTH__BYPASS_EXTERNAL |
处理身份验证的配置。 |
在初始设置和测试阶段,您可以设置 AIGW_AUTH__BYPASS_EXTERNAL=true 来绕过身份验证并避免问题。但是,此配置绝不应在生产环境中或在暴露于互联网的服务器上使用。
Ollama
安装
-
使用官方安装脚本安装 Ollama:
curl --fail --silent --show-error --location "https://ollama.com/install.sh" | sh -
配置 Ollama 通过内部 IP 监听,通过向其启动配置添加
OLLAMA_HOST环境变量systemctl edit ollama.service[Service] Environment="OLLAMA_HOST=172.31.11.27"将 IP 地址替换为您服务器的实际内部 IP 地址。
-
重新加载并重启服务:
systemctl daemon-reload systemctl restart ollama
模型部署
-
设置环境变量:
export OLLAMA_HOST=172.31.11.27 -
安装 Mistral Instruct 模型:
ollama pull mistral:instructmistral:instruct模型需要大约 4.1 GB 的存储空间,根据您的连接速度,下载需要一些时间。 -
验证模型安装:
ollama list
集成
为 Root 用户启用 GitLab Duo
-
访问 GitLab Web 界面
- 以管理员用户身份登录
- 导航到管理区域(扳手图标)
-
配置 Duo 许可证
- 在左侧边栏中转到"订阅"部分
- 您应该看到"已使用席位:1/5",表示可用的 Duo 席位
- 注意:Root 用户只需要一个席位
-
为 Root 分配 Duo 许可证
- 导航到"管理区域" > “GitLab Duo” > “席位使用情况”
- 在用户列表中找到 root 用户(Administrator)
- 在"GitLab Duo Enterprise"列中切换开关以启用 Duo
- 启用时切换按钮应变为蓝色
仅为 root 用户启用 Duo 对于初始设置和测试就足够了。如果需要,可以在您的席位许可证限制内稍后授予其他用户 Duo 访问权限。
在 GitLab 中配置 GitLab Duo Self-Hosted
-
访问 GitLab Duo Self-Hosted 配置
- 导航到管理区域 > GitLab Duo > “配置 GitLab Duo 自托管”
- 点击"添加自托管模型"按钮
-
配置模型设置
-
部署名称:选择描述性名称(例如
AWS 东京的 Mistral-7B-Instruct-v0.3) -
模型系列:从下拉列表中选择"Mistral"
-
端点:以以下格式输入您的 Ollama 服务器 URL:
http://[内部IP]:11434/v1示例:
http://172.31.11.27:11434/v1 -
模型标识符:输入
custom_openai/mistral:instruct -
API 密钥:输入任何占位符文本(例如
test),因为此字段不能留空
-
-
启用 AI 功能
- 转到"AI 原生功能"选项卡
- 将配置的模型分配给以下功能:
- 代码建议 > 代码生成
- 代码建议 > 代码补全
- GitLab Duo Chat > 通用聊天
- 为每个功能从下拉列表中选择您部署的模型
这些设置建立了您的 GitLab 实例与自托管 Ollama 模型通过 AI Gateway 的连接,从而在 GitLab 中启用 AI 原生功能。
验证
- 在 GitLab 中创建一个测试组
- GitLab Duo Chat 图标应出现在右上角
- 这表明 GitLab 和 AI Gateway 之间的集成成功