Skip to main content

Production Setup

Running your own Tellery with Kubernetes

Artifact Hub

Prerequisites#

  • Helm 3.0+
  • Kubernetes 1.10+

Infrastructure#

  • (Required) Postgresql 10.0+
  • (Optional) Redis 5.0+
  • (Optional) Object Storage Service ( AWS S3, Aliyun OSS or others compatible with S3 protocol)
  • For notifications, you would need
    • Email: An email address and an email server

Installing the Chart#

First of all, add the repo

helm repo add tellery-stable https://tellery.github.io/charts
helm repo update

To install the helm chart with release name e.g. tellery (replace this by your need, the following commands will all use the name tellery):

helm install tellery tellery-stable/tellery \
--set system.web.host=YOUR_HOST \
--set postgresql.enabled=true

If you want to provide advanced parameters with your installation you can check the full Configuration.

Installing with external Postgresql#

helm install tellery tellery-stable/tellery \
--set system.web.host=YOUR_HOST \
--set externalPostgresql.host=postgresqlAddress \
--set externalPostgresql.port=5432 \
--set externalPostgresql.username=postgres \
--set externalPostgresql.password=password \
--set externalPostgresql.database=tellery

Uninstall the Chart#

helm uninstall tellery

Notes#

So far the connector can be only deployed with single replica.

For tellery main service, if you wanna go with multiple replicas, you have to configure a redis storage for the state synchronization. To Configure the redis storage, see Redis Configuration.

The only mandatory config that have to be given by user is system.web.host, see System Configuration for more details.

Configuration#

The following table lists the configurable parameters of the Tellery chart and their default values.

Postgresql Configuration#

You can choose PostgreSQL deployed by Helm by --set postgresql.enabled=true or External PostgreSQL by --set externalPostgresql.host=xxx, if both are configured, PostgreSQL deployed by Helm will be used.

PostgreSQL deployed by Helm is base on Postgresql Helm Chart, you can see it for more configurations.

ParameterDescriptionDefault
postgresql.enabledEnable postgresql deployed by helmfalse
externalPostgresql.hostExternal postgresql hostnull
externalPostgresql.portExternal postgresql port5432
externalPostgresql.databaseExternal postgresql Database nametellery
externalPostgresql.usernameExternal postgresql usernamepostgres
externalPostgresql.passwordExternal postgresql passwordnull

Object Storage Configuration#

If you use PG as object storage, you only need to set objectStorage.type=postgres.

objectStorage.endpoint is optional when you are using AWS S3.

ParameterDescriptionDefault
objectStorage.typeObject storage typepostgres
objectStorage.endpointObject storage endpointnull
objectStorage.bucketObject storage bucketnull
objectStorage.regionObject storage regionnull
objectStorage.accessKeyObject storage access keynull
objectStorage.secretKeyObject storage secret keynull

Redis Configuration#

You can choose Redis deployed by Helm by --set redis.enabled=true or External Redis by --set externalRedis.enabled=true, if both are configured, Redis deployed by Helm will be used.

Redis deployed by Helm is base on Redis Helm Chart, you can see it for more configurations

ParameterDescriptionDefault
redis.enabledEnable redis deployed by helmfalse
externalRedis.enabledEnable external redisfalse
externalRedis.hostExternal redis hostredis
externalRedis.portExternal redis port6379
externalRedis.passwordExternal redis passwordnull

Email Server Configuration#

ParameterDescriptionDefault
email.hostMail server host''
email.portMail server port587
email.usernameMail server username''
email.passwordMail server password''
email.tlsEnable TLSfalse
email.fromSystem mail sender's email address''

System Configuration#

system.web.host is required, setting it, to specify the access domain of Tellery service

If your written language is not English, you can modify your search plugin through this document to get a better search experience.

ParameterDescriptionDefault
system.secretKeySecret key for encrypt sensitive information into databasepjfJ2Cbe3sv0Gtz32Krr4A
system.search.languageLanguage for full-text searchen
system.search.pluginPixel plug-in for full-text searchnull
system.web.portWeb server port80
system.web.protocolWeb server protocolhttps
system.web.hostWeb server hostnull

Initialization Configuration#

ParameterDescriptionDefault
init.user.createWhether to create first usertrue
init.user.nameName of created useradmin
init.user.emailEmail of created useradmin@tellery.local
init.user.passwordPassword of created useradmin
init.workspace.createWhether to create first workspacetrue
init.workspace.nameName of created workspaceDefault

Basic Configuration#

ParameterDescriptionDefault
ingress.enabledEnable ingress controller resourcefalse
ingress.annotationsIngress annotations configurationnull
ingress.hostnameIngress resource hostnamenull
ingress.tlsIngress TLS configurationnull

Server Configuration#

ParameterDescriptionDefault
images.server.repositoryContainer image repositorytellery/server
images.server.tagContainer image tag0.5.0
images.server.pullPolicyContainer image pullPolicyIfNotPresent
images.server.imagePullSecretsContainer image image pull secrets[]
server.replicasdesired number of pods1
server.probeInitialDelaySecondsDelay before liveness probe is initiated10
server.resourcesContainer resource requests and limits{}
server.affinityAffinity settings for pod assignment{}
server.nodeSelectorNode labels for pod assignment{}
server.tolerationsToleration labels for pod assignment{}
server.podLabelsIngress labels configuration{}
server.autoscaling.enabledEnable auto scalingfalse
server.autoscaling.minReplicasMinimum number of pods1
server.autoscaling.maxReplicasMaximum number of pods2
server.autoscaling.targetCPUUtilizationPercentageDefine the CPU trigger value of the expansion50
server.service.nameServer's port name defined in Servicehttp
server.service.typeService TypeClusterIP
server.service.externalPortService port8000
server.service.annotationsAnnotations for service assignment{}
server.service.externalIPsExternalIPs for service assignmentnull
server.service.loadBalancerSourceRangesLoadBalancerSourceRanges for service assignmentnull

Connector Configuration#

ParameterDescriptionDefault
images.connector.repositoryContainer image repositorytellery/connector
images.connector.tagContainer image tag0.5.0
images.connector.pullPolicyContainer image pullPolicyIfNotPresent
images.connector.imagePullSecretsContainer image image pull secrets[]
connector.probeInitialDelaySecondsDelay before liveness probe is initiated10
connector.resourcesContainer resource requests and limits{}
connector.affinityAffinity settings for pod assignment{}
connector.nodeSelectorNode labels for pod assignment{}
connector.tolerationsToleration labels for pod assignment{}
connector.podLabelsIngress labels configuration{}
connector.autoscaling.enabledEnable auto scalingfalse
connector.autoscaling.minReplicasMinimum number of pods1
connector.autoscaling.maxReplicasMaximum number of pods2
connector.autoscaling.targetCPUUtilizationPercentageDefine the CPU trigger value of the expansion50
connector.service.nameServer's port name defined in Servicehttp
connector.service.typeService TypeClusterIP
connector.service.externalPortService port50051
connector.service.annotationsAnnotations for service assignment{}
connector.service.externalIPsExternalIPs for service assignmentnull
connector.service.loadBalancerSourceRangesLoadBalancerSourceRanges for service assignmentnull
connector.persistence.enabledPersistence volume for storing configurationstrue
connector.persistence.sizeSize of Persistence volume1Gi

Using the --set key\value[,key=value] argument to specify each parameter

helm install tellery tellery-stable/tellery --set system.secretKey=xxx --set web.replicas=2

Or using the yaml to specify each parameter

Copy these default configuration into a new file named tellery-config.yaml, then modify as your need.

helm install tellery tellery-stable/tellery -f tellery-config.yaml