Implement backup/restore with Rails codebase
Summary
We should replace the implementation of backup / restore within these charts based upon our existing Rails codebase from GitLab CE. The current implementation relies on external commands that are not cross-provider friendly, and share some form of limitation even if replaced with another.
We should use the existing rails code base that we have, and replace the use of s3cmd
/mc
/gsutil
with Fog
based behaviors. This simplifies all maintenance items for both the development team and the end users deploying GitLab charts, while also ensuring that we know it is 100% compatible with the various providers without further testing.
Details
The use of s3cmd
has the unfortunate result in requiring S3 XML API compatibility. This is not something that is accessible or allowable for some users. If we were to replace s3cmd
with mc, we would still see the similar problems.
We have the ability to be provider independent, and to do so in an already documented method via Fog
/ CarrierWave
within our Rails codebase. We also have existing backup/restore Rake tasks within that codebase which would be extended for use by these charts and Omnibus. These changes should simplify the overall maintenance of developers, as well as simpler and consistent documentation for users / operators.
Impact
The suggest changes would have a large impact on the behaviors of this chart. As such, this should be considered breaking, as it will require user interaction to update any secrets related to backups that are not handled via shared-secrets
.
- The configuration would change to a standard YAML block, like the rest of the LFS / Uploads / Artifacts / Packages / etc.
- The capabilities could be included within the GitLab CE codebase to provide functionality to Omnibus / non-official packaging.
- Documentation would need to strongly updated.
- The major version should be changed as the tools and strategy for backup / restore would be altered.
Notes
Split from #667 (closed), from https://gitlab.com/charts/gitlab/issues/677#note_98894864 and https://gitlab.com/charts/gitlab/issues/677#note_109706234