Back to Charts

⚠️ Repo Archive Notice

stable/rocketchat/README.md

latest9.3 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.

Rocket.Chat

Rocket.Chat is free, unlimited and open source. Replace email, HipChat & Slack with the ultimate team chat software solution.

WARNING: Upgrading to chart version 1.1.x or higher (Rocket.Chat 1.0+) might require extra steps to retain the MongoDB data. See Upgrading to 1.1.0 for more details.

DEPRECATION NOTICE

This chart is deprecated and no longer supported.

TL;DR;

console
$ helm install stable/rocketchat --set mongodb.mongodbPassword=$(echo -n $(openssl rand -base64 32)),mongodb.mongodbRootPassword=$(echo -n $(openssl rand -base64 32))

Introduction

This chart bootstraps a Rocket.Chat Deployment on a Kubernetes cluster using the Helm package manager. It provisions a fully featured Rocket.Chat installation.

In addition, this chart supports scaling of Rocket.Chat for increased server capacity and high availability. For more information on Rocket.Chat and its capabilities, see its documentation.

Prerequisites Details

The chart has an optional dependency on the MongoDB chart. By default, the MongoDB chart requires PV support on underlying infrastructure (may be disabled).

Installing the Chart

To install the chart with the release name rocketchat:

console
$ helm install --name rocketchat stable/rocketchat

Uninstalling the Chart

To uninstall/delete the rocketchat deployment:

console
$ helm delete rocketchat

Configuration

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

ParameterDescriptionDefault
image.repositoryImage repositorydocker.io/rocketchat/rocket.chat
image.tagImage tag3.2.2
image.pullPolicyImage pull policyIfNotPresent
hostHostname for Rocket.Chat. Also used for ingress (if enabled)""
replicaCountNumber of replicas to run1
smtp.enabledEnable SMTP for sending mailsfalse
smtp.usernameUsername of the SMTP account""
smtp.passwordPassword of the SMTP account""
smtp.hostHostname of the SMTP server""
smtp.portPort of the SMTP server587
extraEnvExtra environment variables for Rocket.Chat. Used with tpl function, so this needs to be a string""
podAntiAffinityPod anti-affinity can prevent the scheduler from placing RocketChat replicas on the same node. The default value "soft" means that the scheduler should prefer to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is required to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured.""
podAntiAffinityTopologyKeyIf anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example failure-domain.beta.kubernetes.io/zonekubernetes.io/hostname
affinityAssign custom affinity rules to the RocketChat instance https://kubernetes.io/docs/concepts/configuration/assign-pod-node/{}
minAvailableMinimum number / percentage of pods that should remain scheduled1
externalMongodbUrlMongoDB URL if using an externally provisioned MongoDB""
externalMongodbOplogUrlMongoDB OpLog URL if using an externally provisioned MongoDB. Required if externalMongodbUrl is set""
mongodb.enabledEnable or disable MongoDB dependency. Refer to the stable/mongodb docs for more informationtrue
persistence.enabledEnable persistence using a PVC. This is not necessary if you're using the default (and recommended) GridFS file storagefalse
persistence.storageClassStorage class of the PVC to use""
persistence.accessModeAccess mode of the PVCReadWriteOnce
persistence.sizeSize of the PVC8Gi
persistence.existingClaimAn Existing PVC name for rocketchat volume""
resourcesPod resource requests and limits{}
securityContext.enabledEnable security context for the podtrue
securityContext.runAsUserUser to run the pod as999
securityContext.fsGroupfs group to use for the pod999
serviceAccount.createSpecifies whether a ServiceAccount should be createdtrue
serviceAccount.nameName of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template""
ingress.enabledIf true, an ingress is createdfalse
ingress.annotationsAnnotations for the ingress{}
ingress.pathPath of the ingress/
ingress.tlsA list of IngressTLS items[]
livenessProbe.enabledTurn on and off liveness probetrue
livenessProbe.initialDelaySecondsDelay before liveness probe is initiated60
livenessProbe.periodSecondsHow often to perform the probe15
livenessProbe.timeoutSecondsWhen the probe times out5
livenessProbe.failureThresholdMinimum consecutive failures for the probe3
livenessProbe.successThresholdMinimum consecutive successes for the probe1
readinessProbe.enabledTurn on and off readiness probetrue
readinessProbe.initialDelaySecondsDelay before readiness probe is initiated10
readinessProbe.periodSecondsHow often to perform the probe15
readinessProbe.timeoutSecondsWhen the probe times out5
readinessProbe.failureThresholdMinimum consecutive failures for the probe3
readinessProbe.successThresholdMinimum consecutive successes for the probe1
service.annotationsAnnotations for the Rocket.Chat service{}
service.labelsAdditional labels for the Rocket.Chat service{}
service.typeThe service type to useClusterIP
service.portThe service port80
service.nodePortThe node port used if the service is of type NodePort""
podLabelsAdditional pod labels for the Rocket.Chat pods{}
podAnnotationsAdditional pod annotations for the Rocket.Chat pods{}

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

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

bash
$ helm install --name rocketchat -f values.yaml stable/rocketchat

Database Setup

Rocket.Chat uses a MongoDB instance to presist its data. By default, the MongoDB chart is deployed and a single MongoDB instance is created as the primary in a replicaset.
Please refer to this chart for additional MongoDB configuration options. If you are using chart defaults, make sure to set at least the mongodb.mongodbRootPassword, mongodb.mongodbUsername and mongodb.mongodbPassword values.

WARNING: The root credentials are used to connect to the MongoDB OpLog

Using an External Database

This chart supports using an existing MongoDB instance. Use the `` configuration options and disable MongoDB with --set mongodb.enabled=false

Configuring Additional Environment Variables

yaml
extraEnv: |
  - name: MONGO_OPTIONS
    value: '{"ssl": "true"}'

Increasing Server Capacity and HA Setup

To increase the capacity of the server, you can scale up the number of Rocket.Chat server instances across available computing resources in your cluster, for example,

bash
$ kubectl scale --replicas=3 deployment/rocketchat

By default, this chart creates one MongoDB instance as a Primary in a replicaset. This is the minimum requirement to run Rocket.Chat 1.x+. You can also scale up the capacity and availability of the MongoDB cluster independently. Please see the MongoDB chart for configuration information.

For information on running Rocket.Chat in scaled configurations, see the documentation for more details.

Upgrading

To 1.1.0

Rocket.Chat version 1.x requires a MongoDB ReplicaSet to be configured. When using the dependent stable/mongodb chart (mongodb.enabled=true), enabling ReplicaSet will drop the PVC and create new ones. Make sure to backup your current MongoDB and restore it after the upgrade.

To 1.0.0

Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. Use the workaround below to upgrade from versions previous to 1.0.0. The following example assumes that the release name is rocketchat:

console
$ kubectl delete deployment rocketchat-rocketchat --cascade=false