From 72d27b9a7c115d7f7d5c9284745c4bb5069a33da Mon Sep 17 00:00:00 2001 From: Peter Grainger Date: Mon, 15 Aug 2022 13:24:30 +0100 Subject: [PATCH] Allow save object to S3 in different region (#910) * Allow save object to S3 in different region * feat(helm & docker-compose): adds S3_REGION to helm chart & docker-compose Explicitly adding the environment variable to deployment configuration files provides system operators with documentation of its existence. Set to empty by default, which will result in the default value being used. Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com> --- .circleci/config.yml | 1 + docker-compose-speckle.yml | 2 ++ packages/server/modules/blobstorage/objectStorage.js | 2 +- utils/1click_image_scripts/template-docker-compose.yml | 2 ++ .../speckle-server/templates/fileimport_service/deployment.yml | 2 ++ utils/helm/speckle-server/templates/server/deployment.yml | 2 ++ utils/helm/speckle-server/values.yaml | 1 + 7 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bdbdeea29..28c6e8c90 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -259,6 +259,7 @@ jobs: S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' S3_CREATE_BUCKET: 'true' + S3_REGION: '' # optional, defaults to 'us-east-1' steps: - checkout - restore_cache: diff --git a/docker-compose-speckle.yml b/docker-compose-speckle.yml index a090ccf17..5f1262bbe 100644 --- a/docker-compose-speckle.yml +++ b/docker-compose-speckle.yml @@ -39,6 +39,7 @@ services: S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' S3_CREATE_BUCKET: 'true' + S3_REGION: '' # optional, defaults to 'us-east-1' FILE_SIZE_LIMIT_MB: 100 preview-service: @@ -77,5 +78,6 @@ services: S3_ACCESS_KEY: 'minioadmin' S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' + S3_REGION: '' # optional, defaults to 'us-east-1' SPECKLE_SERVER_URL: 'http://speckle-server:3000' diff --git a/packages/server/modules/blobstorage/objectStorage.js b/packages/server/modules/blobstorage/objectStorage.js index db681a589..7b1be8c73 100644 --- a/packages/server/modules/blobstorage/objectStorage.js +++ b/packages/server/modules/blobstorage/objectStorage.js @@ -27,7 +27,7 @@ const getS3Config = () => { forcePathStyle: true, // s3ForcePathStyle: true, // signatureVersion: 'v4', - region: 'us-east-1' + region: process.env.S3_REGION || 'us-east-1' } } return s3Config diff --git a/utils/1click_image_scripts/template-docker-compose.yml b/utils/1click_image_scripts/template-docker-compose.yml index c6737fc36..0e2529d22 100644 --- a/utils/1click_image_scripts/template-docker-compose.yml +++ b/utils/1click_image_scripts/template-docker-compose.yml @@ -79,6 +79,7 @@ services: S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' S3_CREATE_BUCKET: 'true' + S3_REGION: '' # optional, defaults to 'us-east-1' FILE_SIZE_LIMIT_MB: 100 @@ -116,5 +117,6 @@ services: S3_ACCESS_KEY: 'minioadmin' S3_SECRET_KEY: 'minioadmin' S3_BUCKET: 'speckle-server' + S3_REGION: '' # optional, defaults to 'us-east-1' SPECKLE_SERVER_URL: 'http://speckle-server:3000' diff --git a/utils/helm/speckle-server/templates/fileimport_service/deployment.yml b/utils/helm/speckle-server/templates/fileimport_service/deployment.yml index 64c3b758b..e0a20cb6b 100644 --- a/utils/helm/speckle-server/templates/fileimport_service/deployment.yml +++ b/utils/helm/speckle-server/templates/fileimport_service/deployment.yml @@ -92,6 +92,8 @@ spec: secretKeyRef: name: {{ .Values.secretName }} key: s3_secret_key + - name: S3_REGION + value: "{{ .Values.s3.region }}" - name: FILE_IMPORT_TIME_LIMIT_MIN value: {{ .Values.fileimport_service.time_limit_min | quote }} diff --git a/utils/helm/speckle-server/templates/server/deployment.yml b/utils/helm/speckle-server/templates/server/deployment.yml index 59b585251..c9449eab6 100644 --- a/utils/helm/speckle-server/templates/server/deployment.yml +++ b/utils/helm/speckle-server/templates/server/deployment.yml @@ -141,6 +141,8 @@ spec: key: s3_secret_key - name: S3_CREATE_BUCKET value: "{{ .Values.s3.create_bucket }}" + - name: S3_REGION + value: "{{ .Values.s3.region }}" {{- end }} diff --git a/utils/helm/speckle-server/values.yaml b/utils/helm/speckle-server/values.yaml index 6597de9c9..5d89ceb83 100644 --- a/utils/helm/speckle-server/values.yaml +++ b/utils/helm/speckle-server/values.yaml @@ -27,6 +27,7 @@ s3: bucket: '' access_key: '' create_bucket: 'false' + region: '' # optional, defaults to 'us-east-1' # secret_key: secret -> s3_secret_key networkPolicy: # if network policy is enabled for any service, this provides the networkPolicy with the necessary details to allow egress connections to the s3 compatible storage externalToCluster: # use if the s3 compatible storage is external to the kubernetes cluster