3.25 Releases
Convox 3.25 upgrades Kubernetes to 1.35 across all providers. Later patch releases add stateful services with per-replica persistent volumes, per-app instance cost tracking on Azure, Karpenter NodeOverlays, GCP node pools with GPU and Cloud TPU support, multi-arch App image builds, and network isolation between App namespaces on AWS.
3.25.0
Released: 2026-07-08
Updates
- Upgraded Kubernetes to v1.35 across all providers (EKS, GKE, AKS, DOKS)
- Updated kube-proxy to v1.35.3
- Updated VPC CNI to v1.22.3
- Updated CoreDNS to v1.14.3
- Updated EBS CSI Driver to v1.62.0
- Updated EFS CSI Driver to v3.3.0
- Updated Cluster Autoscaler to v1.35.0
3.25.1
Released: 2026-07-17
Feature Additions
- Added per-app instance cost tracking for Azure Racks through the new
cost_tracking_enablerack parameter, which powersconvox costbreakdowns and monthly budget caps - Added the
karpenter_node_overlays_configrack parameter for creating Karpenter NodeOverlays, which advertise extended resources such asnvidia.com/gpuon fractional-GPU instance families or adjust the prices Karpenter uses in its cost model - Added six optional
convox runflags for per-invocation pod customization:--termination-grace,--annotations,--labels,--use-service-lifecycle,--node-affinity, and--tolerations - Added a CLI preflight check on
convox build,convox deploy, andconvox testthat flags a Build which would drop environment variables set in the running Release. See build
Updates
- Updated the Karpenter chart from 1.10.0 to 1.13.1, adding Kubernetes 1.35 and 1.36 support. Racks with Karpenter enabled may see a one-time gradual node replacement after this update, bounded by
karpenter_disruption_budget_nodes - Refreshed the AWS and Azure instance price tables used by cost tracking, with AWS prices at current us-east-1 Linux on-demand list prices
- Run and Timer pods now honor the Service's
termination.gracesetting fromconvox.yml, matching the behavior of Service deployments
Fixes
- Renewed Let's Encrypt certificates now propagate automatically from the Rack namespace to App namespaces, so Services referencing a certificate through the
certificate:option always serve the current one. See SSL
3.25.2
Released: 2026-07-21
Updates
- The environment drop guard added in 3.25.1 now warns and continues instead of blocking, with
CONVOX_ENV_DROP_GUARD=strictto restore the blocking behavior. This ships in theconvoxCLI, so it arrives with a CLI update rather than withconvox rack update. See build
3.25.3
Released: 2026-07-26
Feature Additions
- Added the
additional_node_groups_configrack parameter to GCP Racks, using the same JSON format as Azure - Added GPU node pools on GCP through the
gpu_typeandgpu_countfields ofadditional_node_groups_config - Added single-host Cloud TPU node pools on GCP through the
tpu_topologyfield ofadditional_node_groups_config - Added the
gpu_observability_enable,gpu_observability_chart_version, anddcgm_scrape_intervalrack parameters to GCP Racks, which install the NVIDIA DCGM exporter and its Grafana dashboards - GCP nodes in the
g2,a2,a3,a4,a4x, andg4machine families now receive theconvox.io/gpu-vendorlabel - Added the
cloudwatch_disablerack parameter for AWS, which stops the Rack creating, writing, and reading its own CloudWatch log groups - Added the
karpenter_build_disruption_budget_nodesrack parameter for AWS, default100%, which sets theEmptydisruption budget on the Karpenter build NodePool so idle build nodes are reclaimed promptly - Added multi-arch App image builds on AWS Racks with Karpenter enabled whose workload architectures span both
amd64andarm64 - The
BuildArchApp parameter is now accepted by the Rack, pinning an App's Builds toamd64orarm64
Updates
- AWS additional node groups and build groups are now created before the old group is destroyed, and editing only a group's
tagsno longer forces a replacement. See additional_node_groups_config - Raising
min_sizeon an AWS additional node group now scales the live EKS group up beforeterraform applyruns, so the apply no longer fails when the requested minimum exceeds the group's current desired size. See additional_node_groups_config - Convox-owned Helm releases left pending by an interrupted apply are now cleared before the next
terraform applyon AWS Racks, so a Rack does not stay stuck behind a stranded release lock. See Troubleshooting - The
zonesfield ofadditional_node_groups_configis now preserved by the CLI, which previously dropped it before the value reached Terraform. See additional_node_groups_config karpenter_disruption_budget_nodes,karpenter_build_disruption_budget_nodes, and thedisruption_budget_nodesfield ofadditional_karpenter_nodepools_confignow reject percentages above 100capacity_typeinsideadditional_node_groups_configis now validated per provider: AWS acceptsON_DEMANDandSPOT, while Azure and the other providers additionally acceptRegularandSpot- Duplicate
idvalues inadditional_node_groups_configandadditional_build_groups_configare now rejected instead of colliding on the Terraformfor_eachkey convox rack params setnow rejects Karpenter instance family lists that cannot satisfy the Rack's architectureconvox rack params setnow warns whencloudwatch_disableandfluentd_disableare set inconsistently on AWS- Upgraded the build toolchain to Go 1.25.12 and refreshed
golang.org/x/textto 0.39.0,golang.org/x/cryptoto 0.53.0, andgo-jose/go-joseto 4.1.4 - Build source packaging and
.dockerignorematching now usemoby/go-archiveandmoby/patternmatcher, which removes thedocker/docker,moby/buildkit,containerd, andruncdependencies from theconvoxbinary and changes how nested exclude and re-include patterns are matched. This ships in the CLI. See .dockerignore
Fixes
- Fixed
convox rack install metalfailing atterraform validate, caused by the metal router module using thekey_algorithmargument removed in version 4 of the TLS provider without declaring the provider convox builds exportandconvox builds importnow copy every platform in an image manifest instead of only the default one, so exporting and re-importing a multi-arch Build preserves all architectures- A failed image push during
convox builds importnow fails the import instead of being reported as success
3.25.4
Released: 2026-08-13
Feature Additions
- Added opt-in stateful Services, rendered as StatefulSets with a stable identity and a per-replica persistent volume
- Added the
spreadAcrossZonesService attribute, which spreads a Service's pods across availability zones and nodes - Added the
network_policy_enablerack parameter for AWS Racks, which restricts inbound connections to an App's pods - Added the
health.grpcServiceService attribute, which selects the gRPC health service name checked by the readiness probe
Updates
- Deploys,
convox run --node-labels, and theBuildLabelsApp parameter now fail immediately when they target a Karpenter node pool the Rack does not have convox rack params setnow requires--forcebefore a change drops a node pool, node group, or build group from a Rack
Fixes
health.disableis now honored on gRPC Services- A liveness probe configured with
liveness.pathnow renders as configured on a non-gRPC Service that also setsgrpcHealthEnabled: trueandhealth.disable: true
See Also
- Releases for the full release history
- Volumes for stateful Services and per-replica persistent volumes
- network_policy_enable for restricting inbound connections to App pods
- Health Checks for gRPC health checks, including
health.grpcService - Karpenter for Karpenter configuration, node pool validation, NodeOverlays, and architecture selection
- cost_tracking_enable, Cost Tracking, and Budget Caps for the cost and budget surface
- run for the pod customization flags
- build for the environment drop guard
- SSL for certificate renewal propagation
- additional_node_groups_config for GCP node pools, including GPU and Cloud TPU pools
- gpu_observability_enable and Monitoring for GPU observability
- cloudwatch_disable and fluentd_disable for routing Rack and App logs away from CloudWatch
- additional_node_groups_config and additional_build_groups_config for AWS node groups
- BuildArch and Workload Placement for build architecture and node placement