Upgrades#
Use this page as the operational checklist for a control-system deployment or an OS/K8s maintenance window. The detailed Control System Upgrade guide remains the source of truth for builds, configurations, camera work, Kafka, and exceptional recovery.
An upgrade changes CSC interfaces provided by ts_xml. A full upgrade is a
Cycle release; an incremental upgrade changes a limited, schema-compatible set
of interfaces between Cycle releases. OS/K8s maintenance is not an interface
upgrade, but it requires the same careful shutdown and recovery.
Before you begin#
Confirm the deployment schedule, scope, affected CSCs, and system owners.
Ensure local
k8s-adminandvanwardcheckouts are current.Verify access to the site’s Kubernetes cluster, LOVE, Argo CD, Argo Workflows, Chronograf, and Slack channel.
For a release, confirm configuration changes are merged. For an incremental XML release, confirm schema compatibility.
Announce in the site Slack channel with the appropriate
vanwardhelper:release_announcementfor a full release orincremental_release_announcementfor an incremental release. Announce the day before, one hour before, and at deployment start.Select the site, then follow exactly one checklist below.
BTS uses the Base test stand (manke Kubernetes context). Notify
#base-teststand before starting.
Full upgrade
Shut down the control system in LOVE by running
system_wide_shutdown.pyfrom a ScriptQueue. Bring the Watcher down first and ScriptQueues down last. Verify CSC states and VM heartbeats in LOVE and Chronograf.-
# On auxtel-mcm.ls.lsst.org sudo systemctl stop ats-ocs-bridge.service # On lsstcam-mcm.ls.lsst.org sudo systemctl stop ocs-bridge.service
Drain LOVE-producer and Telegraf consumer lag and clean up deployments. Set the BTS Kubernetes context, run
cleanup_allfromk8s-admin, clean up Nublado if required, and scale Telegraf connectors to zero:./cleanup_all ./cleanup_nublado # only when required kubectl scale deploy -n sasquatch \ --selector app.kubernetes.io/name=sasquatch-telegraf --replicas=0
Coordinate configuration and camera updates with the responsible teams. Use the detailed guide for schema-registry compatibility or camera-stage changes.
In Argo CD, sync LOVE first to start the LOVE producers required for CSCs to appear in LOVE. Then sync
science-platform,nublado, andsasquatchif needed, then telescope applications, starting with a small application.-
sudo systemctl start ats-ocs-bridge.service sudo systemctl start ocs-bridge.service
Confirm CSCs reach
STANDBY(except expected enabled CSCs), restore required enabled CSCs scale Telegraf connectors back to one, and verify EFD ingestion in Chronograf.Run minimal testing for AuxTel and SimonyiTel when applicable. Return each tested telescope to its documented safe end state.
Incremental upgrade
Send the Watcher, every affected CSC, and the ScriptQueues to
OFFLINEwithset_summary_state.pyin LOVE.Set the BTS Kubernetes context and delete jobs only for affected CSCs:
kubectl delete job -n <namespace> -l csc-class=<csc-class>
Update the necessary configuration, then sync LOVE first, followed by the ScriptQueues and affected applications in Argo CD.
Confirm new topics, if any, were created; cycle affected CSCs through their states; and confirm expected topic traffic with no
FAULT.If a telescope CSC changed, verify it can track and take images and that the images are ingested.
OS/K8s maintenance
Bring down the control system as for a full upgrade, including camera bridges, stopped-job cleanup, drained consumer lag, and Telegraf at zero replicas.
From
k8s-admin, run./cleanup_alland then./shutdown_kafka. Monitor the shutdown, tell IT when the system is ready, and wait for maintenance to finish.From
k8s-admin, run./start_kafka. Verify Kafka brokers, controllers, schema registry, and Telegraf are healthy.Sync LOVE first, then telescope namespaces in Argo CD; restart camera bridges; and confirm CSC and EFD health.
Run BTS minimal testing for both telescopes.
TTS uses the Tucson test stand (pillan Kubernetes context). Notify
#tucson-teststand before starting.
Full upgrade
Shut down the control system in LOVE by running
system_wide_shutdown.pyfrom a ScriptQueue. Bring the Watcher down first and ScriptQueues down last. Verify CSC states and VM heartbeats in LOVE and Chronograf.-
# On auxtel-mcm.tu.lsst.org sudo systemctl stop ats-ocs-bridge.service # On comcam-mcm.tu.lsst.org sudo systemctl stop comcam-ocs-bridge.service
Drain LOVE-producer and Telegraf consumer lag and clean up deployments. Set the TTS Kubernetes context, run
./cleanup_allfromk8s-admin, clean up Nublado if required, and scale Telegraf connectors to zero.Coordinate configuration and camera updates with responsible teams. Use the detailed guide for schema-registry compatibility or camera-stage changes.
In Argo CD, sync LOVE first to start the LOVE producers required for CSCs to appear in LOVE. Then sync
science-platform,nublado, andsasquatchif needed, then telescope applications, starting with a small application.-
sudo systemctl start ats-ocs-bridge.service sudo systemctl start comcam-ocs-bridge.service
Confirm CSCs reach expected states, restore required enabled CSCs, scale Telegraf connectors back to one, and verify EFD ingestion.
Perform TTS minimal testing. Current documentation states that neither camera can take images at TTS, so verify tracking only.
Incremental upgrade
Send the Watcher, every affected CSC, and the ScriptQueues to
OFFLINEwithset_summary_state.pyin LOVE.Set the TTS Kubernetes context and delete jobs only for affected CSCs:
kubectl delete job -n <namespace> -l csc-class=<csc-class>
Update the necessary configuration, then sync LOVE first, followed by the ScriptQueues and affected applications in Argo CD.
Confirm new topics, if any, were created; cycle affected CSCs through their states; and confirm expected topic traffic with no
FAULT.If a telescope CSC changed, verify it can track. Do not require imaging until the TTS camera limitation is resolved.
OS/K8s maintenance
Bring down the control system as for a full upgrade, including camera bridges, stopped-job cleanup, drained consumer lag, and Telegraf at zero replicas.
From
k8s-admin, run./cleanup_alland then./shutdown_kafka. Monitor the shutdown, tell IT when the system is ready, and wait for maintenance to finish.From
k8s-admin, run./start_kafka. Verify Kafka brokers, controllers, schema registry, and Telegraf are healthy.Sync LOVE first, then telescope namespaces in Argo CD; restart camera bridges; and confirm CSC and EFD health.
Verify tracking for both TTS telescopes.
The Summit uses the yagan Kubernetes context. Notify
#summit-announce before starting.
Important
Before a full upgrade or OS/K8s maintenance, coordinate with the
hardware teams: M2 must be in closed-loop control, MTM1M3TS must
remain ENABLED, and MTM1M3 must remain DISABLED.
Full upgrade
Shut down the control system in LOVE by running
system_wide_shutdown.pyfrom a ScriptQueue, using the documented Summit exclusions forMTM1M3andMTM1M3TS. Bring the Watcher down first and ScriptQueues down last. Verify CSC states and VM heartbeats in LOVE and Chronograf.Stop the ATCamera and MTCamera bridges. Stop additional Summit bare-metal T&S services as required.
Drain LOVE-producer and Telegraf consumer lag and clean up deployments. Set the Summit Kubernetes context, run
./cleanup_allfromk8s-admin, clean up Nublado if required, and scale Telegraf connectors to zero.Coordinate camera, bare-metal, ESS-controller, and cRIO updates with their owners.
In Argo CD, sync LOVE first to start the LOVE producers required for CSCs to appear in LOVE. Then sync
science-platform,nublado, andsasquatchif needed, then telescope applications, starting with a small application.Start camera and required bare-metal services. Confirm CSCs reach expected states, restore required enabled CSCs, restore Telegraf to one replica, and verify EFD ingestion.
Run minimal testing for affected telescopes, including image-ingest checks where imaging is performed. Return each telescope to its documented safe end state.
Incremental upgrade
Send the Watcher, every affected CSC, and the ScriptQueues to
OFFLINEwithset_summary_state.pyin LOVE.Set the Summit Kubernetes context and delete jobs only for affected CSCs:
kubectl delete job -n <namespace> -l csc-class=<csc-class>
Update the necessary configuration, then sync LOVE first, followed by the ScriptQueues and affected applications in Argo CD.
Confirm new topics, if any, were created; cycle affected CSCs through their states; and confirm expected topic traffic with no
FAULT.If a telescope CSC changed, verify it can track and take images and that the images are ingested.
OS/K8s maintenance
Bring down the control system as for a full upgrade, preserving the M2 and M1M3 states above. Do not shut down Summit ESS controllers for routine OS/K8s work.
From
k8s-admin, run./cleanup_alland then./shutdown_kafka. Monitor the shutdown, notify IT, and wait for maintenance to finish.From
k8s-admin, run./start_kafka. Verify Kafka brokers, controllers, schema registry, and Telegraf are healthy.Sync LOVE first, then telescope namespaces in Argo CD. Start documented Summit cRIO services and restart CSCs on
azar03.cp.lsst.org.Restore Telegraf to one replica, verify CSC and EFD health, and run Summit minimal testing for both telescopes.
Further detail#
Use the detailed deployment activities and its site-specific sections for recovery steps, Kubernetes access, camera coordination, and minimal-test configurations. Report any CSC that cannot be restored promptly in the appropriate site Slack channel before ending the deployment.