Maintenance and Upgrades
This page explains how to maintain an existing AI Cockpit: Smart Engineering on-premise deployment after the initial installation.
The most common operational tasks are:
- applying a new chart version
- updating the application image version
- rotating certificates and ingress settings
- validating storage, database, and queue health
- preparing backups before changes
- rolling back when an upgrade fails
Before applying changes
Before you update the deployment, confirm:
- the cluster is healthy
- PostgreSQL and Valkey are running normally
- the current release name and namespace are known
- the current
values.yamlfile is available - you have a recent backup of the database
Useful commands:
kubectl get pods -n aic-modernization
kubectl get jobs -n aic-modernization
helm list -n aic-modernization
helm get values aic-modernization -n aic-modernization
Keep the values file under change control
Do not rely only on the original install command from AWS Marketplace.
Keep the effective deployment values in version control so you can:
- review what changed between releases
- reproduce the environment
- compare current and target configuration
- roll back more safely
If needed, export the current values before an upgrade:
helm get values aic-modernization -n aic-modernization -o yaml > current-values.yaml
Upgrading the deployment
When a new chart or product version is available, update the deployment with helm upgrade.
Example:
helm upgrade aic-modernization \
oci://709825985650.dkr.ecr.us-east-1.amazonaws.com/compass-uol/ai-cockpit/smart-engineering-chart/aic-modernization \
--version <new-chart-version> \
--namespace aic-modernization \
-f values.yaml
For upgrades, the most important decision is how Helm should handle values from the current release.
Reuse the current values
Use --reuse-values when you want to keep the values already stored in the current release and only apply the explicit changes passed in the upgrade command.
Example:
helm upgrade aic-modernization \
oci://709825985650.dkr.ecr.us-east-1.amazonaws.com/compass-uol/ai-cockpit/smart-engineering-chart/aic-modernization \
--version <new-chart-version> \
--namespace aic-modernization \
--reuse-values
This is useful when:
- the release already has the correct runtime configuration
- you only want to change the chart version
- you want to minimize accidental value drift during an upgrade
Reset to chart defaults
Use --reset-values when you want Helm to ignore the stored release values and start again from the target chart defaults plus the values you pass in the command.
Example:
helm upgrade aic-modernization \
oci://709825985650.dkr.ecr.us-east-1.amazonaws.com/compass-uol/ai-cockpit/smart-engineering-chart/aic-modernization \
--version <new-chart-version> \
--namespace aic-modernization \
--reset-values \
-f values.yaml
This is useful when:
- you want the release to match a reviewed
values.yamlexactly - older stored values may no longer be valid
- you are standardizing the environment after several manual changes
Which approach to choose
As a rule:
- use
--reuse-valuesfor small and low-risk upgrades - use
--reset-valuestogether with a reviewedvalues.yamlfor controlled configuration changes or major version transitions
What happens during an upgrade
During helm upgrade, the chart may update:
- application deployments
- image tags
- runtime configuration
- ingress configuration
- gateway configuration
- PostgreSQL or Valkey settings
The chart also runs a migration job after install and upgrade.
After the upgrade, verify:
kubectl get pods -n aic-modernization
kubectl get jobs -n aic-modernization
kubectl logs job/aic-modernization-migrate -n aic-modernization
Validate the application after an upgrade
After applying an update, validate:
- API health
- gateway health, if enabled
- frontend access
- S3 upload flow
- Bedrock access
- background task execution
Recommended checks:
kubectl port-forward svc/aic-modernization-api -n aic-modernization 3000:3000
curl http://localhost:3000/health
curl http://localhost:3000/config/runtime
If the gateway is enabled:
kubectl port-forward svc/aic-modernization-gateway -n aic-modernization 8080:8080
curl http://localhost:8080/health
Backups and data protection
Before changing chart versions, image versions, database settings, or storage settings, take a backup of the PostgreSQL database.
At minimum, maintain:
- regular PostgreSQL backups
- persistent volume snapshot procedures, if your storage platform supports them
- a copy of the current
values.yaml
If you are using external PostgreSQL or external Valkey services, follow the backup policy for those managed services.
Do not treat Helm alone as a backup strategy. Helm stores release state, but it does not replace database backups.
Rolling back
If an upgrade fails and the new version should not remain in production, check the release history:
helm history aic-modernization -n aic-modernization
Then roll back to the previous known-good revision:
helm rollback aic-modernization <revision> -n aic-modernization
After rollback, validate the same health and runtime endpoints again.
If the failure included a partial database migration, review the migration logs before retrying another upgrade.
Common maintenance tasks
Rotating ingress certificates
If the TLS certificate changes:
- update the Kubernetes TLS secret used by ingress
- confirm the ingress still references the correct secret name
- validate the frontend, API, and gateway hosts after the change
Updating allowed origins
If the browser origin changes, update:
runtime.commonEnv.ALLOWED_ORIGINSgateway.env.CORS_ALLOW_ORIGINS, if the gateway is exposed directly
Apply the change with helm upgrade.
Changing S3 encryption settings
If the target S3 bucket policy changes:
- keep
S3_UPLOAD_SERVER_SIDE_ENCRYPTION=AES256for the default S3-managed encryption path - switch to
aws:kmsonly if the bucket requires KMS and the runtime IAM role can use the KMS key
Updating Bedrock models
If you change models, update:
bedrock.modelIdbedrock.modelIdSmall
Then validate that:
- the target model IDs are available in the buyer account
- the runtime IAM role can invoke those models
Operational troubleshooting checklist
If the system is unhealthy after an update, check:
- pod restart loops
- failed migration jobs
- ingress misconfiguration
- service account or IRSA changes
- S3 permission changes
- Bedrock model access changes
- database connection secret changes
- Valkey connectivity issues
Useful commands:
kubectl describe pod <pod-name> -n aic-modernization
kubectl logs deployment/aic-modernization-api -n aic-modernization --tail=200
kubectl logs deployment/aic-modernization-worker -n aic-modernization --tail=200
kubectl logs deployment/aic-modernization-gateway -n aic-modernization --tail=200
Recommended maintenance routine
A practical maintenance routine is:
- Export the current Helm values
- Confirm backups are current
- Review the target chart version and configuration changes
- Run
helm upgrade - Check the migration job
- Validate
/healthand/config/runtime - Run a small end-to-end documentation task
This keeps upgrades predictable and makes rollback simpler when something changes unexpectedly.