Rocketchat Server Upgrade Workflow - WideChat/Rocket.Chat GitHub Wiki
This document describes a normal workflow for deploying updates to the Rocketchat versions running in our production, preprod and dev environments. Our servers are deployed in the vega core-infrastructures, also known as the Vega Application Platform (VAP).
- We host three instances of RC server, one in each of the VAP environments. When running commands with the
kluster
tool you will reference which env to run against.
'vega-dev': 'messaging.vega-dev.viasat.io'
'vega-preprod': 'messaging.vega-preprod.viasat.io'
'vega-prod': 'chatbot.vega.viasat.com'
- There are also three instances of Spinnaker where you can view, re-run pipelines and run a rollout restart.
'vega-dev': 'deck.marina.viasat.io'
'vega-preprod': 'deck-preprod.marina.viasat.io'
'vega-prod': 'deck-prod.marina.viasat.io'
- Initial deployments and configurations are outside the scope of this document but are described in this wiki
- The Vega kluster tool needs to be installed and ready to use
- NOTE: This tool was originally developed to deploy rocketchat servers in the Veranda AWS environments. We no longer host our dev, preprod, and production instances there, but instead on the VAP. However, the tool has been extended to include functionality that we still use, such as:
- versioning and configuring rocketchat server settings
- deploying and updating rocketchat apps (DialogFlow and Salesforce Apps used by Chatbot)
- pulling/pushing docker images from ECR to viasat artifactory instances from where we can deploy into the VAP
- NOTE: This tool was originally developed to deploy rocketchat servers in the Veranda AWS environments. We no longer host our dev, preprod, and production instances there, but instead on the VAP. However, the tool has been extended to include functionality that we still use, such as:
- When running the
kluster
tool you will be asked to authenticate usingalohomora
, for permissions to reach the ECR instances in the Veranda AWS accounts (see Eric Rosenthal for permissions). The README in the kluster repo includes instructions for setting up alohomora on your local machine. - You will need login permissions to Spinnaker instances so that you can deploy the new version. See the core-infrastructure team for permissions if needed.
- NOTE: It is also possible to scale in and out using a
kubectl rollout restart
command, but you need access and authentication to work directly against our clusters in the VAP, and this is not the preferred method unless you are one of the core-infrastructure admins.
- NOTE: It is also possible to scale in and out using a
- You need an admin account on the Rocketchat instance you want to update.
- Docker images are programatically pushed to the
widechat
ECR repos with the taglatest-develop_pwa
, in both theVeranda-dev
andVeranda-prod
AWS accounts. - If you need to update the Rocketchat server follow steps 1 - 2
- If you need to update Rocketchat settings follow step 3
- If you need to update the RC Apps follow step 4
- Use the Vega kluster tool on your local machine to pull -> tag -> and push these images to the viasat artifactory instances where we host images to be deployed in the VAP.
./kluster pod -n vega-dev -cmd artifactory_push -tag latest-develop_pwa -ntag v3.14.0
- Upgrade rocketchat server instances in the VAP using one of the two methods described below.
- Update using the same tag. This will be the case if you did not increment the tag when you pushed to artifactory, i.e. the version number.
- In the Spinnaker-UI, select the
messaging
application and selectCLUSTERS
from the left pane to view what is deployed in your namespace. - Click on
deployment rocketchat-rocketchat
to open a tab on the right. NOTE: in prod the deployment name isrocketchat-chatbot
. - In the tab click the
deployment actions
dropdown and selectRolling Restart
- That's it. A new deployment/upgrade will commence and be ready usually within a few minutes.
- In the Spinnaker-UI, select the
- Update to deploy a new tag. This will be the case if you incremented the build number by pushing a new tag to artifactory.
- In the Spinnaker-UI, select the
messaging
application and selectPIPELINES
from the left pane to view the deployment pipeline. - You will be re-running the
messsaging_deploy
pipeline by clicking on theRerun pipeline with same parameters
button. It is a little re-run icon to the left of the trash can icon. - In the GUI that appears, use the
Tag
dropdown to select the new tag you want to deploy. NOTE: after pushing to artifactory it can take up to 5 minutes or so for the new tag to be available in the drop down. - Click the
run
button on the bottom right and a new deployment will commence.
- In the Spinnaker-UI, select the
- Update using the same tag. This will be the case if you did not increment the tag when you pushed to artifactory, i.e. the version number.
- Run the version controller to apply our Rocketchat settings.
cd kluster/projects/veranda
./kluster mongodb -name vega-preprod -namespace messaging --settings -u <rocketchat-username> -p <password> -2fa <2fa-code>
- Upgrade or deploy the Rocketchat Apps used in the Chatbot/Salesforce integration.
./kluster mongodb -name vega-preprod -namespace messaging --rc_apps -u <rocketchat-username> -p <password> -2fa <2fa-code>
- Confirm in the rocketchat
UI/Administration/Apps
that the newly updated Apps are enabled; if not enable them. - Restart the server to guarantee all new changes take. The restart button is in the rocketchat
UI/general/restart-server