Skip to content

Deploy S3 Storage

Huddo Boards requires an S3 object store. This documentation will deploy a SeaweedFS (Apache 2.0 licenced) S3 storage container into the Kubernetes setup, separate to the Boards chart itself.

The deployment is named huddo-s3 because it is not Boards-specific — other Huddo products (e.g. Huddo Ideas & Wikis) can share this same S3 service, each using their own bucket. Boards uses the huddo-boards bucket.

If you already have externally hosted S3 storage please skip to the Outcomes section to determine your equivalent connection parameters.

You can also email us for support at support@huddo.com

Note

Previous versions of this guide deployed MinIO. MinIO is now AGPLv3 licenced and we recommend SeaweedFS instead. Existing MinIO installations continue to work — see the SeaweedFS migration guide for the migration rationale and data-copy approach.

Prerequisites

  1. Config file downloaded

Update config file

Key Default Value Description
nfs.path /pv-kudos/seaweedfs Path to storage location
nfs.server STORAGE_SERVER_IP IP of NFS server
ie 192.168.10.50

Deploy instructions

  1. Generate a pair of S3 credentials and create them as a Kubernetes secret (SeaweedFS and its bucket-setup Job read this secret):

    ACCESS_KEY="$(openssl rand -hex 12)"
    SECRET_KEY="$(openssl rand -base64 32)"
    echo "S3_ACCESS_KEY: $ACCESS_KEY"
    echo "S3_SECRET_KEY: $SECRET_KEY"
    
    kubectl create secret generic huddo-s3-credentials -n boards \
      --from-literal=access-key="$ACCESS_KEY" \
      --from-literal=secret-key="$SECRET_KEY"
    

    Keep the two echoed values — you will set them as global.env.S3_ACCESS_KEY / S3_SECRET_KEY in boards.yaml during the application setup.

  2. Create the folder at nfs.path location on the nfs.server with access 777

    Note: please ensure sufficient storage is available (ie 100GB)

  3. Ensure each Node in your Kubernetes cluster can mount this location.

    Please modify the file /etc/exports on your NFS Server to include this line

    <NFS_PATH_FOR_S3> <IP_RANGE_OF_YOUR_SERVERS>/<SUBNET_MASK>(rw,no_root_squash)
    

    For example:

    /pv-kudos/seaweedfs 192.168.0.0/255.255.0.0(rw,no_root_squash)
    

    Apply new NFS storage to exports

    exportfs -ra
    
  4. Install SeaweedFS

    kubectl apply -f ./seaweedfs.yaml
    

    The huddo-s3-bucket-setup Job waits for the S3 service to come up and creates the default bucket, then cleans itself up after an hour.


Outcomes

The following are the parameters required to connect to this S3 storage. You will need these later in the application setup. If you have your own S3 storage, please substitute your values.

Key Default Value Description
S3_ENDPOINT huddo-s3 Hostname of this service
S3_PORT 8333 SeaweedFS S3 port
S3_USE_SSL false Traffic inside the cluster
S3_ACCESS_KEY <generated-access-key> Generated above
S3_SECRET_KEY <generated-secret-key> Generated above
S3_BUCKET huddo-boards Default storage bucket