Deploy with Kubernetes
    • Dark
      Light
    • PDF

    Deploy with Kubernetes

    • Dark
      Light
    • PDF

    Article summary

    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

    1. Domain name: Confirm that your domain name points to your server's IP address.

    2. Kubernetes cluster: Ensure your Kubernetes cluster is up and running.

    3. Helm v3: Install Helm v3 if not already installed.

    4. 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.

    1. Storage Class: Use an existing storage class in your Kubernetes cluster, or set up a new one depending on your cluster configuration.

    2. 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.yaml

      Confirm that the ingress-nginx-controller service with a LoadBalancer type has an external IP address by running:

      kubectl get svc -n ingress-nginx
    3. Certificate 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.yaml

        Check the created resources in the cert-manager namespace with:

        kubectl get all -n cert-manager
      • ClusterIssuer: 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.yaml file:

        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: nginx

        Create this resource by running the following command:

        kubectl apply -f clusterissuer.yaml

        Confirm 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-charts

    If 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 domain
    1. Replace <release> with the QuickMeet.Chat release tag you intend to deploy.

    2. Update domain.xyz with your actual domain name.

    3. Set the ingressClassName to the ingress controller you are using.

    4. If you’ve configured a certificate manager and ClusterIssuer for TLS, specify your ClusterIssuer name and a secretName for TLS. If you already have a valid certificate or do not wish to use TLS, the annotations and tls values 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

    1. With your configurations defined in values.yaml, proceed with the QuickMeet.Chat installation by running:

    helm install rocketchat -f values.yaml rocketchat/rocketchat

    A successful deployment will return output confirming that QuickMeet.Chat has been installed.

    After a few minutes, you can now access your workspace at the domain where QuickMeet.Chat was deployed and complete the setup wizard.

    1. To verify that the pods for your deployment are running, execute:

    kubectl get pods
    1. To 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.0

    After updating the file, execute the following command:

    helm upgrade rocketchat -f values.yaml rocketchat/rocketchat

    For 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 rocketchat
    You said

    To further explore and enhance your workspace on Kubernetes, consider the following next steps:


    Was this article helpful?