gitlab/model-gateway-self-hostedGitLab AI Gateway 自托管版是 GitLab 官方提供的容器化部署方案,用于在私有基础设施中部署 AI 请求管理网关。该网关作为 GitLab 实例与各类 AI 模型服务(如 OpenAI、Anthropic、Google Vertex AI 等)之间的中间层,提供请求路由、认证授权、流量控制、日志监控等核心能力,支持企业级 GitLab 环境的 AI 功能私有化部署与管控。
从 GitLab Container Registry 拉取官方镜像:
bashdocker pull registry.gitlab.com/gitlab-org/ai-gateway:latest
bashdocker run -d \ --name gitlab-ai-gateway \ -p 8080:8080 \ -e GITLAB_URL="[***]" \ -e GITLAB_API_TOKEN="glpat-xxxxxx" \ -e LOG_LEVEL="info" \ registry.gitlab.com/gitlab-org/ai-gateway:latest
bashdocker run -d \ --name gitlab-ai-gateway \ -p 8080:8080 \ -e GITLAB_URL="[***]" \ -e GITLAB_API_TOKEN="glpat-xxxxxx" \ -v /path/to/local/config.yaml:/etc/ai-gateway/config.yaml \ registry.gitlab.com/gitlab-org/ai-gateway:latest
创建 docker-compose.yml:
yamlversion: '3.8' services: ai-gateway: image: registry.gitlab.com/gitlab-org/ai-gateway:latest container_name: gitlab-ai-gateway restart: unless-stopped ports: - "8080:8080" environment: - GITLAB_URL=[***] - GITLAB_API_TOKEN=glpat-xxxxxx - LOG_LEVEL=info - PORT=8080 - METRICS_ENABLED=true - METRICS_PORT=9090 volumes: - ./config.yaml:/etc/ai-gateway/config.yaml # 挂载自定义配置文件 - ./logs:/var/log/ai-gateway # 挂载日志目录 networks: - gitlab-network networks: gitlab-network: external: true # 假设已存在与 GitLab 实例互通的网络
| 环境变量名 | 必选 | 描述 | 示例值 |
|---|---|---|---|
GITLAB_URL | 是 | GitLab 实例基础 URL(自托管或 SaaS) | [***] |
GITLAB_API_TOKEN | 是 | GitLab 个人访问令牌(需具备 api 和 read_user 权限) | glpat-abc123def456 |
PORT | 否 | 服务监听端口(默认:8080) | 8080 |
LOG_LEVEL | 否 | 日志级别(debug/info/warn/error,默认:info) | info |
LOG_FORMAT | 否 | 日志格式(json/text,默认:text) | json |
METRICS_ENABLED | 否 | 是否启用 metrics 接口(默认:true) | true |
METRICS_PORT | 否 | metrics 接口端口(默认:9090) | 9090 |
CONFIG_FILE_PATH | 否 | 自定义配置文件路径(容器内路径,默认:/etc/ai-gateway/config.yaml) | /etc/ai-gateway/custom.yaml |
通过挂载配置文件可实现复杂路由规则和模型配置,示例:
yaml# 模型服务配置 models: - name: "openai-gpt4" type: "openai" base_url: "[***]" api_key: "sk-xxxxxx" # 或通过环境变量 OPENAI_API_KEY 注入 timeout: 30s rate_limit: requests_per_minute: 1000 # 全局限流 - name: "anthropic-claude" type: "anthropic" base_url: "[***]" api_key: "sk-ant-xxxxxx" timeout: 60s # 路由规则(与 GitLab 项目/用户关联) routes: - match: gitlab_project_id: "123" # 仅允许项目 ID 123 访问 model_name: "openai-gpt4" destination: "openai-gpt4" rate_limit: requests_per_minute: 200 # 项目级限流 - match: gitlab_group_id: "456" # 允许组 ID 456 下所有项目访问 model_name: "anthropic-claude" destination: "anthropic-claude" # GitLab 集成配置 gitlab: timeout: 10s verify_tls: true # 禁用自签名证书时设为 false
在 docker run 或 docker-compose 中通过 -v 挂载本地配置文件:
bash-v /local/path/to/config.yaml:/etc/ai-gateway/config.yaml
启动服务:
bashdocker start gitlab-ai-gateway
验证运行状态:
bashdocker logs -f gitlab-ai-gateway # 查看启动日志,确认无报错 curl http://localhost:8080/health # 健康检查接口,返回 {"status":"ok"}
验证 GitLab 集成:
通过 GitLab 实例的 AI 功能(如代码建议)发起请求,在网关日志中查看请求记录。
升级镜像:
bashdocker pull registry.gitlab.com/gitlab-org/ai-gateway:latest docker stop gitlab-ai-gateway && docker rm gitlab-ai-gateway # 重新执行 docker run 或 docker-compose up -d
数据备份:
定期备份配置文件(config.yaml)和日志目录(/var/log/ai-gateway)。
Q:如何排查请求失败?
A:查看容器日志(docker logs),开启 LOG_LEVEL=debug 获取详细请求信息,检查网络连通性和 API 密钥有效性。
Q:能否对接私有部署的 AI 模型(如本地 Llama)?
A:支持,在 models 配置中设置 type: "generic" 并指定 base_url 为私有模型服务地址。
Q:如何限制单个用户的 AI 请求配额?
A:在 routes 配置中通过 gitlab_user_id 匹配用户,并设置 rate_limit 即可。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务