Static objects external storage

Static objects external storage

在 GitLab 12.3 中引入 .

可以将 GitLab 配置为从外部存储(例如内容交付网络(CDN))为存储库静态对象(例如,存档或原始 Blob)提供服务.

要为静态对象配置外部存储,请执行以下操作:

  1. 导航到” 管理区域”>”设置”>”存储库” .
  2. 展开” 存储库静态对象”部分.

GitLab 将为属于私有项目的静态对象 URL 附加一个用户特定的令牌,因此可以代表用户对外部存储进行身份验证. 当处理来自外部存储的请求时,GitLab 将在查询参数或X-Gitlab-Static-Object-Token标头中查找X-Gitlab-Static-Object-Token以检查用户访问所请求对象的能力.

以下示例显示了用户,GitLab 和 CDN 之间的一系列请求和响应:

sequenceDiagram User->> GitLab:GET /project/-/archive/master.zip GitLab->>用户:302 找到有关 User,GitLab 的注释:位置:. zip?token =安全用户令牌用户->> CDN:GET /project/-/archive/master.zip?token=安全用户令牌替代对象不在缓存 CDN->> GitLab:GET / project /- /archive/master.zip 关于 CDN,GitLab 的说明:X-Gitlab-External-Storage-Token:secure-cdn-token X-Gitlab-Static-Object-Token:安全用户令牌 GitLab->> CDN:200 OK CDN->>用户:master.zip 其他对象在缓存 CDN->> GitLab:GET / project /-/ a​​rchive / master.zip 关于 CDN,GitLab 的说明:X-Gitlab-External-Storage-Token:secure-cdn-token X-Gitlab-Static-Object-Token:安全用户令牌 如果不匹配:etag 值 GitLab->> CDN:304 未修改 CDN->>用户:master.zip 结束

  1. 如果还没有,请选择一个 CloudFlare Worker 域.
  2. 在以下脚本中,为前两个常量设置以下值:

    • :GitLab 安装的主机名.
    • STORAGE_TOKEN :任何任意的安全令牌(例如,您可以通过在 UNIX 计算机上运行pwgen -cn1 64来获得一个). 按照配置部分中的说明将此令牌保存到管理面板.

  3. 使用此脚本创建一个新的工作程序.