Changelog
The vpctl command-line tool release history, including new features, fixes, and breaking changes.
Read time 7 minutesLast updated a day ago
This changelog records vpctl release notes from an operator's perspective: new commands, new flags, behavior changes, and breaking changes. This changelog doesn't include internal refactors.
[0.11.0] - 2026-06-03
Version 0.14.0 — June 3, 2026
Security
- Rebuilt with Go 1.26.4 (previously 1.26.3) to address two standard library CVEs that affect :
vpctl- Fixed a vulnerability that could include unescaped input in error messages during CUE and YAML manifest parsing.
net/textproto - Fixed a issue that could cause inefficient hostname parsing during TLS verification for Helm and OCI registry operations.
crypto/x509
- Fixed a
- Updated to version
golang.org/x/netto fix an0.55.0Punycode validation vulnerability during manifest validation.idna - These updates improve the toolchain and dependencies without changing behavior.
vpctl
Added
- The manifest field lets you select an image variant, such as
configuration.imageVariant, during chart generation. If an image doesn't support the requested variant,hardenednow fails instead of generating incorrect image tags.vpctl release generate - The manifest field lets you deploy Garage, PostgreSQL (Percona), MongoDB (Percona), Elasticsearch (ECK), and RabbitMQ as single-replica deployments. Set this Boolean value to
configuration.infrastructure.singleNodeto disable PodDisruptionBudgets and remove hard anti-affinity rules. Use this option only for test or evaluation clusters, not for production.true - The flag lets you deploy independent charts within the same deployment wave in parallel. The default value is
release deploy --concurrency, which preserves sequential deployment. You can set1in the manifest to change the default, and the command-line flag overrides the manifest value. If the concurrency value is greater thandeployment.helm.concurrency,1buffers each chart's Helm output and displays it after the chart finishes.vpctl - Per-wave and end-of-deploy summary lines, for example, are now emitted on every non-dry-run deploy, regardless of the concurrency setting.
Wave N complete: X total, Y succeeded, Z failed - The manifest field lets you assign fixed Kubernetes node ports for the
configuration.networking.ingress.traefik.nodePortsandwebTraefik entry points. Each port must be within thewebsecurerange. Omit this field to let Kubernetes assign node ports automatically.30000-32767 - The option reads the registry password from standard input. This is the recommended authentication method for automation.
vpctl configure set --password-stdin - The and
VPCTL_USERNAMEenvironment variables provide non-interactive credentials toVPCTL_PASSWORD. Credential precedence is command-line flag, environment variable, then interactive prompt.vpctl configure set - The secret schema field enforces a minimum secret length.
minLengthnow prompts for a longer value in interactive mode or exits with an error in non-interactive mode if the value is too short. You can't combinevpctl secret generatewithminLength, and generated secrets must use adefaultvalue that is at least equal tolength.minLength
Changed
- now requires a file path. The
secret generate --persistshortcut no longer defaults to--persist. To preserve the previous behavior, usesecrets.import.yaml.--persist secrets.import.yaml - now displays a warning if you use the
vpctl configure setcommand-line option because the password is visible in your shell history and the process list. The option remains available for backward compatibility. Use--passwordor--password-stdininstead. If you don't provide credentials and standard input isn't connected to a terminal, the command exits with an error instead of waiting indefinitely.VPCTL_PASSWORD
Fixed
- now applies the
vpctl artifact syncvalue when it mirrors Docker images, which matches the behavior ofconfiguration.imageVariant. Previously,vpctl release generatemirrored the base image tags while chart generation referenced variant-specific tags, such asartifact sync. This mismatch could causeasset-front-end:1.0.342-hardenederrors when you setImagePullBackOff.imageVariant: hardened - now correctly writes secrets to the specified file. Previously, the command ignored the provided file path and always wrote to
secret generate --persist <file>, which could overwrite the existing import file.secrets.import.yaml
[0.10.0] - 2026-05-12
Security
- Rebuilt with Go 1.26.3 (previously 1.25.x) to pick up four standard-library CVE fixes that were reachable from vpctl: two escaper bypasses used by CUE schema validation, a
html/templateNUL-byte panic on Windows used by OCI registry pulls, and an HTTP/2net.Dialerinfinite loop used by every outbound HTTP call. TheSETTINGS_MAX_FRAME_SIZEdependency is bumped to v0.53.0.golang.org/x/net
Added
- New optional manifest field. Reference a pre-existing Kubernetes Secret (single key
configuration.networking.trustedCaSecretName, PEM-encoded CA chain) to make the .NET workflow containers (StorageTool) trust an internally-signed ingress certificate. Required for environments where the ingress TLS isn't chained to a publicly-trusted CA. The CA bundle is also mounted into the Pixyz Argo workflow templates (ca-bundle.crt,asset-manager-glb-preview,asset-manager-metadata-extraction,asset-manager-optimize-and-convert) for defensive coverage of any future outbound HTTPS calls from those containers.asset-manager-thumbnail-generator - flag (default
release deploy --timeout): per-release timeout passed to10mwhen waiting.helm - flag (default
release deploy --retries): number of additional attempts after a failed0orhelm upgrade --install. Helps with the "CRDs not yet visible on first attempt" race that sometimes resolves on a second attempt.helm template | kubectl apply - flag (default
release deploy --retry-delay): sleep between retry attempts.5s - support in the secret schema: generates
keyType: hexhex characters (lowercaselength–a/f–0) from9for cryptographic secrets that require pure hex (for example, the Garagecrypto/rand). Therpc_secretfield is required and must be even.length
Changed
- Breaking: now defaults to
release deploy --wait(wastrue). Each Helm release is waited on before vpctl moves to the next chart, with the new default 10-minute per-release timeout. Passfalseto restore the previous fire-and-forget behavior.--wait=false - Breaking: the manifest field under
rustfs:is replaced byconfiguration.infrastructure.components, which exposesgarage:(standard CPU and memory requests and limits),resources,metaStorage,dataStorage, andreplicas(capped at 3). The on-premises release package'sreplicationFactorcompatibility.yamlis bumped tominVpctlVersionin the same release, so you must upgrade vpctl to0.10.0before you can deploy on-premises release0.10.0or later.0.13.0 - Remote Helm charts now resolve their source registry from
manifest.yaml, the same way Docker images and ORAS artifacts already do, instead of a per-chart URL.artifactSync.sourceRepository - The helper in chart values now recurses through nested map levels, so paths like
_arrayMergemerge into_arrayMerge.backups.pgbackrest.repos.0.X. Top-level array behavior is unchanged.backups.pgbackrest.repos[0].X
[0.9.0] - 2026-04-24
Added
- flag: saves generated values to a file (default:
secret generate --persist [path]) and auto-loads it on subsequent runs so values are reused without regeneration.secrets.import.yaml - support in the secret schema: auto-generates a self-signed CA certificate (RSA 4096-bit, 10-year validity period) when no value is provided, so you don't need to manually supply a CA certificate for non-interactive generation.
keyType: ca-cert - Alphanumeric-only validation for generated password fields, to prevent special characters, for example, ,
@, from breaking connection strings. This applies to both auto-generated and user-provided values. Set!in the secret schema to opt out for fields that are not used in connection strings.alphanumeric: false - manifest setting (
deployment.helmChartModeor"local", defaults to"remote"): choose between local charts from the release package or remote OCI charts. Existing manifests without this field continue using local charts."local" - subcommand to sync OCI Helm charts between registries (mirrors remote charts for air-gapped deployments).
vpctl artifact sync charts - Remote chart support across the and
release generatepaths, including multi-source ArgoCDrelease deploy --format helmgeneration (OCI chart source + Git values reference).Application - Image and chart references in rendered output are rewritten to your target registry during generation (air-gapped deployments).
Fixed
- now re-prompts on invalid input in interactive mode instead of aborting the entire session.
secret generate - export now correctly base64-encodes fields with
secret generate(e.g. licenses), so reimporting preserves the original values instead of corrupting them.encoding: "base64" - interactive input for
secret generatefields (licenses) now uses a multi-line reader, so pasted multiline base64 content works correctly.encoding: "base64"
Changed
- now writes a
secret generate --use-defaultsplaceholder for required fields with no default and no auto-generate option, instead of stopping execution. A warning is logged for each such field so you know to replace them before deploying.TBD - Sync recap now lists the specific images and artifacts that failed instead of only showing a count.
[0.8.0] - 2026-03-17
Added
- support in
oras_artifactsfor tracking OCI artifact versions alongside Docker images.versions.yaml - subcommand for syncing Docker images between registries.
vpctl artifact sync images - subcommand for syncing ORAS artifacts between registries.
vpctl artifact sync oras - subcommand: verifies registry authentication by syncing one Docker image and one ORAS artifact, and provides troubleshooting hints if the command fails
vpctl artifact sync preflight
Changed
- Breaking: renamed to
vpctl image sync/vpctl artifact sync images. Update any CI scripts that invoke the old command.vpctl artifact sync oras - Breaking: Manifest field renamed to
imageSync. Update yourartifactSync.manifest.yaml - Breaking: flag removed from
--skip-login. Authenticate to source and target registries withartifact sync imagesbefore running the sync.docker login
[0.7.0] - 2026-03-13
Added
- command to interactively create a new
vpctl manifest init(replacesmanifest.yaml).vpctl release init - command to validate an existing manifest against the embedded CUE schema.
vpctl manifest validate - command to display the CUE schema and export it for standalone
vpctl manifest schemavalidation.cue vet - Manifest validation errors are now more precise: schema constraints, defaults, and cross-field rules are defined in CUE and embedded in the binary. now validates manifests automatically during loading.
LoadManifest - manifest configuration for X509 client certificate authentication.
authentication.x509 - field on the RustFS infrastructure component to size the log volume PVC independently of data storage.
logStorage - manifest field to control the maximum number of concurrent transformation workflows in Argo Workflows (default: 20).
configuration.transformations.parallelism - field in the secret schema to enforce exact value length validation.
exactLength
Deprecated
- is deprecated; use
vpctl release initinstead.vpctl manifest init
Removed
- Breaking: manifest section (
configuration.licensingandFlexLM) removed. Parallelism is now controlled bysdkLicenses.configuration.transformations.parallelism
[0.6.0] - 2026-03-03
Added
- Version compatibility check: and
release generatenow verify that vpctl satisfies the minimum version required by the release package (secret generate). The command blocks execution and displays a clear upgrade message when vpctl is too old. Usecompatibility.yamlto bypass. Dev builds and RC versions are handled gracefully.--skip-version-check - flag: processes multiple images in parallel using a worker pool (default: 1 = sequential).
image sync --concurrency
Fixed
- no longer prints an irrelevant manifest-not-found warning.
vpctl version
[0.5.0] - 2026-02-23
Added
- manifest section with sizing profiles (
infrastructure,small,medium) and per-component resource overrides for MongoDB, PostgreSQL, RabbitMQ, object storage, and Elasticsearch.large - flag: checks if each image already exists on the target registry (via
image sync --skip-existing) and skips it, to avoid redundant pull an push cycles.docker manifest inspect - flag: removes local images (
image sync --cleanup) after each successful push, to free disk space on CI runners and local machines.docker rmi
[0.4.0]
Added
- manifest section to enable or disable Loki + Alloy log collection.
monitoring.logCollection - manifest section for ArgoCD deployment defaults (
deployment.argocd,repoURL,pathPrefix,destinationServer). CLI flags take precedence over manifest values when you provide both.targetRevision
Changed
- Breaking: Manifest field renamed to
docker.images.sourceRepository.imageSync.sourceRepository
[0.3.1]
Added
- Service mesh configuration in the manifest.
Changed
- Traefik configuration moved under the manifest section.
ingress
[0.3.0]
Added
- ArgoCD app-of-apps chart generation support ().
release generate --format argocd - command to initialize a new manifest file.
release init - command to uninstall a release.
release uninstall - RSA private key generation in the secret schema.
- flag on
--name,image sync, andrelease generateto filter to a single chart or image.release deploy - flag on
--dry-runandrelease deploy.image sync - Default storage class configuration for Kubernetes storage in the manifest.
- Network configuration in the manifest.
Changed
- now extracts to
release pullby default. Use./extracted-releaseto skip extraction; use--skip-extractto specify a custom extraction directory. Replaces the previous--extract-dirflag.--extract - Breaking: and
release deploynow execute by default. Useimage syncto preview commands. Previously they printed commands without executing.--dry-run - is now a no-op when the target registry is unset or equals the source registry (
image sync).uccmpprivatecloud.azurecr.io - Traefik configuration simplified to set up a service with annotations.
LoadBalancer
[0.2.0]
No customer-facing changes. (Internal updates to the secret-template format.)[0.1.0]
Added
- Initial release of the vpctl CLI tool.
- Application management commands: download, generate, and deploy.
- Manifest file support with automatic discovery, searched upward from CWD.
- Secret management commands: generate.
- Configuration management commands: view, set, and delete.
- command.
version