Prerequisites
Before upgrading the application, you need to stream the new version to your Docker Registry. If you need to install hsk8s
, refer to the hsk8s (Hyperscience Kubernetes CLI) article.
export HS_APP_VERSION=
export HS_TOKEN=
hsk8s image stream 012345678912.dkr.ecr.us-east-1.amazonaws.com --token $HS_TOKEN --aws
hsk8s image stream 012345678912.dkr.ecr.us-east-1.amazonaws.com --token $HS_TOKEN --aws --forms --forms-repo --forms-version $HS_APP_VERSION
hsk8s image stream 012345678912.dkr.ecr.us-east-1.amazonaws.com --token $HS_TOKEN --aws --blocks --blocks-repo --forms-version $HS_APP_VERSION
hsk8s image stream 012345678912.dkr.ecr.us-east-1.amazonaws.com --token $HS_TOKEN --aws --trainer --trainer-repo --forms-version $HS_APP_VERSION
Note Replace and with actual values. You should have received your token from Hyperscience sales representative.
Note Replace 0123456789.dkr.ecr.us-east-1.amazonaws.com
with your ECR registry endpoint. You can obtain this through the AWS Console or CLI.
Make sure that you have imported environment variables from hsk8s (Hyperscience Kubernetes CLI):
source hs_env.bash
Minor Upgrade
Update the image tags in your values.yaml
file with the new forms version that you want to install.
app:
tag: ""
trainer:
-
Note You need kubectl access to run the following command. Once you have saved your changes run the following helm command to upgrade the release:
helm upgrade $HS_HELM_RELEASE -f values.yaml $HS_HELM_CHART
This will kick-off the upgrade process, during which you can expect some downtime.
Major Upgrade
IMPORTANT: When performing a major version upgrade on the Hyperscience application, a new version of the trainer needs to be spawned first to maintain automation performance. More information on that topic can be found in the Upgrade Process Overview.
values.yaml
trainer:
tags:
-
-
Apply the changes $ helm upgrade $HS_HELM_RELEASE -f values.yaml $HS_HELM_CHART
Two new trainer pods will be started and once the artifact jobs are finished the following changes are to be made to the values.yaml
file
app:
tag: ""
trainer:
- # Delete the item
Apply the changes $ helm upgrade $HS_HELM_RELEASE -f values.yaml $HS_HELM_CHART
Step by step sample
Initially a new init job will be created. Both the frontend and backend pods will be stuck in Init
until the init-job
is completed.
$ helm upgrade $HS_HELM_RELEASE -f values.yaml $HS_HELM_CHART
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hs-block-lambdapython-77677cd4f6-v5cnk 1/1 Running 0 18h
hyperscience-backend-7c7777d9dd-l4nb5 0/7 Init:0/1 0 49s
hyperscience-frontend-6984bb49c4-g557k 0/2 Init:0/1 0 46s
hyperscience-hyperoperator-68f8cfcb57-79wvs 1/1 Running 0 46s
hyperscience-init-job-kaxsg-5nhwk 0/3 Init:0/2 0 41s
trainer-b683d4f1-bmbdq 0/9 ContainerCreating 0 41s
Note Some restarts of the trainer pod are expected until the init job completes.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hs-block-lambdapython-77677cd4f6-v5cnk 1/1 Running 0 18h
hyperscience-backend-7c7777d9dd-l4nb5 0/7 Init:0/1 0 3m57s
hyperscience-frontend-6984bb49c4-g557k 0/2 Init:0/1 0 3m54s
hyperscience-hyperoperator-68f8cfcb57-79wvs 1/1 Running 0 3m54s
hyperscience-init-job-kaxsg-5nhwk 3/3 Running 0 3m49s
trainer-b683d4f1-bmbdq 3/9 CrashLoopBackOff 8 3m49s
Once the init job completes and the backend pod is started hyperoperator will update all needed blocks.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hs-block-lambdapython-55c5b997fb-kbz8s 1/1 Running 0 39s
hs-block-lambdapython-77677cd4f6-v5cnk 1/1 Terminating 0 18h
hyperscience-backend-7c7777d9dd-l4nb5 7/7 Running 0 5m22s
hyperscience-frontend-6984bb49c4-g557k 2/2 Running 0 5m19s
hyperscience-hyperoperator-68f8cfcb57-79wvs 1/1 Running 0 5m19s
hyperscience-init-job-kaxsg-5nhwk 0/3 Completed 0 5m14s
trainer-b683d4f1-bmbdq 8/9 Running 22 5m14s