gitlab是通过k8s部署起来的,通过svc暴露服务
gitlab配置如下
#external_url 'http://192.168.10.11'
gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_object_store_enabled'] = true
gitlab_rails['lfs_object_store_proxy_download'] = false
gitlab_rails['lfs_object_store_remote_directory'] = "gitlab-lfs"
gitlab_rails['lfs_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'huhehaote1',
'aws_access_key_id' => 'xx',
'aws_secret_access_key' => 'xx',
'endpoint' => 'eos-huhehaote-1.cmecloud.cn',
'force_path_style' => true
}
### GitLab uploads
gitlab_rails['uploads_object_store_enabled'] = true
gitlab_rails['uploads_object_store_proxy_download'] = false
gitlab_rails['uploads_object_store_remote_directory'] = "gitlab-uploads"
gitlab_rails['uploads_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'huhehaote1',
'aws_access_key_id' => 'xx',
'aws_secret_access_key' => 'xx',
'endpoint' => 'eos-huhehaote-1.cmecloud.cn',
'force_path_style' => true
}
测试结果如下
Loading production environment (Rails 7.0.8)
irb(main):001:1* lfs_connection = Aws::S3::Client.new(
irb(main):002:1* access_key_id: 'xx',
irb(main):003:1* secret_access_key: 'xx',
irb(main):004:1* region: 'huhehaote',
irb(main):005:1* endpoint: 'https://eos-huhehaote-1.cmecloud.cn',
irb(main):006:0> force_path_style: true )
=> #<Aws::S3::Client>
irb(main):007:0> s3_resource = Aws::S3::Resource.new(client: lfs_connection)
=> #<Aws::S3::Resource:0x00007efdfb2b8b58 @client=#<Aws::S3::Client>>
irb(main):008:0> bucket = s3_resource.bucket('gitlab-lfs')
irb(main):009:0> puts bucket.exists?
true
=> nil
irb(main):010:0> # 上传文件
=> nil
irb(main):011:0> bucket.object('test.txt').put(body: '测试内容')
irb(main):012:0* # 下载文件
irb(main):013:0> obj = bucket.object('test.txt')
irb(main):014:0> puts obj.get.body.read
测试内容
=> nil
通过客户端上传时返回的url地址不是携带对象存储认证的url地址而是gitlab的svc地址