为私有仓库配置身份验证
本指南专门针对 GitLab 仓库。配置步骤是根据 GitLab 的身份验证和 API 要求定制的。
本指南说明如何在 PAC 中为私有仓库配置身份验证。私有仓库需要身份验证凭据,以允许 PAC 访问并克隆仓库内容。
PAC 会将身份验证用于私有仓库:
- Git Provider API 身份验证 (
git_provider.secret):用于 API 操作,例如创建 webhook、更新 PR 状态以及访问仓库元数据。PAC 还会自动从此令牌创建一个 git clone 身份验证 secret,以便在 PipelineRuns 中使用。
目录
前提条件概述配置步骤第 1 步:在 GitLab 中创建访问令牌第 2 步:创建 Kubernetes Secret创建 Webhook Secret(可选)第 3 步:更新 Repository CR验证私有仓库访问检查 Repository CR检查 PAC Controller 日志测试 Pipeline 触发故障排查检查身份验证错误令牌已过期最佳实践1. 令牌管理2. Secret 管理3. 安全性下一步前提条件
在配置私有仓库的身份验证之前,请确保你已具备:
- PAC 组件已部署并运行
- 为你的仓库创建了一个 Repository CR(Custom Resource)。Repository CR 是一个 Kubernetes 资源,用于告诉 PAC 要监控哪个 Git 仓库以及如何配置它
- 具有创建 Kubernetes Secrets 的管理员权限
- 你的 Git provider 的访问令牌
Repository CR 是一个 Kubernetes Custom Resource,用于定义:
- 要监控的 Git 仓库 URL
- Git provider 配置(GitHub、GitLab 等)
- 身份验证凭据
- webhook 设置
- Pipeline 执行设置
PAC 会监视 Repository CR,并在配置的 Git 仓库中发生事件时自动创建 PipelineRuns。
概述
PAC 支持使用 Personal Access Tokens (PAT) 和 HTTPS URLs 对私有 GitLab 仓库进行身份验证。
配置步骤
按照以下步骤为私有仓库配置身份验证。
第 1 步:在 GitLab 中创建访问令牌
- 转到 GitLab → User Settings → Access Tokens
- 创建一个具有
apiscope 的令牌 - 生成并复制该令牌
第 2 步:创建 Kubernetes Secret
创建一个包含你的 GitLab 访问令牌的 secret:
示例输出:
注意:PAC 将使用此令牌执行 Git provider API 操作(webhook 管理、PR 状态更新等),并自动基于它创建一个 git clone 身份验证 secret。
创建 Webhook Secret(可选)
如果你计划配置 webhook,请创建一个用于 webhook 验证的 secret:
安全最佳实践:
- 安全地存储令牌,并为不同的仓库或环境使用不同的 secret
- PAC 会自动创建 git clone 身份验证 secret,因此你无需手动创建它们
第 3 步:更新 Repository CR
更新你的 Repository CR,以引用身份验证 secret:
注意:PAC 使用 git_provider.secret 执行 API 操作,并自动基于它创建一个 git clone 身份验证 secret,以便在 PipelineRuns 中使用。
验证私有仓库访问
配置身份验证后,请验证 PAC 是否可以访问你的私有仓库:
检查 Repository CR
示例输出(节选):
检查 PAC Controller 日志
查找身份验证错误或连接 Git provider 时的问题。
测试 Pipeline 触发
触发一个测试 Pipeline 以验证访问:
示例输出:
检查 PipelineRun 是否已成功创建:
示例输出:
故障排查
检查身份验证错误
问题:PAC 无法访问私有仓库。
解决方案:
-
验证令牌权限:确保 GitLab 访问令牌具有
apiscope -
检查 secret 是否存在:验证 GitLab secret 是否存在于正确的 namespace 中:
示例输出:
-
验证 secret key:确保 secret 包含 token key:
示例输出(节选,token 已进行 base64 编码):
-
检查 Repository CR:验证 Repository CR 中的 secret 引用是否正确:
示例输出:
令牌已过期
问题:访问令牌已过期。
解决方案:
-
从你的 Git provider 生成一个新的访问令牌
-
更新 Kubernetes Secret:
示例输出:
-
如有需要,重启 PAC controller pod:
示例输出:
最佳实践
1. 令牌管理
- 使用单独的令牌:为不同的仓库或环境使用不同的令牌
- 设置过期时间:为令牌设置过期日期,以提高安全性
- 定期轮换:定期轮换访问令牌
- 限制 scope:仅授予最小所需权限
2. Secret 管理
- 使用 namespaces:将 secret 存储在合适的 namespace 中
- RBAC:使用 RBAC 控制谁可以访问 secret
- 外部 secret:考虑使用外部 secret 管理工具(例如 Sealed Secrets、Vault)
3. 安全性
- 最小权限原则:授予最小所需权限
- 审计访问:定期审计谁有权访问仓库
- 监控日志:监控 PAC controller 日志中的身份验证问题
下一步
- 配置自定义证书 - 为自签名证书配置自定义 CA 证书
- 高级 Repository 配置 - 了解高级 Repository 配置选项
- 配置 GitLab 仓库 - GitLab 特定配置指南
- 常见问题 - 故障排查指南