From 0bf46bf73b99de1fd5fc1370b7192b30a8e98fba Mon Sep 17 00:00:00 2001 From: solidnerd Date: Sun, 29 Apr 2018 10:47:59 +0200 Subject: [PATCH] Add GITLAB_UPLOADS_OBJECT_STORE_* Signed-off-by: solidnerd --- Changelog.md | 14 ++++++++++++++ README.md | 11 +++++++++++ assets/runtime/config/gitlabhq/gitlab.yml | 15 +++++++++++++++ assets/runtime/env-defaults | 14 ++++++++++++++ assets/runtime/functions | 17 +++++++++++++++++ 5 files changed, 71 insertions(+) diff --git a/Changelog.md b/Changelog.md index 574957be..466b87e4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -30,6 +30,20 @@ https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG.md) for the list o - ADD `GITLAB_LFS_OBJECT_STORE_CONNECTION_AWS_HOST` - ADD `GITLAB_LFS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT` - ADD `GITLAB_LFS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE` + +- ADD `GITLAB_UPLOADS_OBJECT_STORE_ENABLED` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_DIRECT_UPLOAD` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT` +- ADD `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE` + **10.6.4** - gitlab: upgrade CE to v10.6.4 diff --git a/README.md b/README.md index e3a1722f..b31bd01c 100644 --- a/README.md +++ b/README.md @@ -873,6 +873,17 @@ Below is the complete list of available options that can be used to customize yo | `GITLAB_LFS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE` | Changes AWS Path Style to 'host/bucket_name/object' instead of 'bucket_name.host/object'. Defaults to `true` | | `GITLAB_UPLOADS_STORAGE_PATH` | The location where uploads objects are stored. Defaults to `$GITLAB_SHARED_DIR/public`. | | `GITLAB_UPLOADS_BASE_DIR` | Mapping for the `GITLAB_UPLOADS_STORAGE_PATH`. Defaults to `uploads/-/system` | +| `GITLAB_UPLOADS_OBJECT_STORE_ENABLED` | Enables Object Store for UPLOADS that will be remote stored. Defaults to `false` | +| `GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY` | Bucket name to store the UPLOADS. Defaults to `uploads` | +| `GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD` | Temporary option to limit automatic upload. Defaults to `false` | +| `GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD` | Passthrough all downloads via GitLab instead of using Redirects to Object Storage. Defaults to `false` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER` | Connection Provider for the Object Store. Currently only AWS is supported. Defaults to `AWS` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID` | AWS Access Key ID for the Bucket. Defaults to `AWS_ACCESS_KEY_ID` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY` | AWS Secret Access Key. Defaults to `AWS_SECRET_ACCESS_KEY` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION` | AWS Region. Defaults to `us-east-1` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST` | Configure this for an compatible AWS host like minio. Defaults to `s3.amazonaws.com` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT` | AWS Endpoint like `http://127.0.0.1:9000`. Defaults to `nil` | +| `GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE` | Changes AWS Path Style to 'host/bucket_name/object' instead of 'bucket_name.host/object'. Defaults to `true` | | `GITLAB_MATTERMOST_ENABLED` | Enable/Disable GitLab Mattermost for *Add Mattermost button*. Defaults to `false`. | | `GITLAB_MATTERMOST_URL` | Sets Mattermost URL. Defaults to `https://mattermost.example.com`. | | `GITLAB_BACKUP_SCHEDULE` | Setup cron job to automatic backups. Possible values `disable`, `daily`, `weekly` or `monthly`. Disabled by default | diff --git a/assets/runtime/config/gitlabhq/gitlab.yml b/assets/runtime/config/gitlabhq/gitlab.yml index 4aa74e8c..3361a1c4 100644 --- a/assets/runtime/config/gitlabhq/gitlab.yml +++ b/assets/runtime/config/gitlabhq/gitlab.yml @@ -189,6 +189,21 @@ production: &base # The location where uploads objects are stored (default: public/). storage_path: {{GITLAB_UPLOADS_STORAGE_PATH}} base_dir: {{GITLAB_UPLOADS_BASE_DIR}} + object_store: + enabled: {{GITLAB_UPLOADS_OBJECT_STORE_ENABLED}} + remote_directory: {{GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY}} # The bucket name + direct_upload: {{GITLAB_UPLOADS_OBJECT_STORE_DIRECT_UPLOAD}} # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false) + background_upload: {{GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD}} # Temporary option to limit automatic upload (Default: true) + proxy_download: {{GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD}} # Passthrough all downloads via GitLab instead of using Redirects to Object Storage + connection: + provider: {{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER}} # Only AWS supported at the moment + aws_access_key_id: {{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID}} + aws_secret_access_key: {{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY}} + region: {{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION}} + host: '{{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST}}' # default: s3.amazonaws.com + endpoint: '{{GITLAB_UPLOADS_ENDPOINT_OBJECT_STORE_CONNECTION_AWS_ENDPOINT}}' # default: nil + path_style: {{GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE}} # Use 'host/bucket_name/object' instead of 'bucket_name.host/object' + ## GitLab Pages diff --git a/assets/runtime/env-defaults b/assets/runtime/env-defaults index c1b063bc..f419afa1 100644 --- a/assets/runtime/env-defaults +++ b/assets/runtime/env-defaults @@ -128,6 +128,19 @@ GITLAB_LFS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE=${GITLAB_LFS_OBJECT_STORE_CONN GITLAB_UPLOADS_STORAGE_PATH="${GITLAB_UPLOADS_STORAGE_PATH:-$GITLAB_INSTALL_DIR/public}" GITLAB_UPLOADS_BASE_DIR="${GITLAB_UPLOADS_BASE_DIR:-uploads/-/system}" +GITLAB_UPLOADS_OBJECT_STORE_ENABLED=${GITLAB_UPLOADS_OBJECT_STORE_ENABLED:-false} +GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY=${GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY:-uploads} +GITLAB_UPLOADS_OBJECT_STORE_DIRECT_UPLOAD=${GITLAB_UPLOADS_OBJECT_STORE_DIRECT_UPLOAD:-false} +GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD=${GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD:-false} +GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD=${GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD:-false} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER:-AWS} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID:-AWS_ACCESS_KEY_ID} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY:-AWS_SECRET_ACCESS_KEY} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION:-us-east-1} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST:-s3.amazonaws.com} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT:-nil} +GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE=${GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE:-true} + ## Mattermost GITLAB_MATTERMOST_ENABLED=${GITLAB_MATTERMOST_ENABLED:-false} GITLAB_MATTERMOST_URL=${GITLAB_MATTERMOST_URL:-https://mattermost.example.com} @@ -411,3 +424,4 @@ GITLAB_MONITORING_IP_WHITELIST=${GITLAB_MONITORING_IP_WHITELIST:-"0.0.0.0/8"} GITLAB_MONITORING_SIDEKIQ_EXPORTER_ENABLED=${GITLAB_MONITORING_SIDEKIQ_EXPORTER_ENABLED:-true} GITLAB_MONITORING_SIDEKIQ_EXPORTER_ADDRESS=${GITLAB_MONITORING_SIDEKIQ_EXPORTER_ADDRESS:-"0.0.0.0"} GITLAB_MONITORING_SIDEKIQ_EXPORTER_PORT=${GITLAB_MONITORING_SIDEKIQ_EXPORTER_PORT:-3807} + diff --git a/assets/runtime/functions b/assets/runtime/functions index 7cfe0d5e..e8bfa43b 100644 --- a/assets/runtime/functions +++ b/assets/runtime/functions @@ -987,6 +987,23 @@ gitlab_configure_uploads() { update_template ${GITLAB_CONFIG} \ GITLAB_UPLOADS_STORAGE_PATH \ GITLAB_UPLOADS_BASE_DIR + + echo "Configuring gitlab::uploads:object_store" + update_template ${GITLAB_CONFIG} \ + GITLAB_UPLOADS_OBJECT_STORE_ENABLED \ + GITLAB_UPLOADS_OBJECT_STORE_REMOTE_DIRECTORY \ + GITLAB_UPLOADS_OBJECT_STORE_DIRECT_UPLOAD \ + GITLAB_UPLOADS_OBJECT_STORE_BACKGROUND_UPLOAD \ + GITLAB_UPLOADS_OBJECT_STORE_PROXY_DOWNLOAD \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_PROVIDER \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ACCESS_KEY_ID \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_SECRET_ACCESS_KEY \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_REGION \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_HOST \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_ENDPOINT \ + GITLAB_UPLOADS_OBJECT_STORE_CONNECTION_AWS_PATH_STYLE +} + } gitlab_configure_mattermost() {