You can use our docker container to run companion on kubernetes with the following configuration.
kubectl create ns uppy
We will need a Redis container that we can get through helm:
helm install --name redis \
--namespace uppy \
--set password=superSecretPassword \
stable/redis
companion-env.yml
apiVersion: v1
data:
COMPANION_CLIENT_ORIGINS: 'localhost:3452,uppy.io'
COMPANION_DATADIR: 'PATH/TO/DOWNLOAD/DIRECTORY'
COMPANION_DOMAIN: 'YOUR SERVER DOMAIN'
COMPANION_DOMAINS: 'sub1.domain.com,sub2.domain.com,sub3.domain.com'
COMPANION_PROTOCOL: 'YOUR SERVER PROTOCOL'
COMPANION_STREAMING_UPLOAD: true
COMPANION_REDIS_URL: redis://:superSecretPassword@uppy-redis.uppy.svc.cluster.local:6379
COMPANION_SECRET: 'shh!Issa Secret!'
COMPANION_PREAUTH_SECRET: 'another secret'
COMPANION_DROPBOX_KEY: 'YOUR DROPBOX KEY'
COMPANION_DROPBOX_SECRET: 'YOUR DROPBOX SECRET'
COMPANION_BOX_KEY: 'YOUR BOX KEY'
COMPANION_BOX_SECRET: 'YOUR BOX SECRET'
COMPANION_GOOGLE_KEY: 'YOUR GOOGLE KEY'
COMPANION_GOOGLE_SECRET: 'YOUR GOOGLE SECRET'
COMPANION_INSTAGRAM_KEY: 'YOUR INSTAGRAM KEY'
COMPANION_INSTAGRAM_SECRET: 'YOUR INSTAGRAM SECRET'
COMPANION_AWS_KEY: 'YOUR AWS KEY'
COMPANION_AWS_SECRET: 'YOUR AWS SECRET'
COMPANION_AWS_BUCKET: 'YOUR AWS S3 BUCKET'
COMPANION_AWS_REGION: 'AWS REGION'
COMPANION_AWS_PREFIX: 'AWS PREFIX'
COMPANION_OAUTH_DOMAIN: 'sub.domain.com'
COMPANION_UPLOAD_URLS: 'http://tusd.tusdemo.net/files/,https://tusd.tusdemo.net/files/'
kind: Secret
metadata:
name: companion-env
namespace: uppy
type: Opaque
companion-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: companion
namespace: uppy
spec:
replicas: 2
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
template:
metadata:
labels:
app: companion
spec:
containers:
- image: docker.io/transloadit/companion:latest
imagePullPolicy: ifNotPresent
name: companion
resources:
limits:
memory: 150Mi
requests:
memory: 100Mi
envFrom:
- secretRef:
name: companion-env
ports:
- containerPort: 3020
volumeMounts:
- name: companion-data
mountPath: /mnt/companion-data
volumes:
- name: companion-data
emptyDir: {}
kubectl apply -f companion-deployment.yml
companion-service.yml
apiVersion: v1
kind: Service
metadata:
name: companion
namespace: uppy
spec:
ports:
- port: 80
targetPort: 3020
protocol: TCP
selector:
app: companion
kubectl apply -f companion-service.yml
You can check the production logs for the production pod using:
kubectl logs my-pod-name