{"id":51940303,"url":"https://github.com/comet-ml/s3proxy-chart","last_synced_at":"2026-07-28T18:01:53.859Z","repository":{"id":317217541,"uuid":"1061790466","full_name":"comet-ml/s3proxy-chart","owner":"comet-ml","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-16T15:05:08.000Z","size":86,"stargazers_count":1,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-16T15:25:45.648Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go Template","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/comet-ml.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-22T11:43:22.000Z","updated_at":"2026-07-16T15:07:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"ffdf642f-789e-4652-a025-b9536d2910dd","html_url":"https://github.com/comet-ml/s3proxy-chart","commit_stats":null,"previous_names":["comet-ml/s3proxy-chart"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/comet-ml/s3proxy-chart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fs3proxy-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fs3proxy-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fs3proxy-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fs3proxy-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/comet-ml","download_url":"https://codeload.github.com/comet-ml/s3proxy-chart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fs3proxy-chart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36002533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-28T02:00:06.341Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-28T18:01:52.117Z","updated_at":"2026-07-28T18:01:53.826Z","avatar_url":"https://github.com/comet-ml.png","language":"Go Template","funding_links":[],"categories":[],"sub_categories":[],"readme":"# s3proxy\n\n![Version: 0.4.1](https://img.shields.io/badge/Version-0.4.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.3.0](https://img.shields.io/badge/AppVersion-3.3.0-informational?style=flat-square)\n\nA Helm chart for deploying S3Proxy - Access other storage backends via the S3 API\n\n## Requirements\n\n| Repository | Name | Version |\n|------------|------|---------|\n| oci://ghcr.io/comet-ml | comet-common | 0.3.0 |\n\n## Prerequisites\n\n- Kubernetes 1.19+\n- Helm 3.2.0+\n- PV provisioner support in the underlying infrastructure (if using filesystem backend with persistence)\n\n## S3Proxy version compatibility\n\nThe chart tracks S3Proxy (`andrewgaul/s3proxy`) through `appVersion` (currently `3.3.0`); override it with `image.tag`. Minimum supported version is `2.7.0`.\n\nS3Proxy `3.0.0` deprecated the Apache jclouds storage backends (`s3`, `aws-s3`, `azureblob`, `filesystem`, `transient`) in favor of SDK / NIO2 providers. Upstream has announced that `3.3.0` is the last release to bundle jclouds and that future releases \"will lack its Atmos and B2 storage backends\" (no jclouds-free release has shipped yet; `3.3.0` remains the latest). The jclouds providers still work on 3.x, but are deprecated:\n\n- `filesystem` / `transient`: already default to the non-deprecated `*-nio2` variants (`nio2: true`).\n- `azureblob`: **defaults to `provider: azureblob-sdk`** (the Azure SDK provider, which signs correctly against custom endpoints such as Azurite). The legacy jclouds `azureblob` provider is deprecated and mis-signs against custom endpoints; set `provider: azureblob` only if you specifically need it. On real Azure, `azureblob-sdk` may require `config.backends.azureblob.regions` for bucket creation.\n- `s3`, `googleCloudStorage`, `openstackSwift`: SDK providers exist upstream (`aws-s3-sdk`, `google-cloud-storage-sdk`, `openstack-swift-sdk`). `rackspaceCloudfiles` is OpenStack-Swift-compatible and may be served by `openstack-swift-sdk`. Migrating the chart defaults to the SDK providers is tracked separately.\n- `b2` (and Atmos, if ever added) are jclouds-only with **no SDK successor**. These are the backends upstream has said future releases will drop.\n\n### Our compatibility plan\n\n- **Through S3Proxy `3.3.0` (chart `0.x`):** all current backends, including the jclouds-only `b2`, are supported. This is where the chart sits today.\n- **Guardrail:** the chart **hard-fails at render time** if `b2` (or `atmos`) is enabled while the effective S3Proxy version (`image.tag`, else `appVersion`) is greater than `3.3.0`, so an upgrade past the jclouds sunset cannot silently ship a broken backend. Pin `image.tag` to `3.3.0` or earlier, or disable the backend.\n- **When S3Proxy ships its first jclouds-free release:** the chart moves to `1.x.x` (major bump), migrates the remaining backends to their SDK providers, and drops `b2`/`atmos`. Tracked in the SDK-migration follow-up.\n\n## Installation\n\n### Install the chart\n\n```bash\n# Install with default values (filesystem backend)\nhelm install my-s3proxy oci://ghcr.io/comet-ml/s3proxy\n\n# Install with custom values\nhelm install my-s3proxy oci://ghcr.io/comet-ml/s3proxy -f override-values.yaml\n```\n\n## Configuration\n\nThe following section lists the configurable parameters of the s3proxy chart and their default values.\n\n## Values\n\n*Scroll sideways to see all columns.*\n\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\u003cth\u003eKey\u003c/th\u003e\n\t\t\u003cth\u003eDescription\u003c/th\u003e\n\t\t\u003cth\u003eType\u003c/th\u003e\n\t\t\u003cth\u003eDefault\u003c/th\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eaffinity\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAffinity for pod assignment\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eautoscaling.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable HPA\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eautoscaling.maxReplicas\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eMaximum number of replicas\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e100\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eautoscaling.minReplicas\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eMinimum number of replicas\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e1\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eautoscaling.targetCPUUtilizationPercentage\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eTarget CPU utilization percentage\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e80\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.auth.identity\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3 Access Key ID for client authentication\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.auth.secret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3 Secret Access Key for client authentication\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.auth.type\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAuthorization type (none, aws-v2, aws-v4, aws-v2-or-v4)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"aws-v4\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.account\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eStorage account name\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable Azure Blob Storage backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.endpoint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAzure endpoint\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ehttps://{{ .Values.config.backends.azureblob.account }}.blob.core.windows.net\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.key\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eStorage account key configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"accountKey\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.key.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the storage account key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.key.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the storage account key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"accountKey\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.key.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eStorage account key value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.provider\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eProvider type. Defaults to \u003ccode\u003eazureblob-sdk\u003c/code\u003e (Azure SDK): it signs correctly against custom endpoints (Azurite, Azure Gov/China, private endpoints) and is the non-deprecated provider on S3Proxy 3.x. The legacy jclouds \u003ccode\u003eazureblob\u003c/code\u003e provider is deprecated upstream and mis-signs against custom endpoints; on real Azure \u003ccode\u003eazureblob-sdk\u003c/code\u003e may require \u003ccode\u003eregions\u003c/code\u003e to be set for bucket creation.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"azureblob-sdk\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.regions\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ejclouds region(s) for the backend, emitted as \u003ccode\u003ejclouds.regions=\u003c/code\u003e. The azureblob-sdk provider requires this on real Azure to create buckets (without it \u003ccode\u003eaws s3 mb\u003c/code\u003e fails with InvalidLocationConstraint / \"no jclouds.regions configured\"). Comma-separated for multiple. Not needed against Azurite. Leave empty to omit.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.sasToken\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eSAS token configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"sasToken\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.sasToken.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the SAS token\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.sasToken.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the SAS token\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"sasToken\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.azureblob.sasToken.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eSAS token value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.account\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eB2 account ID\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.applicationKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eB2 application key configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"applicationKey\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.applicationKey.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the application key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.applicationKey.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the application key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"applicationKey\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.applicationKey.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eApplication key value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.b2.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable Backblaze B2 backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.basedir\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBase directory for filesystem backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"/data/s3proxy\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.credential\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ejclouds credential. S3Proxy requires jclouds.credential in every backend properties file; the filesystem backend ignores the value. An empty value falls back to \"local\".\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"local\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable filesystem backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.identity\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ejclouds identity. S3Proxy requires jclouds.identity in every backend properties file; the filesystem backend ignores the value, so the \"local\" placeholder is fine. An empty value falls back to \"local\".\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"local\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.filesystem.nio2\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUse NIO2 implementation (filesystem-nio2) instead of standard filesystem\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.clientEmail\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eService account email or user email\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable Google Cloud Storage backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.privateKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePrivate key configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"private.key\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.privateKey.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the private key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.privateKey.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the private key (in PEM format)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"private.key\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.privateKey.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePrivate key value (in PEM format)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.googleCloudStorage.projectID\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eGCP project ID\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.authURL\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAuthentication URL\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable OpenStack Swift backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.password\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePassword configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"password\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.password.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the password\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.password.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the password\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"password\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.password.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePassword value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.region\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eRegion\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.tenantName\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eTenant name\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.openstackSwift.userName\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUsername\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.apiKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAPI key configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"apiKey\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.apiKey.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the API key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.apiKey.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the API key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"apiKey\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.apiKey.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAPI key value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable Rackspace Cloud Files backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.region\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eRegion (uk or us)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"us\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.rackspaceCloudfiles.userName\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUsername\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.accessKeyID\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3 Access Key ID for backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.aws\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUse AWS-specific S3 provider (aws-s3) instead of generic S3 provider\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable S3 backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.endpoint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3 endpoint\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.region\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAWS region\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.secretAccessKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3 Secret Access Key configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{\"existingSecret\":\"\",\"secretKey\":\"secretAccessKey\",\"value\":\"\"}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.secretAccessKey.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of existing secret containing the secret access key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.secretAccessKey.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey in the existing secret containing the secret access key\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"secretAccessKey\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.s3.secretAccessKey.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eSecret access key value\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.transient.bucketLocators\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eBuckets routed to this backend (S3Proxy bucket-locator; glob patterns supported). Only relevant when multiple backends are enabled; a bucket matching no backend's list falls through to the first-enabled backend.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.transient.credential\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ejclouds credential. S3Proxy requires jclouds.credential in every backend properties file; the transient backend ignores the value. An empty value falls back to \"local\".\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"local\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.transient.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable transient (in-memory) backend\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.transient.identity\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ejclouds identity. S3Proxy requires jclouds.identity in every backend properties file; the transient backend ignores the value, so the \"local\" placeholder is fine. An empty value falls back to \"local\".\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"local\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.backends.transient.nio2\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUse NIO2 implementation (transient-nio2) instead of standard transient\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.buckets.alias\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eMap virtual bucket names to actual backend buckets\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.cors.allowCredential\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAllow credentials\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.cors.allowHeaders\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAllowed headers\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[\"Accept\",\"Content-Type\"]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.cors.allowMethods\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAllowed methods\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[\"GET\",\"PUT\",\"POST\",\"HEAD\",\"DELETE\"]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.cors.allowOrigins\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAllowed origins (e.g., [\"https://example.com\", \"https://.+\\\\.example\\\\.com\"])\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.cors.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable CORS support\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.logLevel\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eLog level for S3Proxy (DEBUG, INFO, WARN, ERROR)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"INFO\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.middlewares.eventualConsistency\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable eventual consistency modeling\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.middlewares.largeObjectMocking\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable large object mocking\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.middlewares.readOnly\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eMake backend read-only\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.middlewares.shardedBackend\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable sharded backend containers\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable native in-pod HTTPS (S3Proxy \u003ccode\u003esecure-endpoint\u003c/code\u003e). When enabled, S3Proxy serves HTTPS only on \u003ccode\u003eservice.targetPort\u003c/code\u003e (the plaintext endpoint is not bound), so TLS is terminated in the pod rather than at the ingress. Requires a PKCS12 (or JKS) keystore and its password. \u003ccode\u003etcpSocket\u003c/code\u003e health probes are unaffected (they do not perform a TLS handshake).\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystore.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of an existing Secret holding the keystore file (binary PKCS12/JKS). Takes precedence over \u003ccode\u003evalue\u003c/code\u003e. Use this for a customer-provided keystore or a cert-manager-issued one (\u003ccode\u003eCertificate.spec.keystores.pkcs12\u003c/code\u003e).\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystore.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey within \u003ccode\u003ekeystore.existingSecret\u003c/code\u003e (or, when \u003ccode\u003evalue\u003c/code\u003e is used, within the chart's own Secret) that holds the keystore file\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"keystore.p12\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystore.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eInline base64-encoded keystore, stored in the chart's own Secret and mounted as a file. Used only when \u003ccode\u003ekeystore.existingSecret\u003c/code\u003e is empty. Convenient for testing; prefer \u003ccode\u003eexistingSecret\u003c/code\u003e in production.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystorePassword.existingSecret\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eName of an existing Secret holding the keystore password. Takes precedence over \u003ccode\u003evalue\u003c/code\u003e.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystorePassword.secretKey\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKey within \u003ccode\u003ekeystorePassword.existingSecret\u003c/code\u003e that holds the keystore password\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"keystore-password\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.tls.keystorePassword.value\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eInline keystore password, stored in the chart's own Secret and merged into the backend properties by the secret-merge initContainer (kept out of the ConfigMap). Used only when \u003ccode\u003ekeystorePassword.existingSecret\u003c/code\u003e is empty.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfig.virtualHost\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eVirtual Host configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfigMergeImage.pullPolicy\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eConfig merge container image pull policy\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"IfNotPresent\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfigMergeImage.repository\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eConfig merge container image repository\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"busybox\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003econfigMergeImage.tag\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eConfig merge container image tag\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"1.36\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eextraEnvVars\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAdditional environment variables\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eextraVolumeMounts\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAdditional volume mounts\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eextraVolumes\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAdditional volumes\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efullnameOverride\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eString to fully override s3proxy.fullname template\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eimage.pullPolicy\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eImage pull policy\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"IfNotPresent\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eimage.repository\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eS3Proxy image repository\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"andrewgaul/s3proxy\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eimage.tag\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eOverrides the image tag whose default is the chart appVersion\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eimagePullSecrets\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eImage pull secrets\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eingress.annotations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eIngress annotations\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eingress.className\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eIngress class name\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eingress.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable ingress\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eingress.hosts\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eIngress hosts configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eingress.tls\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eTLS configuration\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003enameOverride\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eString to partially override s3proxy.fullname template\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003enodeSelector\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eNode selector for pod assignment\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.accessMode\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePVC Access Mode\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"ReadWriteOnce\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.annotations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePVC annotations\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.enabled\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eEnable persistence using PVC\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.existingClaim\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eUse existing PVC\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.size\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePVC Storage Request\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"10Gi\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epersistence.storageClass\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eStorage Class\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e (uses default StorageClass)\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epodAnnotations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAnnotations to add to the pod\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epodLabels\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eExtra labels to add to the pod (merged with the chart's selector labels)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003epodSecurityContext\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePod security context\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ereplicaCount\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eNumber of S3Proxy replicas\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e1\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eresources\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eResource limits and requests\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003esecurityContext\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eContainer security context\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eservice.annotations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eService annotations\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eservice.port\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eService port\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e9000\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eservice.targetPort\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eTarget port (controls both the container port and S3Proxy bind port)\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e9000\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eservice.type\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eKubernetes service type\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"ClusterIP\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eserviceAccount.annotations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eAnnotations to add to the service account\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eobject\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e{}\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eserviceAccount.create\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eSpecifies whether a service account should be created\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003ebool\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eserviceAccount.name\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eThe name of the service account to use. If not set and create is true, a name is generated using the fullname template\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003estring\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e\"\"\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eterminationGracePeriodSeconds\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003ePod termination grace period. Covers the 5s preStop sleep plus the in-flight request drain (up to 30s) that S3Proxy releases after 3.3.0 perform on SIGTERM.\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003eint\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e40\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003etolerations\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003eTolerations for pod assignment\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003elist\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003ctd\u003e\u003ccode\u003e[]\u003c/code\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n## Usage Examples\n\n### Example 1: Filesystem Backend with Authentication\n\n```yaml\n# values-filesystem.yaml\nconfig:\n  auth:\n    type: \"aws-v4\"\n    identity: \"myaccesskey\"\n    secret: \"mysecretkey\"\n  backends:\n    filesystem:\n      enabled: true\n      nio2: true\n    filesystem:\n      basedir: \"/data/s3proxy\"\n\npersistence:\n  enabled: true\n  size: 20Gi\n```\n\nInstall:\n```bash\nhelm install s3proxy-fs ./s3proxy -f values-filesystem.yaml\n```\n\n### Example 2: AWS S3 Backend\n\n```yaml\n# values-aws-s3.yaml\nconfig:\n  auth:\n    type: \"aws-v4\"\n    identity: \"proxy-access-key\"  # For clients connecting to s3proxy\n    secret: \"proxy-secret-key\"\n  backend:\n    provider: \"aws-s3\"\n    awsS3:\n      region: \"us-west-2\"\n      accessKeyID: \"aws-access-key-id\"  # For s3proxy to connect to AWS\n      secretAccessKey: \"aws-secret-access-key\"\n\npersistence:\n  enabled: false  # Not needed for S3 backend\n```\n\nInstall:\n```bash\nhelm install s3proxy-s3 ./s3proxy -f values-aws-s3.yaml\n```\n\n### Example 3: Azure Blob Storage Backend\n\n```yaml\n# values-azure.yaml\nconfig:\n  auth:\n    type: \"aws-v4\"\n    identity: \"myaccesskey\"\n    secret: \"mysecretkey\"\n  backend:\n    provider: \"azureblob\"\n    azureblob:\n      account: \"mystorageaccount\"\n      key: \"storageaccountkey\"\n\npersistence:\n  enabled: false  # Not needed for Azure backend\n```\n\nInstall:\n```bash\nhelm install s3proxy-azure ./s3proxy -f values-azure.yaml\n```\n\n### Example 4: Google Cloud Storage Backend\n\n```yaml\n# values-gcs.yaml\nconfig:\n  auth:\n    type: \"aws-v4\"\n    identity: \"myaccesskey\"\n    secret: \"mysecretkey\"\n  backend:\n    provider: \"google-cloud-storage\"\n    googleCloudStorage:\n      projectID: \"my-project\"\n      clientEmail: \"service-account@my-project.iam.gserviceaccount.com\"\n      privateKey: |\n        -----BEGIN RSA PRIVATE KEY-----\n        ...\n        -----END RSA PRIVATE KEY-----\n\npersistence:\n  enabled: false  # Not needed for GCS backend\n```\n\n### Example 5: Anonymous Access (No Authentication)\n\n```yaml\n# values-anonymous.yaml\nconfig:\n  auth:\n    type: \"none\"\n  backends:\n    transient:\n      enabled: true\n      nio2: true  # In-memory storage\n\npersistence:\n  enabled: false\n```\n\n## Testing the Installation\n\nOnce deployed, you can test S3Proxy using the AWS CLI:\n\n```bash\n# Get the service endpoint\nkubectl get svc\n\n# Port-forward for local testing\nkubectl port-forward svc/my-s3proxy 8080:8080\n\n# Configure AWS CLI (if authentication is enabled)\nexport AWS_ACCESS_KEY_ID=myaccesskey\nexport AWS_SECRET_ACCESS_KEY=mysecretkey\n\n# Test S3 operations\naws --endpoint-url http://localhost:8080 s3 ls\naws --endpoint-url http://localhost:8080 s3 mb s3://test-bucket\naws --endpoint-url http://localhost:8080 s3 cp test.txt s3://test-bucket/\naws --endpoint-url http://localhost:8080 s3 ls s3://test-bucket/\n```\n\n## TLS / HTTPS (native, in-pod)\n\nBy default S3Proxy binds plain HTTP and TLS is expected to be terminated at the\ningress. Set `config.tls.enabled=true` to have **S3Proxy itself terminate HTTPS in\nthe pod** (S3Proxy's `secure-endpoint`). When enabled:\n\n- S3Proxy serves **HTTPS only** on `service.targetPort` (the plaintext endpoint is\n  not bound). The container/Service port is named `https`.\n- The health probes are `tcpSocket`, which only check the TCP accept (no TLS\n  handshake), so they keep working unchanged against the TLS port.\n- A **PKCS12** keystore is expected (Jetty's default keystore type; JKS also works\n  if supplied). S3Proxy exposes only the keystore path and password, so the chart\n  does not set a keystore type.\n- The keystore **password is never written to the ConfigMap**; it is merged into\n  the backend properties from the Secret by the config-merge initContainer.\n\n### Option A: existing Secret (recommended; also the cert-manager path)\n\nReference a Secret that already holds the keystore file and the password. This is\nalso how a cert-manager `Certificate` with `spec.keystores.pkcs12` delivers a\nkeystore (point `keystore.existingSecret` at that Secret, and\n`keystorePassword.existingSecret` at the password Secret it references):\n\n```yaml\nconfig:\n  tls:\n    enabled: true\n    keystore:\n      existingSecret: my-tls        # holds the PKCS12 archive\n      secretKey: keystore.p12\n    keystorePassword:\n      existingSecret: my-tls        # holds the password (may be the same Secret)\n      secretKey: keystore-password\n```\n\n### Option B: inline keystore + password\n\nProvide the base64-encoded keystore and the password inline; both are stored in the\nchart's own Secret. Convenient for testing; prefer Option A in production.\n\n```yaml\nconfig:\n  tls:\n    enabled: true\n    keystore:\n      value: \"\u003cbase64-encoded PKCS12 keystore\u003e\"\n    keystorePassword:\n      value: \"changeit\"\n```\n\nCreate a PKCS12 keystore, for example:\n\n```bash\n# From an existing cert + key:\nopenssl pkcs12 -export -inkey tls.key -in tls.crt \\\n  -out keystore.p12 -passout pass:changeit\n# Inline value:\nbase64 -w0 keystore.p12\n# Or as an existing Secret (Option A):\nkubectl create secret generic my-tls \\\n  --from-file=keystore.p12=keystore.p12 \\\n  --from-literal=keystore-password=changeit\n```\n\nTesting over HTTPS (the CI keystore above is self-signed, so skip verification):\n\n```bash\naws --endpoint-url https://localhost:9000 --no-verify-ssl s3 ls\n```\n\n## CORS Configuration\n\nTo enable CORS support:\n\n```yaml\nconfig:\n  cors:\n    enabled: true\n    allowOrigins:\n      - \"https://example.com\"\n      - \"https://.+\\\\.example\\\\.com\"\n    allowMethods:\n      - \"GET\"\n      - \"PUT\"\n      - \"POST\"\n      - \"HEAD\"\n      - \"DELETE\"\n    allowHeaders:\n      - \"Accept\"\n      - \"Content-Type\"\n    allowCredential: true\n```\n\n## Middleware Configuration\n\nS3Proxy supports various middlewares:\n\n```yaml\nconfig:\n  middlewares:\n    readOnly: false           # Make backend read-only\n    eventualConsistency: true # Enable eventual consistency modeling\n    shardedBackend: true      # Enable sharded backend containers\n    largeObjectMocking: false # Enable large object mocking\n```\n\n## Bucket Configuration\n\n### Bucket Aliasing\n\nMap virtual bucket names to actual backend buckets:\n\n```yaml\nconfig:\n  buckets:\n    alias:\n      virtual-bucket: \"real-backend-bucket\"\n      another-bucket: \"actual-bucket-name\"\n```\n\n### Bucket Locator (routing buckets to backends)\n\nWhen more than one backend is enabled, assign buckets to a specific backend with\nthat backend's own `bucketLocators` list. S3Proxy reads bucket-locators per\nbackend, so each list is emitted only into that backend's properties file. Glob\npatterns are supported. A bucket that matches no backend's list falls through to\nthe first-enabled backend (the default).\n\n```yaml\nconfig:\n  backends:\n    s3:\n      enabled: true\n      # ... credentials ...\n      bucketLocators:\n        - \"prod-*\"\n        - \"customer-data\"\n    filesystem:\n      enabled: true\n      bucketLocators:\n        - \"scratch-*\"   # everything else also lands here (first-enabled default)\n```\n\n## Monitoring\n\nCheck S3Proxy logs:\n```bash\nkubectl logs deployment/my-s3proxy\n```\n\n## Upgrading\n\n```bash\nhelm upgrade my-s3proxy ./s3proxy -f my-values.yaml\n```\n\n## Uninstalling\n\n```bash\nhelm uninstall my-s3proxy\n```\n\nThis will remove all resources created by the chart. If using persistence, the PVC will be retained by default.\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Authentication failures**: Ensure `config.auth.identity` and `config.auth.secret` are set correctly for client authentication.\n\n2. **Backend connection issues**: Verify backend credentials are correctly configured in the appropriate section (e.g., `config.backend.awsS3.*`).\n\n3. **Persistence issues**: Check that your cluster has a default StorageClass or specify one explicitly.\n\n4. **Port conflicts**: If port 8080 is already in use, change `service.port` and `service.targetPort`.\n\n## References\n\n- [S3Proxy GitHub Repository](https://github.com/gaul/s3proxy)\n- [S3Proxy Docker Hub](https://hub.docker.com/r/andrewgaul/s3proxy/)\n- [Storage Backend Examples](https://github.com/gaul/s3proxy/wiki/Storage-backend-examples)\n\n## License\n\nThis Helm chart is provided as-is. S3Proxy itself is licensed under the Apache License 2.0.\n\n----------------------------------------------\nAutogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fs3proxy-chart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomet-ml%2Fs3proxy-chart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fs3proxy-chart/lists"}