Upgrading¶
Breaking changes and upgrade steps for each OpenDepot release. Check this page before running helm upgrade on an existing installation.
Tip
Helm does not update CRDs during helm upgrade. Always apply the latest CRDs before upgrading:
v0.10.0¶
v0.10.0 enables Valkey ACL authentication and the bundled Dex reverse proxy by default. All existing installations must create a Valkey password Secret. Existing OIDC installations must also review their Dex configuration.
Breaking Changes¶
- Valkey authentication is required outside development mode. The chart rejects
valkey.auth.enabled: falseunlessglobal.developmentMode: true. - A pre-existing Secret is required. The default configuration expects an
opendepot-valkey-authSecret with adefaultkey in the OpenDepot namespace. The chart does not create this Secret. - The Valkey and server Secret names must match. If you use a custom Secret name, set both
valkey.auth.usersExistingSecretandserver.stats.valkeyPasswordSecretNameto that name.
OIDC Default Change¶
server.oidc.dexProxy.enabled now defaults to true. This hardens bundled Dex deployments by proxying /dex/* through the existing server or UI ingress, so Dex no longer requires a separate public ingress or hostname.
This change does not affect installations with OIDC disabled. Existing OIDC installations require action in either of these cases:
- Bundled Dex with an internal or auto-derived issuer: Set
server.oidc.issuerUrlanddex.config.issuerto the same external, path-based URL served by the existing ingress, such ashttps://opendepot.example.com/dex. - External or separately exposed Dex: Set
server.oidc.dexProxy.enabled: false. The bundled proxy cannot target an externally managed issuer.
Provider Upstream Registry Selection¶
v0.10.0 adds spec.providerConfig.upstreamRegistry to Provider resources and spec.providerConfigs[].upstreamRegistry to Depot resources. The field selects the canonical registry used for provider discovery, downloads, Network Mirror identity, and Registry Explorer snippets.
Supported values are:
registry.opentofu.org(default)registry.terraform.io
Existing resources require no changes. When the field is omitted, OpenDepot continues to use registry.opentofu.org, matching the behavior of earlier releases.
Set the field explicitly to mirror a provider from the Terraform Registry:
The provider retains its canonical source address, such as registry.terraform.io/hashicorp/aws. Configure the same hostname in the network_mirror.include and direct.exclude patterns in .tofurc or .terraformrc. See Consuming Providers for complete examples.
Upgrade Steps¶
- Apply the updated CRDs:
- Create the Valkey ACL Secret before running
helm upgrade: - If you use a custom Secret name, add matching references to your values file:
- If OIDC is enabled, choose the appropriate Dex configuration:
Set the same external, path-based issuer URL for the server and Dex:
dex:
enabled: true
config:
issuer: https://opendepot.example.com/dex
server:
oidc:
enabled: true
issuerUrl: https://opendepot.example.com/dex
Expose /dex through the existing server or UI ingress. A separate Dex ingress is no longer required.
- Upgrade the chart:
- Confirm that Valkey and the server are ready:
Warning
Do not disable Valkey authentication in production. global.developmentMode: true permits unauthenticated Valkey only for local development environments.
v0.9.0¶
v0.9.0 adds an opt-in reverse proxy so Dex never needs its own public ingress or hostname. See Proxying Dex Through the Server.
Set server.oidc.dexProxy.enabled: true to have the server reverse-proxy /dex/* requests to the bundled Dex service. This is fully backward compatible — the flag defaults to false, and existing dex.enabled: true deployments with a separately exposed Dex continue to work unchanged.
Upgrade Steps¶
- Apply the updated CRDs:
- Upgrade the chart:
- (Optional) To adopt the recommended proxy mode, set
dex.config.issuerandserver.oidc.issuerUrlto the same external, path-based URL and enableserver.oidc.dexProxy.enabled: true. See Proxying Dex Through the Server for the full walkthrough.
No action is required to keep existing behavior — dexProxy.enabled defaults to false.
v0.8.0¶
v0.8.0 adds automatic README resolution for modules. See Module READMEs and the Registry Explorer README rendering.
New RBAC Permissions¶
The version-controller ServiceAccount now requires configmaps (create, get, list, patch, update, watch) to store resolved READMEs, and the server ServiceAccount now requires configmaps (get, list, watch) to serve them through the browse API. Both rules are added automatically by the Helm chart — no values changes are required. See Kubernetes RBAC.
Upgrade Steps¶
- Apply the updated CRDs:
- Upgrade the chart:
No manual action is required for existing Module and Version resources — the version controller resolves and stores READMEs automatically on each Version's next reconcile, or immediately when forceSync: true is set.
Dependency Updates¶
The UI's vitest dependency was bumped to ^3.2.6, with vite and undici pinned via resolutions, resolving HIGH/CRITICAL npm advisories. This affects the UI's build and test tooling only — no runtime or Helm values changes are required.
v0.6.0¶
v0.6.0 replaces the SQLite download-stats backend with a bundled Valkey instance.
Breaking Changes¶
--stats-db-pathis removed. The server flag no longer exists. Any custom Helm values overrides that referenceserver.stats.*must be removed — the chart will reject unknown values.server.statsvalues block is removed. Removeserver.stats.emptyDir,server.stats.persistence.*, or anyserver.statskey from yourvalues.yamlbefore upgrading.- Stats history is not migrated. Valkey starts with a clean slate — download counts accumulated in the previous SQLite database are not carried over. Historic data can be discarded or archived manually before upgrading.
Upgrade Steps¶
- Apply the updated CRDs:
- Remove any
server.statskeys from yourvalues.yaml. - Upgrade the chart:
Valkey is deployed automatically as part of the chart. Download tracking resumes immediately after the server pod becomes ready. For production clusters, valkey.dataStorage.enabled: true (the default) ensures stats survive pod restarts — no additional configuration is required.
v0.5.0¶
Breaking Changes¶
| Change | Affected field | Action required |
|---|---|---|
Provider.status.sourceScans removed; per-version provider source scans moved to Version.status.sourceScan | ProviderStatus, VersionStatus | Update any automation or scripts that read .status.sourceScans on a Provider resource. Provider source scan results are now stored on each Version resource in status.sourceScan, alongside module IaC scan results. |
Provider.status.resolvedSourceRepository added (read-only, string) | ProviderStatus | No action required. The field is populated automatically by the Version controller after the first scan. |
Upgrade Steps¶
- Apply the updated CRDs:
- Update any scripts or automation reading
Provider.status.sourceScansto readVersion.status.sourceScaninstead. - Upgrade the chart: