Skip to main content

Upgrading a Validator

How to perform an upgrade on a validator

Helm Chart details:

Validator chart version: 0.6.11

Operators must install exactly this version, not the latest version published to the Helm repository.


warning

Upgrading from a chart older than 0.6.0: As of ChartVersion 0.6.0, the tor-controller and its associated CRDs have been removed from the chart. The chart upgrade will automatically remove tor-related pods, services, and secrets that were previously managed by Helm. After upgrading, remove any remaining tor resources manually:

# Remove the onionservice resource (if present)
kubectl delete onionservice ghost -n $FEED_NAME --ignore-not-found

# If the tor-controller namespace was deployed, remove it
kubectl delete namespace tor-controller-system --ignore-not-found

# Remove all CRD's IF NOT USED BY OTHER APPS
kubectl delete -f https://raw.githubusercontent.com/chronicleprotocol/charts/validator-0.3.24/charts/validator/crds/tor-controller.yaml --ignore-not-found

Sample config:

global:
logLevel: "warn"

ghost:
ethConfig:
ethFrom:
existingSecret: '<somesecret>'
key: "ethFrom"
ethKeys:
existingSecret: '<somesecret>'
key: "ethKeyStore"
ethPass:
existingSecret: '<somesecret>'
key: "ethPass"
ethRpcUrl: "https://MY_L1_RPC_URL"
rpcUrl: "https://MY_L1_RPC_URL"
env:
normal:
CFG_LIBP2P_EXTERNAL_ADDR: '/ip4/1.2.3.4' # public/reachable ip address of node. If DNS hostname set to `/dns/my.validator.com`

vao:
env:
normal:
CFG_LIBP2P_EXTERNAL_ADDR: '/ip4/1.2.3.4' # public/reachable ip address of node. If DNS hostname set to `/dns/my.validator.com`
Upgrading manually (helm upgrade)

Upgrading manually (helm upgrade)​

If you are upgrading between patch releases of the chart, simply updating the chart version will suffice:

ssh <SERVER_IP>
su - <FEED_USERNAME>
export FEED_NAME=my-feed

Prepare values​

The values.yaml file is used to configure the validator. The file is generated by the install script, and should be updated to match the chart version pinned on this page (0.6.11).

With chart version 0.6.11, there are a few changes that need to be made to the values.yaml / generated-values.yaml file:

Please structure your helm values like this:

global:
logLevel: "warn"
ghost:
ethConfig:
ethFrom:
existingSecret: '<somesecret>'
key: "ethFrom"
ethKeys:
existingSecret: '<somesecret>'
key: "ethKeyStore"
ethPass:
existingSecret: '<somesecret>'
key: "ethPass"
ethRpcUrl: "https://MY_L1_RPC_URL"
rpcUrl: "https://MY_L1_RPC_URL"
env:
normal:
CFG_LIBP2P_EXTERNAL_ADDR: '/ip4/1.2.3.4' # public/reachable ip address of node

vao:
env:
normal:
CFG_LIBP2P_EXTERNAL_ADDR: '/ip4/1.2.3.4' # public/reachable ip address of node

danger

Please ensure your values yaml file is updated to reflect the requirements of validator chart version 0.6.11, with the correct values for ethConfig and rpcUrl.

helm repo update
helm upgrade $FEED_NAME -n $FEED_NAME -f $HOME/$FEED_NAME/generated-values.yaml chronicle/validator --version 0.6.11
Upgrading using the helper script (upgrade.sh)

Upgrading using upgrade.sh​

To simplify the upgrade process, we have created a helper script that will upgrade your validator to the chart version pinned on this page (0.6.11).

This script will attempt to run helm upgrade <feedname> -n <feedname> chronicle/validator --version 0.6.11 on your feed release, with any updated input variables.

caution

Please use the correct FEED_NAME, which should be the same as your helm release name, if deployed using the install.sh script previously

ssh <SERVER_IP>
su - <FEED_USERNAME>
export FEED_NAME=my-feed

Download upgrade.sh​

Get the upgrade.sh script pinned to a fixed commit. It upgrades to chart version 0.6.11:

wget -N https://raw.githubusercontent.com/chronicleprotocol/scripts/5e1970c5a1dc476ba9c1d0db7b8cbf5659e92876/feeds/k3s-install/upgrade.sh
chmod a+x upgrade.sh
./upgrade.sh
You can set the expected variables in the .env file, or export them as environment variables. If the script fails to find any of these values, it will prompt you for them when running the script.

tip

If kubectl/helm commands fail, please ensure you have $KUBECONFIG set correctly. Take a look here for more detail

Verify the helm release and version​

Verify the chart version has changed and matches the chart version pinned on this page (0.6.11):

helm list -n $FEED_NAME
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
validator demo 1 2025-08-26 12:56:31.070821 -0300 -03 deployed validator-0.6.11 0.78.5

View all resources created in the namespace​

kubectl get pods,deployment,service,secrets -n $FEED_NAME
NAME READY STATUS RESTARTS AGE
pod/ghost-5c4cfb47bf-wvsvf 1/1 Running 0 14s
pod/ghost-vao-79d77454c7-l5qch 1/1 Running 0 14s

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ghost 1/1 1 1 14s
deployment.apps/ghost-vao 1/1 1 1 14s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ghost ClusterIP 10.43.109.192 <none> 8000/TCP,8080/TCP 14s
service/ghost-vao ClusterIP 10.43.44.21 <none> 8001/TCP 14s
service/kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 287d

NAME TYPE DATA AGE
secret/somesecretname-eth-keys Opaque 3 30s
secret/sh.helm.release.v1.my-validator.v1 helm.sh/release.v1 1 14s

View pod logs:​

kubectl logs -n demo deployment/ghost
kubectl logs -n demo deployment/ghost-vao

and you're done!

warning

If you encounter any issues please refer to the Trouble Shooting docs