- Print
- DarkLight
- PDF
Deploy with Kubernetes
- Print
- DarkLight
- PDF
This documentation guides you through deploying QuickMeet.Chat on Kubernetes using the Helm package manager. The official QuickMeet.Chat helm chart bootstraps the deployment process by provisioning a fully featured QuickMeet.Chat installation. It also provides strong support for scaling QuickMeet.Chat to accommodate growing server capacity needs and ensure high availability.
Prerequisites
This section details the prerequisites for deploying QuickMeet.Chat with Kubernetes, including recommendations and examples to guide you. Note that if you are using a firewall, you may need to whitelist some URLs to communicate with our cloud services. See Firewall Configuration for the complete list.
Server requirements
Domain name: Confirm that your domain name points to your server's IP address.
Kubernetes cluster: Ensure your Kubernetes cluster is up and running.
Helm v3: Install Helm v3 if not already installed.
Firewall configuration: Verify that your firewall rules allow HTTPS traffic.
Kubernetes resources requirement
The following Kubernetes resources must be deployed on your server:
The examples provided are intended as a guide. Your implementation may vary based on your specific requirements and Kubernetes configuration.
Storage Class: Use an existing storage class in your Kubernetes cluster, or set up a new one depending on your cluster configuration.
Ingress Controller: This deployment requires an ingress controller. In this guide, we’ll use nginx as an example. Install Ingress-Nginx controller by running:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yamlConfirm that the
ingress-nginx-controllerservice with a LoadBalancer type has an external IP address by running:kubectl get svc -n ingress-nginxCertificate manager and ClusterIssuer: If you’re not using a domain with a valid TLS certificate, you may need to set up one to use HTTPS.
Cert manager: To facilitate TLS certificate management, install cert-manager by running:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.3/cert-manager.yamlCheck the created resources in the
cert-managernamespace with:kubectl get all -n cert-managerClusterIssuer: cert-manager requires a ClusterIssuer to automatically issue TLS certificates across the cluster. Below is an example configuration for setting up Let's Encrypt in a
clusterissuer.yamlfile:apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: labels: app.kubernetes.io/instance: use1-cert-manager name: production-cert-issuer # Customize as needed; referenced in values.yaml later spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: [email protected] # Replace with your email privateKeySecretRef: name: cert-manager-secret-production # Customize as needed solvers: - http01: ingress: class: nginxCreate this resource by running the following command:
kubectl apply -f clusterissuer.yamlConfirm that the ClusterIssuer was properly deployed and that the secret was successfully created by running:
kubectl get clusterissuer kubectl get secret -n cert-manager
The QuickMeet.Chat chart has an optional dependency on the MongoDB chart. By default, the MongoDB chart requires PV support on underlying infrastructure, which may be disabled.
Once you've confirmed that all prerequisites are met, continue with the next steps to deploy a QuickMeet.Chat workspace using Kubernetes.
Step 1: Add the chart repository
Add the QuickMeet.Chat helm chart repository by running the following command:
helm repo add rocketchat https://rocketchat.github.io/helm-chartsIf successful, it returns a response that "rocketchat" has been added to your repositories.
Step 2: Define deployment configurations
To install QuickMeet.Chat using the chart, define your configuration options in a values.yaml file. Below is an example configuration to use for your deployment:
image:
pullPolicy: IfNotPresent
repository: registry.quickmeet.chat/rocketchat/quickmeet.chat
tag: <release> # Set the QuickMeet.Chat release
mongodb:
enabled: true # For testing, deploy a single MongoDB pod; consider an external MongoDB cluster for production.
auth:
passwords:
- rocketchat
rootPassword: rocketchatroot
microservices:
enabled: false # Set to false for a monolithic deployment
host: domain.xyz # Replace with your QuickMeet.Chat domain
ingress:
enabled: true
ingressClassName: nginx # Specify the installed ingress controller in the K8s cluster
annotations:
cert-manager.io/cluster-issuer: production-cert-issuer # Replace with your ClusterIssuer name
tls:
- secretName: rckube # Use a different name if preferred
hosts:
- domain.xyz # Replace with your QuickMeet.Chat domainReplace
<release>with the QuickMeet.Chat release tag you intend to deploy.Update
domain.xyzwith your actual domain name.Set the
ingressClassNameto the ingress controller you are using.If you’ve configured a certificate manager and ClusterIssuer for TLS, specify your ClusterIssuer name and a
secretNamefor TLS. If you already have a valid certificate or do not wish to use TLS, theannotationsandtlsvalues can be omitted.
It’s important to note that microservices is disabled in this deployment. To use microservices, visit our microservices documentation for more details. Additionally, you can refer to this recording that explains how to deploy QuickMeet.Chat with microservices in a test environment.
Step 3: Install QuickMeet.Chat
With your configurations defined in
values.yaml, proceed with the QuickMeet.Chat installation by running:
helm install rocketchat -f values.yaml rocketchat/rocketchatA successful deployment will return output confirming that QuickMeet.Chat has been installed.
.png)
After a few minutes, you can now access your workspace at the domain where QuickMeet.Chat was deployed and complete the setup wizard.
To verify that the pods for your deployment are running, execute:
kubectl get podsTo view the logs for a specific QuickMeet.Chat pod, use:
kubectl logs <pod-name>Congratulations! You have successfully deployed your QuickMeet.Chat workspace on Kubernetes. Your workspace is now live and ready to use. Enjoy your new QuickMeet.Chat workspace!
Updating QuickMeet.Chat on Kubernetes
To update your QuickMeet.Chat workspace to a new version, update the tag field in your values.yaml file with the desired release tag. For details about available QuickMeet.Chat versions refer to the QuickMeet.Chat releases.
image:
tag: 7.0.0After updating the file, execute the following command:
helm upgrade rocketchat -f values.yaml rocketchat/rocketchatFor more information on updating QuickMeet.Chat, refer to this issue.
Uninstalling QuickMeet.Chat
To uninstall and delete the QuickMeet.Chat deployment, use the command:
helm delete rocketchatYou said
To further explore and enhance your workspace on Kubernetes, consider the following next steps: