Configure Authentication for Private Repositories
本指南专门针对 GitLab 仓库。配置步骤针对 GitLab 的认证和 API 要求进行了定制。
本指南说明如何为 PAC 中的私有仓库配置认证。私有仓库需要认证凭据,以允许 PAC 访问和克隆仓库内容。
PAC 对私有仓库使用认证:
- Git Provider API Authentication (
git_provider.secret):用于 API 操作,如创建 webhook、更新 PR 状态和访问仓库元数据。PAC 还会自动从该令牌创建一个 git clone 认证 secret,用于 PipelineRuns。
目录
Prerequisites
在配置私有仓库认证之前,请确保您已具备:
- 已部署并运行 PAC 组件
- 已为您的仓库创建 Repository CR(自定义资源)。Repository CR 是一个 Kubernetes 资源,用于告诉 PAC 监控哪个 Git 仓库以及如何配置它
- 具有创建 Kubernetes Secret 的管理员权限
- 拥有您的 Git 提供商的访问令牌
Repository CR 是一个 Kubernetes 自定义资源,定义了:
- 要监控的 Git 仓库 URL
- Git 提供商配置(GitHub、GitLab 等)
- 认证凭据
- webhook 设置
- Pipeline 执行设置
PAC 监视 Repository CR,当配置的 Git 仓库发生事件时,会自动创建 PipelineRuns。
Overview
PAC 支持使用 Personal Access Tokens (PAT) 和 HTTPS URL 对私有 GitLab 仓库进行认证。
Configuration Steps
按照以下步骤为私有仓库配置认证。
Step 1: Create Access Token in GitLab
- 进入 GitLab → 用户设置 → 访问令牌
- 创建一个具有
api权限范围的令牌 - 生成并复制该令牌
Step 2: Create Kubernetes Secret
创建一个包含您的 GitLab 访问令牌的 secret:
示例输出:
注意:PAC 将使用此令牌进行 Git 提供商的 API 操作(webhook 管理、PR 状态更新等),并自动从中创建 git clone 认证 secret。
创建 Webhook Secret(可选)
如果您计划配置 webhook,请创建一个用于 webhook 验证的 secret:
安全最佳实践:
- 安全存储令牌,并为不同仓库或环境使用独立的 secret
- PAC 会自动创建 git clone 认证 secret,无需手动创建
Step 3: Update Repository CR
更新您的 Repository CR,引用认证 secret:
注意:PAC 使用 git_provider.secret 进行 API 操作,并自动从中创建 git clone 认证 secret,用于 PipelineRuns。
Verifying Private Repository Access
配置认证后,验证 PAC 是否能访问您的私有仓库:
Check Repository CR
示例输出(简略):
Check PAC Controller Logs
查看是否有认证错误或连接 Git 提供商的问题。
Test Pipeline Trigger
触发测试 pipeline 以验证访问:
示例输出:
检查 PipelineRun 是否成功创建:
示例输出:
Troubleshooting
Check for Authentication Errors
问题:PAC 无法访问私有仓库。
解决方案:
-
验证令牌权限:确保 GitLab 访问令牌具有
api权限范围 -
检查 secret 是否存在:确认 GitLab secret 存在于正确的命名空间:
示例输出:
-
验证 secret key:确保 secret 中包含 token 键:
示例输出(简略,token 为 base64 编码):
-
检查 Repository CR:确认 Repository CR 中的 secret 引用正确:
示例输出:
Token Expired
问题:访问令牌已过期。
解决方案:
-
从您的 Git 提供商生成新的访问令牌
-
更新 Kubernetes Secret:
示例输出:
-
如有需要,重启 PAC controller pods:
示例输出:
Best Practices
1. Token Management
- 使用独立令牌:为不同仓库或环境使用不同令牌
- 设置过期时间:为令牌设置过期时间以提升安全性
- 定期轮换:定期更换访问令牌
- 限制权限范围:仅授予最低所需权限
2. Secret Management
- 使用命名空间:在合适的命名空间中存储 secrets
- RBAC 控制:使用 RBAC 控制谁可以访问 secrets
- 外部 secret 管理:考虑使用外部 secret 管理工具(如 Sealed Secrets、Vault)
3. Security
- 最小权限原则:授予最低所需权限
- 审计访问:定期审计谁有仓库访问权限
- 监控日志:监控 PAC controller 日志中的认证问题
Next Steps
- Configure Custom Certificates - 配置自签名证书的自定义 CA 证书
- Advanced Repository Configuration - 了解高级仓库配置选项
- Configure GitLab Repository - GitLab 专用配置指南
- Common Issues - 故障排除指南