Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- In
kubernetes create, allow waiting for cluster and its node-groups to reach running state with--wait=allflag. When using--waitor--wait=cluster, the command will wait only for the cluster to reach running state.
3.26.0 - 2025-11-26
Added
- stack - starter-kit: make object storage publicly available
3.25.0 - 2025-10-24
Added
- stack destroy command for supabase, dokku and starter-kit
- Add devices list to
server showoutput.
Fixed
- In
upctl all purge, if resource deletion fails with HTTP 404 status, consider the resource deleted.
3.24.1 - 2025-10-14
Changed
- starter-kit stack to create also bucket and user for managed object storage
3.24.0 - 2025-10-01
Added
- stack deploy supabase command (Experimental support)
- stack deploy dokku command (Experimental support)
- stack deploy starter-kit command (Experimental support)
3.23.0 - 2025-09-12
Added
- Support certificate-bundle resources in
all listandall purgecommands.
3.22.0 - 2025-08-15
Added
- Object storage service creation with
object-storage createcommand supporting labels, networks, and configured status - Object storage label management with dedicated commands:
object-storage label add,object-storage label remove, andobject-storage label list - Object storage network management with
object-storage network attachandobject-storage network detachcommands - Object storage bucket management with
object-storage bucket create,object-storage bucket delete, andobject-storage bucket listcommands - Object storage user management with
object-storage user create,object-storage user delete, andobject-storage user listcommands - Object storage user access key management with
object-storage create-access-key,object-storage delete-access-key, andobject-storage list-access-keyscommands - Expose GPU limits in
account showcommand - Expose GPU model and amount in
server planscommand - Add
audit-log exportcommand. - Add support for customising storage tier and size for Kubernetes node groups utilising GPU and Cloud Native plans.
3.21.0 - 2025-07-15
Added
- Add
zone devicesandzone devices showcommands for listing available devices.
3.20.2 - 2025-07-09
Changed
- Group GPU plans under a separate section in human readable output of
server planscommand.
Fixed
- Run as non-root user in container.
3.20.1 - 2025-06-09
Fixed
- In database create, parse numeric string values into strings, E.g., Postgres version property will be now correctly parsed as string value.
3.20.0 - 2025-05-26
Added
- Support load-balancer resources in
all listandall purgecommands. - Add
--waitflag toload-balancer deletecommand.
Fixed
- Set exit code to 103 if authentication fails also in commands that do not take arguments (e.g.
server list).
3.19.1 - 2025-04-29
Fixed
- Redact token from debug logs.
3.19.0 - 2025-04-11
Added
- Add
database createcommand. - Support kubernetes, server, server-group, storage, and tag resources in
all listandall purgecommands. - Add
--stopflag toserver deletecommand. - Add
--backupsflag tostorage deletecommand. - Add
--waitflag tokubernetes deletecommand.
Fixed
- When running kubernetes commands, show deprecation message when using
uksalias. The deprecation message is currently displayed when usingk8salias, which will not be removed.
3.18.0 - 2025-04-04
Added
- Experimental support for listing and deleting all resources with
all listandall purgecommands. This initial version supports networks, network-peerings, routers, databases, and object-storages. - Add
--waitflag toobject-storage deletecommand. - Add
--disable-termination-protectionand--waitflags todatabase deletecommand.
Fixed
- Kubernetes node-group subcommand not working
Deprecated
- Deprecated
upctl kubernetes nodegroupcommand, useupctl kubernetes node-groupinstead.
3.17.0 - 2025-03-14
Added
- Server relocation support
3.16.1 - 2025-03-07
Fixed
- Remove client side default value for kubernetes cluster plan and use default from API instead if no plan is defined.
3.16.0 - 2025-03-05
This release introduces GitHub artifact attestations for our release binary assets.
Added
- Experimental support for reading password or token from system keyring.
- Experimental support from saving token to system keyring with
upctl account login --with-token.
Changed
- In human readable output of
kubernetes plans, removeserver_numbercolumn and hide deprecated plans.
3.15.0 - 2025-02-26
Added
- Added support for Valkey properties
- Add termination_protection to upctl database show output
- Experimental support for token authentication by defining token in
UPCLOUD_TOKENenvironment variable. - Experimental support for managing tokens with
account tokencommands. - New command names and aliases added to improve consistency:
- Commands:
- load-balancer
- network-peering
- object-storage
- server-group
- Aliases:
- account: acc
- gateway: gw
- network-peering: np
- object-storage: obs
- partner: pr
- router: rt
- server: srv
- server-group: sg
- storage: st
- Commands:
Changed
- List cloud native plans in their own section in human readable
server plansoutput.
Fixed
- Prevent filename completion of flags that don't take filename args.
Deprecated
- Deprecation of some commands and aliases ( new command names added to improve consistency )
- Deprecated commands:
- loadbalancer
- networkpeering
- objectstorage
- servergroup
- Deprecated aliases:
- object-storage: objsto
- Deprecated commands:
3.14.0 - 2025-01-08
Added
- Allow using unix style glob pattern as an argument. For example, if there are two servers available with titles
server-1andserver-2, these servers can be stopped withupctl server stop server-*command. --delete-bucketsoption toobjectstorage deletecommand.
Fixed
- In
objectstorage deletecommand, delete only user defined policies when--delete-policiesflag is enabled as trying to delete system defined policy will cause an error.
3.13.0 - 2024-12-13
Added
- Partner API support
Changed
- Go version bump to 1.22
3.12.0 - 2024-11-18
Changed
- Take server state into account in server completions. For example, do not offer started servers as completions for
server startcommand. - Allow using UUID prefix as an argument. For example, if there is only one network available that has a UUID starting with
0316, details of that network can be listed withupctl network show 0316command. - Match title and name arguments case-insensitively if the given parameter does not resolve with an exact match.
3.11.1 - 2024-08-12
Fixed
- In
storage modify, avoid segfault if the target storage does not have backup rule in the storage details. This would have happened, for example, when renaming private templates.
3.11.0 - 2024-07-23
Added
- Add labels to
database showoutput. - In
router showcommand, list static routes in the human readable output and add static route type field to all outputs.
3.10.0 - 2024-07-17
Changed
- In
server createcommand, useUbuntu Server 24.04 LTS (Noble Numbat)as default value for--os. The new default template only supports SSH key based authentication. Use--ssh-keysoption to provide the keys when creating a server with the default template. - In
server createcommand, enable metadata service by default when the selected (or default) template uses cloud-init (template_typeiscloud-init) and thus requires it.
3.9.0 - 2024-07-04
Added
- Add
gateway planscommand for listing gateway plans. - Add
objectstorage regionscommand for listing managed object storage regions.
Changed
- In all outputs of
server plans, sort plans by CPU count, memory amount, and storage size. - In human readable output of
server plans, group plans by type.
Fixed
- Omit storage tier from server create payload to use plans default storage tier. This allows creating servers with developer plans that do not allow creating MaxIOPS storages with the server. Other plan types will continue to use MaxIOPS by default.
3.8.1 - 2024-05-24
Changed
- Allow creating Kubernetes cluster without node-groups.
3.8.0 - 2024-04-30
Added
- Add
host listcommand for listing private cloud hosts. - Add
--hostargument toserver restartcommand. - Add
--avoid-hostand--hostarguments toserver startcommand. - Add
Parent zonecolumn tozone listoutput for users that have access to private zones.
Changed
- Go version bump to 1.21
3.7.0 - 2024-04-04
Added
- Add managed object storage name to
showandlistcommand outputs. - Add completions for managed object storages and allow using managed object storage name (in addition to its UUID) as a positional argument.
- Add paging flags (
--limitand--page) todatabase,gateway,loadbalancer, andobjectstoragelist commands
3.6.0 - 2024-03-07
Added
- Support Kubernetes cluster labels: list labels with
showcommands and manage them withcreateandmodifycommands - Add
networkpeeringcommands (delete,disable,list) for network peering management.
3.5.0 - 2024-02-29
Added
- Policies section in
objectstorage showcommand - Optional parameters
--delete-usersand--delete-policiestoobjectstorage delete
Changed
- Users in
objectstorage shownow contain columnARNinstead ofUpdated
3.4.0 - 2024-02-08
Added
- Add
gatewaycommands (delete,list) for network gateway management. - In machine readable outputs of server list, add support for
--show-ip-addressesparameter. - Support for sub-account deletion via
account deletecommand
3.3.0 - 2024-01-23
Added
- Support for storage encryption to storage
create,clone,show, andlistcommands as well as servercreateandshowcommands. - Managed object storages field to human readable output of
account show. - Commands for listing accounts and permissions.
Removed
- From human output of
storage list, Created column. This field is still available in the machine readable outputs.
3.2.2 - 2024-01-02
Added
- Support nested properties in
database properties *anddatabase properties * show *outputs. For example upctlmax_background_workerssub-property oftimescaledbPostgreSQL property is listed astimescaledb.max_background_workersin human output ofdatabase properties pgand its details can printed withupctl database properties pg show timescaledb.max_background_workerscommand.
Fixed
- Do not return error on valid
dhcp-default-routevalues innetwork createandnetwork modifycommands.
3.2.1 - 2023-11-29
Added
- Add backend
TLS configsfield toloadbalancer showcommand
3.2.0 - 2023-11-15
Added
- Add
objectstoragecommands (delete,list,show) for managed object storage management
3.1.0 - 2023-11-06
Added
- Add
network_peerings,ntp_excess_gib,storage_maxiopsandload_balancersfields toaccount showoutputs. - Add
--versionparameter tokubernetes createandversionfield tokubernetes showoutput.
Changed
- Breaking: Update return type of
kubernetes versionsfrom list of strings to list of objects. (No major version bump, because this end-point has not been included in the API docs)
Fixed
- Use correct currency symbol,
€instead of$, in human output ofaccount show. - Remove
vprefix from version inversioncommand output and User-Agent header
3.0.0 - 2023-10-18
This release updates output of show and list commands to return the API response as defined in the UpCloud Go SDK. See below for detailed list of changes.
In addition, kubernetes create will now, by default, block all access to the cluster. To be able to connect to the cluster, define list of allowed IP addresses and/or CIDR blocks or allow access from any IP.
Added
- Breaking: Add
--kubernetes-api-allow-ipargument tokubernetes createcommand. This changes default behavior from allow access from any IP to block access from all IPs. To be able to connect to the cluster, define list of allowed IP addresses and/or CIDR blocks or allow access from any IP. - Add
Kubernetes API allowed IPsfield tokubernetes showoutput. - Add
kubernetes nodegroup showfor displaying node-group details. This also adds Nodes table and Anti-affinity field that were not available in previouskubernetes showoutput. - Add
kubernetes modifycommand for modifying IP addresses that are allowed to access cluster's Kubernetes API. - Add
Kubernetes API allowed IPsfield tokubernetes showoutput. - Add
database session listfor listing active database sessions. - Add
database session cancelfor cancelling an active database session.
Changed
- Breaking: In JSON and YAML output of
database list: return the full API response. Value oftitleis not replaced with value fromname, iftitleis empty. - Breaking: In JSON and YAML output of
database types: return the full API response. This changes the top level datatype from list to object, where keys are the available database type, e.g.,pgandmysql. - Breaking: In JSON and YAML output of
ip-address list: return the full API response. This changespartofplankey topart_of_planandptrrecordkey toptr_record. The top level data-type changes from list to object. - Breaking: In JSON and YAML output of
loadbalancer list: return the full API response. This changesstatefield tooperational_state. - Breaking: In JSON and YAML output of
network listandnetwork show: return the full API response. Servers list will only contain server UUID and name. Innetwork listoutput, the top level data-type changes from list to object. - Breaking: In JSON and YAML output of
server listandserver show: return the full API response. This changes fieldhost_idtohost.nicsis replaced withnetworkingsubfieldinterfaces.storageis replaced withstorage_devices.labelscontain subfieldlabelwhich in turn contains the labels. Inserver listoutput, the top level data-type changes from list to object. - Breaking: In JSON and YAML output of
server firewall show: return the full API response. This removes fieldsdestinationandsourcefields in favor of[destination|source]_address_start,[destination|source]_address_end,[destination|source]_port_startand[destination|source]_port_end. - Breaking: In JSON and YAML output of
server plans: return the full API response. The top level data-type changes from list to object. - Breaking: In JSON and YAML output of
storage listandstorage show: return the full API response. This changesserversfield to containserverfield, which in turn contains the servers.labelsfield will not be outputted if empty. Instorage listoutput, the top level data-type changes from list to object. - Breaking: In JSON and YAML output of
zone list: return the full API response. The top level data-type changes from list to object. - In JSON and YAML output of
kubernetes list: return the full API response. - In human readable output of
kubernetes showcommand, show node-groups as table. Node-group details are available withkubernetes nodegroup showcommand.
Fixed
- Breaking: In JSON and YAML output of
ip-address show: use same JSON keys as in API documentation. This removescreditskey that was used in place offloating.
Removed
- Breaking: Remove
database connection listanddatabase connection cancelcommands in favor ofdatabase sessioncounterparts - Breaking: In JSON and YAML output of
database properties * show: pass-through the API response. This removeskeyfield from the output.
2.10.0 - 2023-07-17
Added
- Add
--disable-utility-network-accessforkubernetes nodegroup createcommand
Fixed
- Use pending color (yellow) for kubernetes node group
scaling-downandscaling-upstates
2.9.1 - 2023-07-06
Changed
- Release artifacts to follow package naming conventions provided by nFPM.
upcloud-cli-2.9.0_x86_64.rpm vs upcloud-cli-2.9.1.x86_64.rpm # no convention changes upcloud-cli-2.9.0_arm64.rpm vs upcloud-cli-2.9.1.aarch64.rpm # `arm64` -> `aarch64` upcloud-cli-2.9.0_amd64.apk vs upcloud-cli_2.9.1_x86_64.apk # `cli-` -> `cli_` & `amd64` -> `x86_64` upcloud-cli-2.9.0_arm64.apk vs upcloud-cli_2.9.1_aarch64.apk # `cli-` -> `cli_` & `arm64` -> `aarch64` upcloud-cli-2.9.0_amd64.deb vs upcloud-cli_2.9.1_amd64.deb # `cli-` -> `cli_` upcloud-cli-2.9.0_arm64.deb vs upcloud-cli_2.9.1_arm64.deb # `cli-` -> `cli_`
2.9.0 - 2023-06-30
Added
- Add
servergroupcommands (create,delete,list,modify,show) for server group management
2.8.0 - 2023-06-21
Added
- Add support for OpenSearch database type
- Add
database index listanddatabase indexcommands for managing OpenSearch database indices - Add completions for
--zonearguments. - Add
--private-node-groupsargument tokubernetes createcommand. - Add Private node groups field to
kubernetes showoutput. - Add
--labelflag toserver createandserver modifycommands
2.7.1 - 2023-05-16
Fixed
- Updated examples of
kubernetes createcommand to use valid plans.
2.7.0 - 2023-05-02
Added
- Add
ipandnetas aliases toip-addressandnetworkcommands, respectively. - Add Labels table to
loadbalancer show,network show,router show,server show, andstorage showoutputs. - Add
kubernetes planscommand for listing available plans. - Add
--planargument tokubernetes createcommand for selecting cluster plan. - Add
--waitflag tokubernetes createcommand for waiting created cluster to reach running state.
2.6.0 - 2023-03-14
Added
- The
upctlcontainer image now includes jq tool for parsing values from JSON output. - Add node-group states to
kubernetes showoutput. - Add completions for
--networkargument ofkubernetes createandserver network-interface create. - Support also network name as input for
--networkargument ofkubernetes createandserver network-interface create
Changed
- Completions will now only suggest private networks as arguments because names or UUIDs of public or utility networks are often not valid arguments.
2.5.0 - 2023-02-15
Added
- Print warning about unknown resource state before exiting when execution is interrupted with SIGINT.
- Add
kubernetes nodegroup create,kubernetes nodegroup scale, andkubernetes nodegroup deletecommands (EXPERIMENTAL) - Added support for all shell completions provided by
cobra. - Add
database properties <DB type>command to list database properties for given database type anddatabase properties <DB type> showcommand to show database property details.
Changed
- Remove custom bash completion logic and replace it with
completioncommand provided bycobra. To do this while supporting args with whitespace, whitespace in completions is replaced with non-breaking spaces.
Fixed
- In
database show: parse database version from metadata instead of properties. This enables displaying redis version instead of<nil>.
2.4.0 - 2022-12-19
Added
- Add
kubernetes create,kubernetes config,kubernetes delete,kubernetes list,kubernetes show,kubernetes versionscommands (EXPERIMENTAL) - Add
loadbalancer planscommand for listing available LB plans
2.3.0 - 2022-11-11
Added
- Complete available types for
database plans. - Suppress positional argument filename completion for commands without specific completions.
- In
database listoutput: if database has no title, database name is displayed in the title cell instead of leaving the cell empty, similarly than in the hub. - Version information is parsed from
BuildInfowhenupctlbinary was built without specifying-ldflagsto define value for.../config.Version. - Use alpine as base image for
upcloud/upctlcontainer image. This adds sh and other OS tools to the image and thus makes it more suitable for usage in CI systems.
Fixed
- Remove debug leftover print from IP address completions.
- Added
/v2postfix to module name ingo.mod, this enables installing v2 versions of CLI withgo install.
2.2.0 - 2022-10-17
Added
- Include runtime operating system and architecture in
versioncommand output. - Include instructions for defining credentials and API access in
upctl --helpoutput.
Fixed
- Fix commands in
server deleteusage examples. - Tune human output so that normal output is directed to
stdout. Progress and error messages are still outputted tostderr.
2.1.0 - 2022-09-07
Added
- Add
--waitflag tostorage importandstorage templatisecommands to wait until storage is inonlinestate. - In JSON and YAML output of
storage import: information on target storage is now available understoragekey.
Fixed
- In human output of
storage list: capitalize zone column header and color storage state similarly than instorage show. - In human output of
storage import: output UUID of created storage, instead of storage import operation. No UUID is outputted if existing storage was used.
2.0.0 - 2022-08-30
Added
- Add
database deletecommand. - Add
loadbalancer deletecommand. - Add
Accessfield tostorage showoutput. - Add fields
argumentandresourceto JSON and YAML error outputs.
Changed
- Breaking: Human output, including errors, is written to stderr instead of stdout.
- Refactor progress logging. This changes the appearance of progress logs. See UpCloudLtd / progress for the new implementation.
Fixed
- Breaking: Set non-zero exit code if command execution fails.
- Breaking: Render servers IP addresses as array of objects, instead of previous pretty-printed string, in JSON and YAML outputs of
server show. - Breaking: Use key names from
jsonfield tag also in YAML output to have equal key names in JSON and YAML outputs. For example,bootorderkey in server details will now beboot_orderalso in YAML output. As a side-effect data-types are limited to those supported by JSON. For example, timestamps will be presented as (double-quoted) strings. In addition, if command targets multiple resources, YAML output will now be a list, similarly than in JSON output, instead of previous multiple YAML documents. - Breaking: In JSON and YAML output,
storage showlists attached servers inserverslist instead ofserverstring. - Breaking: In JSON and YAML output,
network showlists DHCP DNS values in list instead of string. - On
network show, output server details as unknown instead of outputting an error, if fetching server details fails. This allows displaying network details for networks that contain a load balancer. - Progress logging to non TTY output uses now 100 as text width instead of 0.
1.5.1 - 2022-07-15
Fixed
- On
server create, mount OS disk by default onvirtiobus. Previously default OS storage address was not explicit and varyed depending on template type. - Disable colors if user has set NO_COLOR environment variable to non-empty value.
1.5.0 - 2022-07-05
Added
- Add
--show-ip-addressesflag toserver listcommand to optionally include IP addresses in command output. - Add
database connection list,database connection cancel,database start, anddatabase stopcommands.
Changed
- Make
--familyparameter ofserver firewall createcommand optional to allow editing the default rules. - Update
cobratov1.5.0and refactor required flag validation code. This affects validation error messages.
Fixed
- Complete shell input with uppercase letters (e.g.,
CaptoCapitalizedNamewill now work) - Display UUID of created template in
storage templatiseoutput.
1.4.0 - 2022-06-15
Added
- Add
database list,database show,database plans, anddatabase typescommands. - Add
loadbalancer listandloadbalancer showcommands. - Add
dbandlbaliases todatabaseandloadbalancer, respectively.
Changed
- Color server state in
server listoutput similarly than inserver showoutput. - Update Go version to 1.18
- Update
upcloud-go-apitov4.8.0
1.3.0 - 2022-05-17
Added
- Add
zone listcommand that lists available zones. - Add
--waitflag toserver createandserver stopcommands to wait until server is instartedandstoppedstate, respectively.
Changed
- Update
upcloud-go-apitov4.5.2
Fixed
- Do not display usage if execution fails because of missing credentials
- Mark error and warning livelogs finished when they will not be updated anymore: this stops the timer in the end of the row and stops livelog from refreshing these lines.
1.2.0 - 2022-04-29
Added
- Include UUID (or address) of created resource in create command output
storage modifycommand now acceptsenable-filesystem-autoresizeflag. When that flag is set upctl will attempt to resize partition and filesystem after storage size has been modified.
Changed
- New go-api version v4.5.0
Fixed
- Improved errors relating to argument resolver failures
- Print version info, instead of missing credentials error, when running
upctl versionwithout credentials - Disable colors when outputting in JSON or YAML format
- Display both public and private addresses in
server createoutput - Render livelog messages of commands which execution takes less than render tick interval
1.1.3 - 2022-02-24
Changed
- Update documentation
Fixed
- Fix storage command attached-to-server key overrides zone
1.1.2 - 2022-01-21
Fixed
- New release with no changes to fix the Homebrew deprecation notice
1.1.1 - 2021-09-30
Changed
- Change password creation to be disabled by default in server creation
- Always create a password when password delivery method is chosen
1.1.0 - 2021-06-03
Added
- Debug mode for finding root causes to problems
- Docker image and upload to Docker Hub
- Autogenerated documentation under /docs
- Terminal width handling
Changed
- Global flags for colors refactored to
--force-colourand--no-colour - New go-api version
- Improved error messages
Fixes
- No coloring of texts if stdout is not a terminal
- Detaching routers works now with the new
--detach-routerparameter innetwork modify
1.0.0 - 2021-04-16
First non-beta release! Includes all previous changes and fixes.
0.6.0 - 2021-04-16
Changed
- Use goreleaser for releasing packages
- Move creation of service outside runcommand to facilitate testing
Fixes
- fix(pre-commit): add missing golangci config file
- fix(root): use default cobra behaviour when called
0.5.0 - 2021-04-14
Initial public beta release :tada:
Added
- Added commands for managing server firewall rules
Fixed
- Shell auto-completion fixed
Changed
- Input & output handling rewritten
- Several help text fixes & changes
- Default OS changed to Ubuntu 20.04
- Defaults for networks / routers in line with storages, so we'll show users' own resources by default
0.1.1 - 2021-03-12
Fixed
- Load config files from the correct place on Windows
- Fix storage import failing on readerCounter not implementing io.Reader
0.1.0 - 2021-03-10
Added
- Current feature set added! First internal release