Upgrade Guide
This guide covers upgrading the Frappe Operator to v5.2.0.
Table of Contents
General Upgrade Process
Pre-Upgrade Checklist
- Backup your Custom Resources
# Backup all FrappeSite and FrappeBench definitions kubectl get frappesites -A -o yaml > frappesites-backup.yaml kubectl get frappebenches -A -o yaml > frappebenches-backup.yaml - Check current operator version
kubectl get deployment frappe-operator-controller-manager -n frappe-operator-system \ -o jsonpath='{.spec.template.spec.containers[0].image}' - Review Changelog
- Review CHANGELOG.md for breaking changes and release highlights.
Upgrade Methods
Method 1: Helm Upgrade (Recommended)
# Update Helm repository
helm repo add frappe-operator https://vyogotech.github.io/frappe-operator/helm-repo
helm repo update
# Dry-run to inspect changes
helm upgrade frappe-operator frappe-operator/frappe-operator \
--namespace frappe-operator-system \
--version 5.2.0 \
--dry-run
# Perform upgrade
helm upgrade frappe-operator frappe-operator/frappe-operator \
--namespace frappe-operator-system \
--version 5.2.0 \
--wait
Method 2: Direct Manifest Upgrade
kubectl apply -f https://github.com/vyogotech/frappe-operator/releases/latest/download/install.yaml --server-side --force-conflicts
Post-Upgrade Verification
- Verify controller manager health
kubectl get pods -n frappe-operator-system kubectl logs -n frappe-operator-system deployment/frappe-operator-controller-manager --tail=50 - Verify CRD registration
kubectl get crd | grep vyogo.tech - Verify site reconciliation
kubectl get frappesites -A kubectl get frappebenches -A
Upgrading to v5.2.0
Key Changes & Migration Notes
- Polymorphic Database Architecture:
- The operator now supports PostgreSQL alongside MariaDB.
- For dedicated PostgreSQL sites, the default engine is
stackgres(SGCluster). If you are running existing Percona clusters, the operator automatically detects them and preserves management via Percona. - Once provisioned,
dbConfig.postgresEngineis immutable.
- HTTPS-Only Ingress Enforcement:
- Sites and custom domains now mandate TLS. Ingress resources automatically configure
spec.tls(defaulting to<site-name>-tls) and setssl-redirect: "true". - On OpenShift, routes are admitted with
tls.termination: edgeandtls.insecureEdgeTerminationPolicy: Redirect. - The validating webhook rejects any annotations attempting to disable SSL redirection (
ssl-redirect: "false"or"0").
- Sites and custom domains now mandate TLS. Ingress resources automatically configure
- OpenShift
restricted-v2SCC Compliance:- Workloads strictly adhere to
restricted-v2security constraints. - If your bench manifests specify custom security contexts, verify they do not hardcode
fsGroup: 0or privileged root UIDs.
- Workloads strictly adhere to
- Licensing:
- Releases v4.2.0+ are published under the Elastic License 2.0 (ELv2) — free for internal production and self-hosting, commercial license required for managed SaaS hosting. See LICENSING.md.
Rollback Procedures
Helm Rollback
# View release revision history
helm history frappe-operator -n frappe-operator-system
# Roll back to the previous revision
helm rollback frappe-operator -n frappe-operator-system
Troubleshooting
CRD Conflicts During Upgrade
Symptom: metadata.resourceVersion: Invalid value
Resolution: Apply CRDs with server-side apply:
kubectl apply -f https://github.com/vyogotech/frappe-operator/releases/latest/download/install.yaml --server-side --force-conflicts
Webhook Validation Blocking Update
Symptom: failed calling webhook: ...
Resolution: Ensure your updated site manifest has valid apps specified and does not attempt to mutate immutable fields such as dbConfig.postgresEngine.