Intro
The s3sync-service was designed with containerisation in mind thus it's really easy to run in Docker or Kubernetes. To simplify things we have prepared Helm charts and all in one deployment manifest, however you still have to create PVs/PVCs in order to mount the data volumes on the s3sync-service pod.
Helm
In order to start with helm approach your would need to add the repository with:
helm repo add s3sync-service https://charts.s3sync-service.org
Now let's create a values.yaml file for our deployment with the following contents:
# You can omit this part if you choose to create the secret manually
# please note the keys we expect in the secret
# or use some other authentication methods
secret:
AWS_ACCESS_KEY_ID: "AKIAI44QH8DHBEXAMPLE"
AWS_SECRET_ACCESS_KEY: "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY"
# PVCs local-path1 and local-path2 should be created separately
# as well at corresponding PVs
volumes:
- name: local-path1
persistentVolumeClaim:
claimName: local-path1
- name: local-path2
persistentVolumeClaim:
claimName: local-path2
volumeMounts:
- name: local-path1
mountPath: /local/path1
readOnly: true
- name: local-path2
mountPath: /local/path2
readOnly: true
# The sites configuration for syncing the mentioned above PVs/PVCs,
# please note that there's no limit on the number of sites so feel free to create as many as you meed
config.sites:
- local_path: /local/path1
bucket: backup-bucket-path1
bucket_region: us-east-1
storage_class: STANDARD_IA
exclusions:
- .[Dd][Ss]_[Ss]tore
- .[Aa]pple[Dd]ouble
- local_path: /local/path2
bucket: backup-bucket-path2
bucket_path: path2
exclusions:
- "[Tt]humbs.db"
That would be the minimal set of variables required to start the application. Now we ready to deploy it:
helm install s3sync-service -f values.yaml --name s3sync-service
At this point our application should be up and running, you can check it with the following command or by examining the pod logs:
helm status s3sync-service
Please check the Helm Charts documentation on available configuration options.