Back to Charts

⚠️ Repo Archive Notice

stable/hoard/README.md

latest6.4 KB
Original Source

⚠️ Repo Archive Notice

As of Nov 13, 2020, charts in this repo will no longer be updated. For more information, see the Helm Charts Deprecation and Archive Notice, and Update.

Hoard

Hoard is a stateless, deterministically encrypted, content-addressed object store. It currently supports local persistent storage, S3, GCS, Azure and IPFS backends. Files that are sent to Hoard are symmetrically encrypted, where the secret is the hash of the plaintext file, and then stored in the configured backend - this enables any party with knowledge of the hash or original file to retrieve it from the store.

DEPRECATION NOTICE

This chart is deprecated and no longer supported.

Introduction

This chart bootstraps a hoard daemon on a Kubernetes cluster using the Helm package manager.

Installation

To install the chart with the release name my-release, run:

bash
helm install --name my-release stable/hoard

This installation defaults to persistent volume storage. The configuration section below lists all possible parameters that can be configured.

Uninstall

To uninstall/delete the my-release deployment:

bash
helm delete my-release

Configuration

The following table lists the configurable parameters of the Hoard chart and its default values.

ParameterDescriptionDefault
replicaCountnumber of daemons1
image.repositorydocker image"quay.io/monax/hoard"
image.tagversion"6.0.0"
image.pullPolicypull policy"IfNotPresent"
config.listenaddressaddress to listen ontcp://:53431
config.storage.storagetypebackend object store (aws, azure, filesystem, gcp, ipfs)filesystem
config.storage.addressencodingobject address encodingbase64
config.storage.chunksizesize to chunk at for streaming65536
config.storage.filesystemconfig.rootdirectoryobject address encoding"/data"
config.storage.cloudconfig.bucketobject storage container (cloud only)""
config.storage.cloudconfig.prefixbucket folder (cloud only)""
config.storage.cloudconfig.regionobject store location (cloud only)""
config.storage.ipfsconfig.remoteapiremote api location (ipfs only)""
config.logging.loggingtypeformat for logging output"json"
config.logging.channelslogging types[]
config.secrets.symmetricsymmetric secrets (publicid, passphrase)[]
config.secrets.openpgp.privateidid of private key to sign with""
config.secrets.openpgp.filename of the file mounted from secret"/secrets/keyring"
controller.enabledenable the shared-secrets controllerfalse
controller.keepkeep the shared-secrets crd after chart deletiontrue
secrets.credsrequired secret for cloud providers"cloud-credentials"
secrets.keyringrequired secret for openpgp grants"private-keyring"
persistence.sizesize of local store"10Gi"
persistence.storageClasspvc type"standard"
persistence.accessModepvc access"ReadWriteOnce"
persistence.persistentVolumeReclaimPolicypvc policy"Retain"
persistence.annotationsoptional annotations{}
persistence.annotations."helm.sh/resource-policy"keep pvckeep
service.typetype of service"ClusterIP"
service.portdefault listening port53431
ingresssettings for ingress{}
resourcespod resources{}
nodeSelectoroptional settings{}
tolerationsoptional settings[]
affinitysession affinity{}

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

bash
$ helm install --name my-release stable/hoard

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

bash
$ helm install --name my-release -f values.yaml stable/hoard

Cloud Examples

For each of the supported cloud back-ends, please ensure you have the appropriate credentials as identified by the corresponding environment variables.

AWS

bash
kubectl create secret generic cloud-credentials --from-literal access-key-id=${AWS_ACCESS_KEY_ID} --from-literal secret-access-key=${AWS_SECRET_ACCESS_KEY}
helm install --name my-release stable/hoard --set storage.type=aws,storage.region="eu-central-1",storage.bucket="my-bucket",storage.prefix="folder",storage.secret="cloud-credentials"

Azure

bash
kubectl create secret generic cloud-credentials --from-literal storage-account-name=${AZURE_STORAGE_ACCOUNT_NAME} --from-literal storage-account-key=${AZURE_STORAGE_ACCOUNT_KEY}
helm install --name my-release stable/hoard --set storage.type=azure,storage.bucket="my-bucket",storage.prefix="folder",storage.secret="cloud-credentials"

GCP

bash
kubectl create secret generic cloud-credentials --from-literal service-key=${GCLOUD_SERVICE_KEY}
helm install --name my-release stable/hoard --set storage.type=gcp,storage.bucket="my-bucket",storage.prefix="folder",storage.secret="cloud-credentials"

OpenPGP Grants

Once configured, hoard can share access to a secret file by encrypting it with the public key of the recipient:

bash
kubectl create secret generic private-keyring --from-file ${GOPATH}/src/github.com/monax/hoard/grant/private.key.asc
helm install --name my-release stable/hoard --set openpgp.id="10449759736975846181",openpgp.secret=private-keyring

Shared Secrets

To enable Hoard to act as a 'secrets broker', deploy our CustomResourceDefinition and controller:

bash
helm install --name my-release stable/hoard --set controller.enabled=true