Release Notes

The following release notes are for the Business Edition of Portainer. For Community Edition release notes, refer to the GitHub releases page.

Release 2.20.3

May 21, 2024

This is an STS (Short-Term Support) release. Read more in our "Portainer 2.20 STS" blog post.

Important Notice

On update to this Portainer version, stacks and edge stacks will have their containers restarted after updating them. This is caused by the use of Docker Compose 2.26.1, which requires this restart. Note: If you already updated to 2.20.0, 2.20.1 or 2.20.2 previously, stacks and edge stacks that DO NOT use relative paths may already have had their containers restarted on update of them, and you would not then see a restart again.

Edge

  • Resolved an issue where edge configuration files were not being backed up.

  • Resolved an issue where device registration via the waiting room was extremely slow during large-scale edge deployment.

  • Resolved an issue where users were unable to remove or update an edge configuration that was pending deployment on a device.

Docker

  • Resolved an issue introduced in 2.20.0 where stopped Docker containers were incorrectly shown with an Unused badge. portainer/portainer#11797

Swarm

Kubernetes

  • Resolved an issue introduced in 2.20.0 where, when a placement rule was created for a Kubernetes application, if it was not met for a node, then it would not show up in the expand rows of the Application Details Placement constraints/preferences table. portainer/portainer#11826

  • Resolved an issue when creating a MicroK8s cluster where using a hyphen to specify an IP range had stopped working in 2.19.

  • Resolved an issue where the "More resources" views in Kubernetes would redirect to the Dashboard upon refresh.

  • Resolved an issue in the Kubernetes Applications List page where the namespace filter selection of a system namespace did not persist on refresh or revisit. portainer/portainer#11798

  • Introduced a tooltip to the 'Rollback to previous configuration' button in the Kubernetes Application Details screen to explain how rollback works. portainer/portainer#11804

  • Prevented a panic from occurring when mistakenly attempting to deploy a Kubernetes application and supplying a docker-compose.yaml instead of a Kubernetes manifest. portainer/portainer#11796

MicroK8s

  • Applied updates and ensured confirmed Kubernetes 1.30 support with creation of MicroK8s clusters.

  • Introduced an offline mode for creation of a MicroK8s Kubernetes cluster on air-gapped nodes.

Portainer

API Changes

New endpoints: 1
  • POST /endpoints/edge/trust Associate one or more Edge environments in the waiting room to environments

Deprecated endpoints: 1
  • POST /endpoints/{id}/edge/trust Associate an Edge environment in the waiting room to an environment

    • Use POST /endpoints/edge/trust instead

Release 2.20.2

May 1, 2024

This is an STS (Short-Term Support) release. Read more in our "Portainer 2.20 STS" blog post.

Resolved CVEs

Edge

  • Resolved an issue with the edge post initiation migration runner to ensure it runs migrations at the appropriate time, when connection between an edge environment and Portainer server has been established. portainer/portainer#11733

Docker

  • Resolved an issue that caused errors when users attempted to connect to their Docker environment via API using HTTPS portainer/portainer#11721

  • Provided info text in the UI to clearly explain environment variables stack.env file usage when deploying Docker stacks via Git vs. other methods. portainer/portainer#11732

Kubernetes

  • Ensured confirmed support of vanilla Kubernetes 1.30 clusters. portainer/portainer#11730

  • Fixed a bug with 2.20 migrating of Kubernetes secrets ownership to an improved model where the migration was not being flagged as complete.

  • Resolved an issue with Kubernetes environments that have a significant number of services where the Dashboard services panel never completed loading and the loading spinner was indefinitely displayed. portainer/portainer#11734

KaaS

  • Ensured Kubernetes 1.29 is supported with Azure Kubernetes Service (AKS) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.29 is supported with Linode Kubernetes Engine (LKE) provisioning of KaaS clusters.

Portainer

  • Fixed an issue introduced in 2.20.0 where a user logged in using external SSO could no longer create a Portainer API access token. portainer/portainer#11731

  • Resolved an issue where pending actions to be run on environments would still be considered for deleted environments (although not actually run). portainer/portainer#11735

  • Resolved issue where containers that exited with code 0 were incorrectly marked as failed deployments portainer/portainer#11724

  • Introduced an additional option to automatically detect the authentication style for OAuth portainer/portainer#11725

API Changes

Modified endpoints: 4
  • PUT /settings Update Portainer settings

    • Parameters

      • Added: body.OAuthSettings.AuthStyle

    • Return Type

      • Added: OAuthSettings.AuthStyle

  • GET /settings Retrieve Portainer settings

    • Return Type

      • Added: OAuthSettings.AuthStyle

  • PUT /settings/default_registry Update Portainer default registry settings

    • Return Type

      • Added: OAuthSettings.AuthStyle

  • POST /users/{id}/tokens Generate an API key for a user

    • Return Type

      • Added: apiKey

      • Added: rawAPIKey

Release 2.20.1

April 5, 2024

This is an STS (Short-Term Support) release. Read more in our "Portainer 2.20 STS" blog post.

Important Note Regarding Docker 26 Support

Please be aware that support for Docker 26 is provided on an "as-is" basis and is primarily driven by best-effort principles. Minimal regression testing has been conducted to ensure basic functionality. Users should proceed with caution and report any issues they encounter.

Docker

  • Resolved an issue where Docker 25/26 API changes affected container-related pages and image size display portainer/portainer#11504

Kubernetes

  • Resolved an issue where deploying GitOps edge stacks on a Kubernetes edge device resulted in error portainer/portainer#11503

  • Resolved an issue where the secret owner migration process could lead to a deadlock, preventing the HTTP(S) server from starting. portainer/portainer#11501

Portainer

  • Fixed an issue where local stacks were being overwritten by orphaned stacks with the same name in the regular stack listing page portainer/portainer#11502

Release 2.20.0

March 19, 2024

Overview of changes

Introducing the new Portainer BE 2.20.0 release. This is an STS (Short-Term Support) release.

As you gear up for the transition to Portainer BE 2.20.0, our latest STS (Short-Term Support) installment, ensuring a smooth upgrade is key. We urge you to back up your configurations via the Portainer UI beforehand. This backup acts as your safety net, ensuring you can gracefully revert to the prior version or state if the new frontier proves too wild. Additionally, pore over the release notes for catching any compatibility issues, understanding deprecated functionalities, and identifying essential tweaks to your current setup. Your diligence will pave the way for a seamless update.

A Short-Term Support release can be considered as "bleeding-edge" as it will contain the latest features and functionality we've developed. The STS releases (including this one) will go through a significant amount of pre-release testing, but there may be changes that could cause regressions and features that might see further iterations. As such, if stability is a crucial concern for your setup we wouldn't recommend deploying STS releases on production environments.

Read more in our "Portainer 2.20 STS" blog post.

Breaking changes

  • Discontinued Nomad support in this release. Users won't be able to create new Nomad environments from the UI, and existing Nomad environments are hidden, ceasing their management through Portainer

  • Introduced a requirement to specify the current user's password when adding an API token via the UI or the POST /users/{id}/tokens API endpoint.

  • Fixed issue when deploying Docker stacks from Git-based custom templates where a user could edit the content via the web editor, when they should only have been able to deploy the content from Git.

Deprecation notice

  • DEPRECATED API endpoint GET /kubernetes/{id}/namespaces/{namespace}/configuration. Following Portainer 2.19 split of K8s ConfigMaps and Secrets to two UI tabs and K8s API proxy use, the original endpoint combining both resource types is marked deprecated.

  • DEPRECATED API endpoint GET+POST /endpoints/{id}/kubernetes/helm/repositories, MOVED Helm UI option to Advanced Deployment/Create from Manifest screen + now allow users to delete their Helm repos. New endpoint GET+POST /users/{id}/helm/repositories added.

Resolved CVEs

  • Updated various packages to resolve CVEs. portainer/portainer#9224

  • Resolved CVEs for Portainer Agent

  • Resolved CVEs for Portainer CE and BE

Edge

  • Addressed CVEs affecting Nomad, enhancing security and stability

  • Fixed an issue where edge stacks deployed with retry policy and failing to deploy would remain stuck indefinitely after 1 hour of retries

  • Fixed issue where edge stacks with GitOps enabled, would stop polling after restarting the server.

  • Fixed issue where confirmation modal was missing when user was trying to update edge stacks.

  • Resolving an issue where newer versions of images were not being pulled from the registry as expected when re-pull option was turned on.

  • Fixed issue where pre-pull image and retry deployment options were missing after edge stack was deployed

  • Fixed an issue where clicking to filter ascending/descending by a column on the waiting room page did not result in any sorting.

  • Fixed issue where admin users were unable to update a Git-based edge stack created by another user.

  • Fixed an issue where, upon disabling the waiting room feature, existing devices in the waiting room are now automatically associated to prevent them from remaining unassociated

  • Implemented a new "Edge Admin" role, enabling users to administer the edge compute feature without altering Portainer settings.

  • Fixed issue where the "Retry deployment" toggle did not persist when editing an edge stack.

  • Improved UX of making "GitOps Edge Configuration" stand independently, simplifying access and allowing users to effortlessly enable relative paths during configuration.

  • Resolved an issue where the count of configurations pushed to edge devices was inaccurately displayed. We now prevent double counting and ensure accurate representation

  • Updated app template version to 3.0, now supporting edge apps in templates.

  • Corrected the incorrect icon style for edge groups in the UI

  • Enhanced the tooltips in the auto onboarding page to provide clear instructions on how to use the "Edge ID" field. Users will now receive guidance on the specific command to run in the script for generating the edge ID

  • Resolved an issue where the waiting room remained visible in the sidebar menu despite being disabled by the administrator. The waiting room now correctly hides when disabled.

  • Simplified scheduler time settings by removing seconds, providing users with a more straightforward configuration experience.

  • Fixed issue where searching for edge groups in the waiting room returned no results

  • Fixed issue where non-trusted environments were incorrectly counted for static edge groups

  • Implemented the ability for users to upload and manage edge configurations grouped by folders, allowing seamless deployment based on matching edge group names rather than individual devices.

  • Resolved an issue by implementing timeouts for the agent during snapshot building, preventing it from getting stuck indefinitely or taking excessive time in unresponsive Docker daemon scenarios

  • Fixed an issue where the Edge Agent was resetting EndpointId to 0 and polling global-key incorrectly when disconnected from Portainer server, even with disabled edge compute features

  • Introduced Edge App Templates and Custom Templates to address the absence of app and custom templates for edge stacks in Portainer

  • Fixed an issue where a dynamic edge group would erroneously create a stack even if no environment was present

  • Decoupled the display of Portainer API server URL and tunnel server address from the Edge Compute feature toggle, ensuring clear visibility regardless of the Edge Compute setting, addressing potential user confusion.

Swarm

  • Resolved an issue with the Docker Swarm Service List screen where image up to date indicators were not always correct.

  • Fixed issue where relative path volumes in Docker Swarm environments did not update when new commits were pushed to the upstream repository and the user clicked "Pull and redeploy" in stacks with GitOps updates enabled.

  • Updated the documentation link for Swarm agent setup in the UI to ensure it directs users to the correct documentation.

  • Updated the Quick Setup wizard to provide a more accurate message, eliminating misleading connection failure notifications when adding the local environment via Agent deployment.

  • Resolved an issue where deleting a Docker Swarm agent stack caused continuous error messages in logs portainer/portainer#7937

  • Resolved an issue where a Swarm stack failed to restart after being stopped when using private images. portainer/portainer#8262

Docker

  • Introduced the ability to trigger reload of image up to date indicators in the UI.

  • Fixed issue where Docker Images List breaks when an image has no tags.

  • Resolved inconsistencies between image up to date indicators of Docker Container List, Stack List and Stack Details screens.

Kubernetes

  • Introduced warning that Civo KaaS provisioning for a Kubernetes 1.27+ cluster on Extra Small node size may no longer complete as the compute resources are now too limited for required workloads.

  • Ensured that, when enabling addons on a MicroK8s cluster during initial set-up of that cluster, any errors that arise are now shown in the UI.

  • Ensured that, when enabling addons on a MicroK8s cluster post set-up of that cluster, any errors that arise are now shown in the UI.

  • Disabled GKE functionality's Google API client telemetry.

  • Updated the version of the kubectl client in the kubectl shell console. portainer/portainer#11303

  • Fixed the stripping of labels from certain Kubernetes resources - Ingress, ConfigMap or Secret - when form-editing them. portainer/portainer#11147

  • Resolved inconsistency in Kubernetes deployment behavior between standard and async agents regarding the 'Use namespace(s) specified from manifest' switch

  • Fixed an issue where namespaces 'set to system' from within Portainer weren't being detected as system. portainer/portainer#11146

  • Fixed 'Unable to determine which association to use to convert form' error when adding a service to a Kubernetes pod that had been deployed external to Portainer. portainer/portainer#11136

  • Fixed an issue introduced in 2.19.0 where a Kubernetes application deployed from Git required re-entry of Git credentials when changing the deployment.

  • Corrected a minor UI issue introduced in 2.19.0, where, on create of Kubernetes application, if the user scrolled down and clicked 'Add persisted folder' without populating name and image fields, the focus would jump up to the first empty required field. portainer/portainer#11155

  • Fixed an issue introduced in 2.19 in the ConfigMaps and Secrets lists where a check was no longer made against them for deployments of type Pod and hence an 'Unused' badge in those instances was then not shown. portainer/portainer#11145

  • Fixed a 'this.formValues.Services is undefined' error that was shown when editing a pod created via manifest. portainer/portainer#11152

  • Resolved an issue where ConfigMaps and Secrets created via manifest were incorrectly shown with the 'External' badge. portainer/portainer#11169

  • Fixed issues that occurred when creating a Kubernetes namespace after disabling cluster's over-commit setting, including "Value must be between 0 and -x." warning that was incorrectly shown.

  • Introduced a per-user option to enable five-minute data caching for non-edge Kubernetes environments - to improve performance. portainer/portainer#11118

  • Resolved an issue with deploying of an edge stack to a Kubernetes async device failing.

  • Fixed the Kubernetes Application details screen not showing referenced resources for an app that had used 'envFrom:' in its manifest to load an entire ConfigMap or Secret as environment variables instead of referencing individual values via 'valueFrom:'. portainer/portainer#11144

  • Introduced a setting to turn off the Stacks functionality within the Kubernetes side of Portainer. portainer/portainer#11119

  • Renamed the Kubernetes Advanced Deployment screen to be 'Create from Manifest'. portainer/portainer#11128

  • Corrected display of a very high 'CPU used' value in the Kubernetes Cluster details screen when micro-CPU units were being used. portainer/portainer#11154

  • DEPRECATED API endpoint GET+POST /endpoints/{id}/kubernetes/helm/repositories, MOVED Helm UI option to Advanced Deployment/Create from Manifest screen + now allow users to delete their Helm repos. New endpoint GET+POST /users/{id}/helm/repositories added. portainer/portainer#11127

  • Introduced an option to enforce admin-only viewing/editing of Kubernetes Secret contents in the UI (where the user did not create that Secret).

  • Resolved issues that occurred around editing a Kubernetes application when a namespace had resource quotas set, where the application's (pre-edit) existing resource usage was not being taken into account. portainer/portainer#11143

  • Introduced a change so that, on deletion of an ECR or other registry, any related Kubernetes registry secret will now be removed. Note that this type of secret is auto created when assigning a registry to a namespace in a Kubernetes environment. portainer/portainer#11158

  • Migrated the Kubernetes Application Details screen's YAML, Events and Containers sections plus any of the screen's remaining code from Angular to React. portainer/portainer#11121

  • Fixed an issue around the display of incorrect search results for Kubernetes applications that are exposed via an ingress. portainer/portainer#11160

  • Corrected the Kubernetes Volume Details screen to show the Shared Access Policy of the Volume rather than (erroneously) of the StorageClass. portainer/portainer#11163

  • Corrected the deploying of a Kubernetes Daemonset with shared storage so that RWX access is granted to the Persistent Volume Claim, as relevant. portainer/portainer#11168

  • Migrated the Kubernetes Cluster Setup screen from Angular to React and improved loading of its elements. portainer/portainer#11122

  • Introduced a change so that, on assigning a user access to a Kubernetes environment that is down, the access is enabled when the environment next connects. portainer/portainer#11157

  • Fixed a console error that could arise in the Kubernetes Add/Edit Application screen when updating resource sliders. portainer/portainer#11159

  • Resolved error shown on editing a Kubernetes namespace when the cluster's 'Allow resource over-commit' setting had been turned off where the namespace had originally been created when the cluster's setting was on.

  • Corrected the labelling of the Stack field in the Kubernetes Advanced Deployment (now 'Create from Manifest') screen. Also clarified the labelling of Namespace and Name concepts. portainer/portainer#11120

  • Introduced new screen for listing, searching and deleting Kubernetes Cluster Roles and their Bindings.

  • Introduced new screen for listing, searching and deleting Kubernetes Roles and their Bindings.

  • Updated the Ingress list screen to indicate system resources correctly. portainer/portainer#11162

  • Fixed incorrect display of an error message when adding a Kubernetes secret under certain circumstances. portainer/portainer#11156

  • Made changes to allow stopping of a replicated Kubernetes application by scaling it to zero instances. portainer/portainer#11117

  • Introduced new screen for listing, searching and deleting Kubernetes Service Accounts.

  • Migrated most of the components of the Kubernetes Create and Edit application screens from Angular to React. portainer/portainer#11123

  • Migrated the Kubernetes Add Namespace screen from Angular to React. portainer/portainer#11124

KaaS

  • Ensured Kubernetes 1.28 is supported with Linode Kubernetes Engine (LKE) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.29 is supported with DigitalOcean Kubernetes (DOKS) provisioning of KaaS clusters.

  • Applied updates and ensured Kubernetes 1.29 is supported with Amazon Elastic Kubernetes Service (EKS) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.28 is supported with Civo Kubernetes provisioning of KaaS clusters.

  • Ensured Kubernetes 1.28 is supported with Google Kubernetes Engine (GKE) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.27 is supported with Civo Kubernetes provisioning of KaaS clusters.

  • Ensured Kubernetes 1.27 is supported with Linode Kubernetes Engine (LKE) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.28 is supported with Azure Kubernetes Service (AKS) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.28 is supported with DigitalOcean Kubernetes (DOKS) provisioning of KaaS clusters.

  • Applied updates and ensured Kubernetes 1.28 is supported with Amazon Elastic Kubernetes Service (EKS) provisioning of KaaS clusters.

  • Corrected access to Add Shared Credentials screen to prevent standard users from navigating to it (although note that it was already correctly disallowing add or view of credentials).

  • Removed the possibility of a race condition occurring on use of the eksctl binary for Amazon EKS KaaS cluster provisioning.

  • Ensured confirmed support of vanilla Kubernetes 1.29 clusters. portainer/portainer#11129

MicroK8s

  • Applied updates and ensured confirmed Kubernetes 1.29 support with creation of MicroK8s clusters.

  • Corrected the grammar of a MicroK8s version retrieval error message.

  • Ensured confirmed Kubernetes 1.28 support with creation of MicroK8s clusters.

  • Introduced the ability for admins to enable the mayastor addon (that has prerequisites) for a MicroK8s cluster, and for admins and environments admins to enable or disable the mayastor addon for a MicroK8s cluster, after is has been provisioned.

  • Introduced the ability for admins to enable the minio addon (that has prerequisites) for a MicroK8s cluster, and for admins and environments admins to enable or disable the minio addon for a MicroK8s cluster, after is has been provisioned.

  • Resolved a Portainer and MicroK8s issue where, on installing Portainer Agent, the microk8s status command incorrectly shows Portainer Server as enabled. Note, this is fixed in fresh MicroK8s 1.29 installs (and is unrelated to the Portainer version).

Portainer

  • Fixed an issue where the "Force HTTPS only" toggle in the SSL certificates section was not functioning as expected.

  • Fixed an issue that caused local stacks to be overwritten by orphaned stacks with the same name on the regular stack listing page

  • Added version path to in-app documentation links to support long-term support (LTS) vs. short-term support (STS) releases. portainer/portainer#11375

  • Fixed issue where users could erroneously edit web editor content in Git-based custom templates.

  • Improved logging of in-app Kubernetes CE to BE upgrade.

  • Resolved an issue with restoring from backup where portainer_data was stored on a network volume. portainer/portainer#11150

  • Fixed web editor errors when selecting between templates with identical Mustache variables and default values.

  • Added experimental feature (behind a feature flag) to stream Syslog-formatted user activity and authentication logs to an external Security Information and Event Management (SIEM) system.

  • Fixed issue where Bitbucket commit links were broken due to incorrect URL formatting.

  • Resolved 'Unable to download backup' error that sometimes occurred when initiating database backup if portainer_data was sited on a network volume. portainer/portainer#11153

  • Fixed an issue where a webhook error occurred during the redeployment of a stack created from a private Git repository with relative path enabled.

  • Fixed an issue where the cursor would jump to the end of the field after entering a character while editing environment variables for a stack.

  • Fixed issue where sorting images by tags in the Images view of a Docker/Swarm environment had no effect, ensuring that images are now sorted in tag order when clicking on the Tags column header.

  • Fixed an issue where users were unable to edit the YAML provided by a selected Custom template when deploying a stack.

  • Improved GitOps auto updates to prevent piling up when the deployment time exceeds the polling interval.

  • Resolved an issue with the upgrade and rollback process where the database was being backed up to a name that the rollback was not expecting. portainer/portainer#10751

  • Fixed an issue with the Log viewer where lines that only contained numerical values were not shown.

  • Fixed a minor typo in the 'Back up Portainer' settings section. portainer/portainer#11138

  • Fixed a UI issue in Backup settings where, on reopening, they would revert to the default view after saving as S3.

  • Fixed an invalid commit link in the Stack details screen that could occur if the original copy/pasted Git URL of the stack was a GitHub repo URL with an extension of .git. portainer/portainer#11140

  • Fixed an issue where triggering a non-admin container's webhook changed the permission to admin-only.

  • Resolved repository reference display discrepancy on deployed Environment Stacks details page

  • Fixed inconsistency in container counting between the environment tile on the home page and the containers tile on the environment's Dashboard.

  • Introducing 'Auto-Complete' branch selection for Git repositories in stack creation

  • Introduced a UI fix to show a 'disabled input' cursor on hover of a toggle that's disabled for change (similar to existing disabled fill-ins, etc.). portainer/portainer#11165

  • Provided information text to notify users that the GPU feature supports only Nvidia graphics cards, addressing any potential confusion

  • Changed the "Upgrade Licenses" button to "Buy more nodes" for accurate representation of the action, as it reflects the purchase of additional licenses for expanding the number of nodes.

  • Resolved an issue in GitLab registry handling, ensuring that Portainer continues loading images seamlessly despite errors such as deleted repositories, preventing 401 errors from affecting the display.

  • Discontinued Nomad support in this release. Users won't be able to create new Nomad environments from the UI, and existing Nomad environments are hidden, ceasing their management through Portainer

  • Enhanced version details popup to display the current Git commit hash and specific server environment variables for improved transparency and troubleshooting.

  • Resolved an issue where an invalid IP address caused an error when the PORT environment variable was used during stack deployment

  • Fixed a minor UI issue with the Environment -> Manage access screen enabling the 'Create access' button even though no changes had been made. portainer/portainer#11141

  • Fixed issue where editing stacks or edge stacks didn't display relative path information. We now ensure clarity on the mounting point used, despite users being unable to modify the relative path during the editing process

  • Adjusted license check-in.

  • Enlarged a too-small font used in the Web editor's search/replace feature. portainer/portainer#11175

  • Improved authentication and activity logs exported content.

  • Improved security by storing sensitive JWT tokens in a more secure manner, enhancing protection for user authentication in the local browser storage

  • Implemented improvements to restrict access to specific environment group details

  • Enhanced measures to prevent global admins from accessing each other's tokens through direct HTTP requests. This ensures data privacy and aligns with intended access levels in the User Interface.

  • Fixed an issue where the "Save Settings" button remained disabled after changing Advanced Options for a Git stack

  • Disabled ability to edit orphaned stacks, ensuring consistency and preventing unintended modifications from the UI.

  • Fixed issue where sorting by the "Updated" column in the Stacks view of a Docker environment incorrectly sorted based on the "Created" column instead.

  • Implemented displaying of the exit code for containers in the Portainer UI.

  • Improved Portainer navigation so all submenus now have their top-level option moved down to be the first option within their submenu and they always open to that. Implemented several other small menu improvements. portainer/portainer#11116

  • Fixed an issue where the client secret field appeared blank when editing an OAuth configuration under 'Settings - Authentication'.

  • Improved the functionality around changing a linked environment's IP address so Portainer Server no longer needs restarting for the update to apply. portainer/portainer#11151

  • Improved security by adding a dropdown to hide environment variables in the stack UI on the details page, preventing potential exposure of sensitive information in public or share environments.

  • Resolved an issue where information was missing on the registry tag view due to certain registry servers not providing manifest v1 json

  • Resolved an issue where hiding a container would incorrectly label the associated container image as Unused. We now ensure accurate representation and address potential user confusion and unintended image deletion.

  • Introduced 'noindex' meta-tag to the Portainer login page to denote to search engines that the page should not be indexed and served in search results. portainer/portainer#11164

  • Fixed a console error that occurred when resizing the browser window on the containers page, particularly during an active exec console session.

  • Improved styling and layout of headings and sub-headings throughout the user interface to improve legibility and hierarchy within pages. portainer/portainer#11166

  • Resolved an issue in Container Logs with the Wrap Lines toggle on, where the log display could be mangled and end up unreadable.

  • Introduced success notification that was missing when adding a user to a team. portainer/portainer#11170

  • Improved styling of toggles throughout the user interface to make it clearer whether they are on or off, both when they are enabled for change or disabled for change. portainer/portainer#11167

  • Improved high contrast mode so that field borders, box selector text and expiry banners are easier to make out. portainer/portainer#11173

  • Improved high contrast mode to introduce a border around modals and tooltips so they are easier to distinguish from the rest of the screen. portainer/portainer#11174

  • Resolved an issue where adding an environment to a newly created group didn't move it from 'available environment' to 'associated environment'; this now functions correctly.

  • Introduced support for input, copy and paste of extended Unicode characters in Docker container and Kubernetes kubectl shell consoles. portainer/portainer#5780

Development

  • Updated Chisel to version 1.9 to facilitate the upgrade of Golang to version 1.20 for improved performance and compatibility

  • Updated the logging library to restore colored console logs from the Portainer binary, enhancing readability and improving visibility for users.

API Docs

  • Corrected Swagger API documentation for the Stack image status endpoint, which should be /stacks/{id}/images_status (rather than /docker/{environmentId}/stacks/{id}/images_status).

  • Corrected Swagger API documentation for the GET+POST /users/{id}/tokens endpoint so the example response describes the digest format correctly as a string, rather than (erroneously) as a list of integers. portainer/portainer#11172

  • Corrected Swagger API documentation for the Docker container, service and stack image status endpoints so they now include example responses and a status explanation.

  • Corrected Swagger API documentation for various /cloud (KaaS) endpoints and around an edge generate key endpoint.

  • Corrected Swagger API documentation for the GET /edge_update_schedules endpoint so it now describes the includeEdgeStacks parameter, and the /edge_update_schedules/active endpoint which is a POST request but was (erroneously) described as a GET request.

  • Corrected Swagger API documentation which listed creation of custom template POST endpoints as /custom_templates/file (or repository or string), but should have listed them as /custom_templates/create/file (or repository or string). portainer/portainer#11149

  • Corrected API endpoint GET /webhooks documentation to describe filters parameter as a JSON string. portainer/portainer#11148

  • Resolved further Swagger API documentation problems including issues definition of GET /edge_stacks/{id}/logs/{endpoint_id}/file, GET /kubernetes/{id}/max_resource_limits and GET /kubernetes/{id}/namespaces/{namespace}/role_bindings. portainer/portainer#11171

  • Fixed Swagger API documentation to accurately reflect the path where the 'environmentId' should be passed, addressing inconsistencies between the documentation and the actual implementation.

  • Updated Swagger API documentation to ensure consistency in property naming conventions by using PascalCase instead of camelCase.

  • Fixed Swagger API documentation issue where the kaas version and system version APIs erroneously shared the same swaggo ID.

REST API Changes

  • Introduced a requirement to specify the current user's password when adding an API token via the UI or the POST /users/{id}/tokens API endpoint. portainer/portainer#11126

  • Enhanced the system version API endpoint's response to now include the Portainer version type, distinguishing between Community Edition and Business Edition.

Deprecated Endpoints: 8
  • POST /custom_templates/file Create a custom template

  • POST /custom_templates/repository Create a custom template

  • POST /custom_templates/string Create a custom template

  • GET /docker/{environmentId}/stacks/{id}/images_status Fetch image status for stack

  • POST /cloud/credentials/{id}/delete delete a cloud credential by ID

  • PUT /edge_configurations Update an Edge Configuration

  • GET /edge_update_schedules/active Fetches the list of Active Edge Update Schedules

  • POST /kubernetes/{id}/namespaces/{namespace} Create a kubernetes namespace

New Endpoints: 33
  • POST /custom_templates/create/file Create a custom template

  • POST /custom_templates/create/repository Create a custom template

  • POST /custom_templates/create/string Create a custom template

  • POST /docker/{environmentId}/containers/image_status/clear Clear container image status cache

  • GET /docker/{environmentId}/images Fetch images

  • POST /docker/{environmentId}/services/image_status/clear Clear service image status cache

  • GET /edge_stacks/{id}/logs/{endpoint_id}/file Downloads the available logs for a given edge stack and endpoint

  • POST /edge_stacks/parse_registries Parse registries from a stack file

  • GET /kubernetes/{id}/cluster_role_bindings Get a list of cluster role bindings

  • POST /kubernetes/{id}/cluster_role_bindings/delete Delete the provided cluster role bindings

  • GET /kubernetes/{id}/cluster_roles Get a list of cluster roles

  • POST /kubernetes/{id}/cluster_roles/delete Delete the provided cluster roles

  • GET /kubernetes/{id}/max_resource_limits Get max unused CPU and memory limits of all nodes within k8s cluster

  • GET /kubernetes/{id}/namespaces/{namespace}/configuration Get ConfigMaps and Secrets

  • GET /kubernetes/{id}/namespaces/{namespace}/role_bindings Get a list of role bindings

  • GET /kubernetes/{id}/namespaces/{namespace}/roles Get a list of roles

  • GET /kubernetes/{id}/namespaces/{namespace}/service_accounts Get a list of service accounts

  • POST /kubernetes/{id}/role_bindings/delete Delete the provided role bindings

  • POST /kubernetes/{id}/roles/delete Delete the provided roles

  • POST /kubernetes/{id}/service_accounts/delete Delete the provided service accounts

  • PUT /settings/default_registry Update Portainer default registry settings

  • GET /stacks/{id}/images_status Fetch image status for stack

  • POST /stacks/image_status/clear Clear stack image status cache

  • DELETE /stacks/name/{name} Remove Kubernetes stacks by name

  • POST /templates/{id}/file Get a template's file

  • GET /users/{id}/helm/repositories List a users helm repositories

  • POST /users/{id}/helm/repositories Create a user helm repository

  • DELETE /users/{id}/helm/repositories/{repositoryID} Delete a users helm repository

  • GET /users/me Inspect the current user user

  • DELETE /cloud/credentials/{id} Delete a cloud credential

  • PUT /edge_configurations/{id} Update an Edge Configuration

  • POST /edge_update_schedules/active Fetches the list of Active Edge Update Schedules

  • POST /kubernetes/{id}/namespaces Create a kubernetes namespace

Modified Endpoints: 19
  • POST /auth Authenticate

  • POST /auth/oauth/validate Authenticate with OAuth

  • POST /cloud/{provider}/cluster Provision a new KaaS cluster and create an environment

  • GET /cloud/{provider}/info Get information about the provisioning options for a cloud provider.

  • GET /custom_templates List available custom templates

  • POST /custom_templates Create a custom template

  • PUT /custom_templates/{id} Update a template

  • GET /custom_templates/{id} Inspect a custom template

  • GET /docker/{environmentId}/containers/{containerId}/image_status Fetch image status for container

  • GET /docker/{environmentId}/services/{serviceId}/image_status Fetch image status for service

  • GET /edge_configurations List available Edge Configurations

  • POST /edge_configurations Create an Edge Configuration

  • GET /edge_configurations/{id} Inspect an Edge configuration

  • GET /edge_groups list EdgeGroups

  • GET /edge_jobs Fetch EdgeJobs list

  • GET /edge_jobs/{id} Inspect an EdgeJob

  • POST /edge_jobs/{id} Update an EdgeJob

  • GET /edge_stacks Fetches the list of EdgeStacks

  • POST /edge_stacks Create an EdgeStack

Release 2.19.4

December 6, 2023

Swarm

  • Resolved the inability to change the replica set for a swarm service, addressing errors related to invalid CredentialSpec (A refresh of your browser cache may be required) portainer/portainer#10702

Release 2.19.3

November 22, 2023

Portainer

Release 2.19.2

November 13, 2023

Breaking changes

  • Deprecation notice of Nomad support in next minor release.

Edge

  • Fixed bug around Update and Rollback menu showing when Edge Compute feature is disabled.

  • Resolved an issue where edge group details were missing from the update and rollback table.

  • Resolved an issue where searching on the Update & Rollback page caused the screen to go blank

  • Resolved an issue where users were unable to delete any failed remote update scheduler entries.

  • Resolved an issue where edge stack rollback and pause updates remained stuck in the pending state

  • Resolved an issue where the update scheduler would stay in a "pending" state indefinitely, even when some edge agents were already running the latest version in the target edge group.

  • Added a deprecation notice to inform users about the upcoming removal of Nomad support in next minor release.

Swarm

  • Resolved an issue where the Docker service page could not load correctly when the deployment was created using the GMSA credential spec parameter. portainer/portainer#10571

Kubernetes

  • Introduced the ability for Helm chart repository searching and registry browsing to operate behind a forward proxy. portainer/portainer#10432

Portainer

  • Improved security around non-admin user environment information access. portainer/portainer#10434

  • Fixed 'unable to upgrade' error that could potentially occur when upgrading from CE to BE.

  • Resolved an issue where stacks that were initially deployed from a template could not be modified. portainer/portainer#10563

  • Resolved an issue where users couldn't define a proxy for the agent and edge agent when their network relied on a proxy for internet access. portainer/portainer#10564

  • Resolved an issue where pulling and redeploying Git stacks took longer than expected. portainer/portainer#10565

  • Resolved an issue where stacks triggered from webhooks were marked as inactive status, even though they were running as expected portainer/portainer#10567

  • Improved storage efficiency by retaining only one copy of Git repositories for versioning, preventing excessive disk usage.

  • Fixed an issue where authentication failures occurred when editing stacks deployed from Git repositories created with version 2.19.0 or 2.19.1.

  • Fixed an issue introduced in 2.19.0 when deploying from a custom template that was set up via API, where defined mustache variables are not always being prompted for.

  • Resolved an issue where users could interact with a console even after logging out from another tab in the browser portainer/portainer#10568

  • Resolved an issue where there was no warning for version mismatch between the server and edge agent, now UI clearly indicates matching server and edge agent versions are required for feature availability. portainer/portainer#10569

  • Resolved an issue where containers were not deleted when users removed them from asynchronous environments by browsing snapshots.

REST API Changes

New Endpoints: 1
  • POST /edge_update_schedules/{id}

Modified Endpoints: 3
  • POST /auth/logout

    • Description changed from 'Access policy: authenticated' to 'Access policy: public'

  • POST /edge_update_schedules

    • Responses changed

      • New response: 200

      • Deleted response: 204

  • GET /edge_update_schedules/previous_versions

    • New query param: environmentIds

    • Deleted query param: skipScheduleID

Release 2.19.1

September 20, 2023

Breaking changes

  • Changes to API format and checking of some requests - See REST API Changes below for more details.

Edge

  • Resolved an issue with snapshots between Edge Agent versions 2.18.2 and Portainer Server 2.19.0, which caused dropping of remote commands in async mode due to mismatches.

  • Database migration for edge URLs now includes a check to verify if the edge feature is enabled. This fix ensures a more accurate and controlled upgrade process.

  • Fixed an issue where the migration of Edge Tunnel URLs was broken when the Portainer API URL did not contain a port.

  • We've improved the transparency of Edge Agent update scheduler and rollback statuses. Now, you'll have clear explanations for each status, simplifying monitoring and management.

  • We've added a info notice to clarify that the option to update edge agent from a private registry is exclusively available in Edge Agent version 2.18.1 or newer.

  • Fixed an issue where edge devices in the waiting room were incorrectly counted as part of the dynamic edge group.

Kubernetes

  • Fixed an issue introduced in 2.19.0 where standard and read-only users could no longer view node stats on a Kubernetes cluster.

  • Fixed an issue introduced in 2.19.0 where the Kubernetes Create Application screen no longer showed in the bottom of page summary when a Deployment would be created.

MicroK8s

  • Fixed an issue introduced in 2.19.0 where MicroK8s cluster creation would fail if the SSH access used a passworded login and sudo access required the password.

Portainer

  • Fixed an issue where backup files were missing the Chisel private key. This could have disrupted communication between the Portainer server and agent after a restoration from backup. portainer/portainer#10335

  • Improved the upgrade process for the Portainer server, upgrade process now halts on database migration errors, preventing database version mismatches for a more stable environment. portainer/portainer#10336

  • Fixed an issue when chatbot integration was enabled globally, where a user who then set a chatbot key could not subsequently clear out their key to turn off the feature for themselves.

  • Fixed an issue introduced in 2.19.0 when the chatbot integration feature was enabled for a user, where container logs did not display in the log viewer unless in full-screen mode.

  • Fixed an issue where webhooks were failing when updating a stack deployed from a private Git repository.

  • We've added a backup reminder for in-app updates, ensuring data safety during the update process.

  • Resolved issue where failed stack status persists after incorrect compose from Git. Now auto-recovers with the next successful update.

  • Fixed an issue where usernames and passwords were being stored along with Git stack configurations when Git credentials were used.

  • Fixed an issue where using spaces in an Organizational Unit (OU) or Common Name (CN) name caused incorrect data to be displayed in the Active Directory configuration.

  • Fixed an issue where toggles could be activated outside of their intended component area, potentially leading to inadvertent toggling. portainer/portainer#10324

REST API Changes

  • Fixed API endpoints that were broken in the 2.19.0 release, ensuring that they retain their previous functionality. portainer/portainer#10337

  • Fixed an issue introduced in 2.19.0 when Kubernetes environment metrics API features were enabled, where these features would return an 'Unable to reach metrics API' error.

  • Introduced new format around the change of a user's password via API. portainer/portainer#10326

  • Updated the checking around change of a user via API. portainer/portainer#10326

Release 2.19.0

August 31, 2023

Breaking changes

  • Introduced the ability for admins and environment admins to enable/disable community addons on a MicroK8s cluster created via Portainer. Note: On upgrade to this release, existing MicroK8s clusters created via Portainer are set to allow community addons.

  • A number of components/views have been migrated from Angular to React.

  • Helm, eksctl, and docker-compose have been updated to newer versions.

  • Internal versioning on stacks feature has introduced file structure changes in 2.19.

  • We have addressed an API issue in which an incorrect parameter was being used for API endpoint /edge_groups. Users relying on the HasEdgeGroup parameter should now use HasEdgeJob to achieve the intended functionality.

  • Select API endpoints are broken and will be restored in the next release:- see REST API changes for specific details.

Resolved CVEs

Edge

  • Fixed an issue where the edge agent was getting disconnected due to user updates to their remote update scheduler.

  • Resolved an issue where users were unable to create a rollback and subsequently edit it from the scheduler.

  • Introduced visual enhancement of dynamic progress bar for clearer edge stack status tracking. Get real-time deployment progress at a glance.

  • Fixed an issue where deploying a large volume edge stack triggered a 'URI too large' error. portainer/portainer#10128

  • Resolved an issue where edge devices were not fully shown in the waiting room when the total amount exceeded 100

  • Introducing new statuses - 'Running', 'Deploying', and 'Partially running' - for increased transparency in edge stack monitoring.

  • Introduced staggered deployment & rollback for edge stacks. Update in stages, reduce risks & revert failed updates seamlessly.

  • Introduced internal versioning & Git commit ID as edge stack version. Clearer version tracking for Git-deployed stacks.

  • Added support for relative paths in Git-deployed edge stacks.

  • Resolved an issue where the 'change windows setting' option was shifting outside of the div when a user was using a smaller screen

  • Fixed an API issue where the incorrect parameter HasEdgeGroup was being used instead of HasEdgeJob for endpoint /edge_groups. Users relying on the HasEdgeGroup parameter should now use HasEdgeJob to achieve the intended functionality.

  • Introducing the ability to use environment variables for edge stack.

  • Introducing a new feature: GitOps Edge Configurations, which simplify edge device configurations with GitOps. Effortlessly manage settings via version-controlled Git repositories for enhanced configuration control.

  • Introducing the latest commit ID display in edge stacks. Perfect for GitOps updates, this feature lets you easily track your running version. Stay informed and up-to-date effortlessly.

  • Introduced ability to push per-device configurations effortlessly. Bundle settings in a zip package, Portainer matches and delivers to edge devices. Simplify management, enhance precision.

  • Fixed an issue where the count of edge stack deployments was incorrect when dealing with asynchronous devices exceeding 100.

  • Fixed an issue where the order of the list changed while logs were being retrieved, and where previously cleared logs were reappearing after retrieving logs for a different environment.

  • Improved logging for edge agent when polling fails. This enhancement provides more informative and detailed logs when polling encounters failures, aiding in quicker identification and resolution of issues. portainer/portainer#10143

  • Introduced a feature that empowers you to associate edge devices with newly selected or dynamically generated meta values. Enhance flexibility and precision in device management with this innovative addition.

  • Introduced an informative enhancement to the waiting room experience. With the addition of the 'Last Check-In' field, users now have valuable insights into when edge devices last communicated with the Portainer server.

  • Introduced ability to remove edge devices that you no longer want sitting in the waiting room. This feature empowers you with streamlined waiting room management, enabling you to maintain a dynamic and optimised edge environment.

  • Resolved an issue where editing an existing scheduler caused an error due to a missing edge stack on a related endpoint.

  • Resolved an issue where users were able to create schedulers with an empty edge group, which is no longer allowed to ensure proper functionality and avoid potential errors portainer/portainer#10149

  • Resolved an issue with Portainer tunnel server address validation error during migration. This fix ensures that when migrating, tunnel server addresses are validated correctly.

  • Fixed an issue where Edge groups were incorrectly marked as 'in use' after a scheduler was executed.

  • Addressed an issue where snapshot information was not reliable when the environment was offline. This fix ensures that snapshot information is now accurately presented even when the environment is offline.

  • Resolved an issue where the count for acknowledged edge stacks was dropping after deployment.

  • Resolved an issue where the edge agent default poll frequency selector was not lining up correctly portainer/portainer#10150

  • Resolved an issue where users were unable to create an edge group when there were no members present in that group. Edge groups can now be created without requiring initial members, offering greater flexibility in edge device and configuration management. portainer/portainer#10153

  • Introduce an enhancement to our snapshot creation process for edge devices which streamlines the snapshot creation experience, providing users with a more efficient and user-friendly way to capture snapshots on edge devices. portainer/portainer#10154

  • Introduced ability to seamlessly browse snapshots for your asynchronous environment and access detailed stack information.

  • Fixed an issue where environment files were not functioning properly in Git deployments for edge stacks. portainer/portainer#10171

  • Introduced webhooks for edge stack, you can now set up webhooks for your edge stacks, enabling automated polling for GitOps updates. portainer/portainer#10178

Docker

  • Addressed an issue where the Docker client was not utilizing version negotiation. portainer/portainer#10125

  • Resolved an issue where the image name was displayed incorrectly when a user tried to duplicate or edit a container portainer/portainer#10126

  • Fixed an issue in the API where sending files to a Docker endpoint resulted in a panic. portainer/portainer#10129

  • Resolved an issue with Docker Proxy's performance, resulting in improved overall performance and responsiveness when using the Docker Proxy feature. portainer/portainer#10131

  • Resolved an issue in the Docker Container List where searching by published ports was no longer working. portainer/portainer#6656

  • Resolved an issue where '.' was not allowed in the image name (but should be) when building a Docker image via the UI. portainer/portainer#8047

  • Resolved some minor UI issues in Docker Services-related screens. portainer/portainer#10117

Swarm

  • Fixed an issue in Docker Swarm version 24.0.0 where image tags were not being displayed. portainer/portainer#10134

  • Resolved an issue where clicking into the details page of a Swarm stack would redirect users to the service section instead of the top of the page portainer/portainer#10151

Kubernetes

  • Resolved an issue around Operator role users not being able to perform rolling restart, redeploy and rollback to previous version for Deployment, DaemonSet and StatefulSet resources.

  • Resolved an issue introduced in 2.18 that prevented the use of Amazon EKS provisioning of a Kubernetes as a Service (KaaS) cluster.

  • Fixed a Kubernetes environment issue when restricting access to the default namespace, where any other namespace with a resource quota may have the resource reservations of its apps incorrectly calculated, preventing standard users from editing the apps.

  • Amended the path for the eksctl binary (used by Amazon EKS KaaS cluster provisioning functionality) to a new expected location.

  • Adjusted Kubernetes Cluster setup screen's ingress settings to be clearer and to give info on ingress defaults. portainer/portainer#10101

  • Resolved an issue with Kubernetes ECR image pull where the secret token was not updating on manifest deployment. portainer/portainer#10119

  • Resolved an issue on use of the 'Restrict Proc Mount Types' Kubernetes pod security constraint where the restriction was not being applied.

  • Resolved an issue in the Kubernetes Advanced deployment screen, where a backend panic could occur when deploying some invalid YAML manifests.

  • Updated the link to Portainer documentation (following docs reorganization) for Kubernetes Add Environment via kubeconfig Import.

  • Resolved an issue where Node stats for a Google Kubernetes Engine (GKE) cluster gave an error 'unable to retrieve node metrics'.

  • Migrated the Kubernetes Add/Edit Application screen's Services section from Angular to React. portainer/portainer#9235

  • Reintroduced the ability to specify and use (via Add/Edit Application) ingress defaults (hostname and annotations). portainer/portainer#10030

  • Reintroduced the ability to publish via ingress from the Add/Edit Application screen. portainer/portainer#10103

  • Introduced the ability to force setting of a note when creating/editing a Kubernetes application (via form), so it can immediately be labelled with its intended use.

  • Introduced correct redirecting of the user, following deployment of a Kubernetes manifest. Previously the user was always returned to the Applications List but will now arrive back at the screen from which they accessed the Advanced Deployment function. portainer/portainer#10115

  • Migrated the Kubernetes Application Details screen's Summary and Details sections from Angular to React. portainer/portainer#10102

  • Introduced a loading spinner to the Add/Edit ingress screen's ingress class dropdown, to indicate that available options are still being retrieved. portainer/portainer#10000

  • Resolved an issue that was occurring on the exposing of Portainer over a subpath, where Kubernetes Cluster Setup and other screens failed to load and reported an error. portainer/portainer#10112

  • Resolved an issue around limiting of Kubernetes pod security constraints updates.

  • Split the Kubernetes ConfigMaps & Secrets functionality in order to provide better performance and a clearer user experience. We now have separate tabs in the list screen and separate add/edit functions. portainer/portainer#9222

  • Introduced the ability to set annotations against Kubernetes Services, so they can be configured for service meshes and other tools.

  • Resolved an issue with Kubernetes pages where a warning showed in the browser console ('findDOMNode is deprecated in StrictMode') when resource assignment was first toggled on for the namespace. portainer/portainer#10111

  • Updated BE Kubernetes Add/Edit Ingress screen to allow use of NodePort or LoadBalancer service types (in addition to existing ClusterIP).

  • Updated Kubernetes ConfigMaps & Secrets terminology that was previously shown as Configurations, so as to align more clearly with Kubernetes. portainer/portainer#10025

  • Introduced the ability to specify a manifest to be auto deployed to a Kubernetes cluster when connecting or provisioning one. This allows the environment to be initialized with users, namespaces, secrets, etc., as required.

  • In the Dashboard screen of Kubernetes environments, Ingresses and Services panels have now been introduced, providing a count of these resources and an easy means to click through and access their list screens. portainer/portainer#9223

  • Introduced showing of the error that occurs when a Kubernetes deployment is prevented by any pod security constraints that have been enabled.

  • Migrated Kubernetes Application console page from Angular to React. portainer/portainer#9177

  • Resolved a Node details issue where nodes showed incorrect role of 'Worker' due to deprecated 'node-role.kubernetes.io/master' K8s label (now 'control-plane'). Also where MicroK8s cluster nodes were incorrectly identified (though not due to labels). portainer/portainer#10104

KaaS

  • Ensured Kubernetes 1.27 is supported with Google Kubernetes Engine (GKE) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.26 is supported with Google Kubernetes Engine (GKE) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.27 is supported with Azure Kubernetes Service (AKS) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.27 is supported with Digital Ocean Kubernetes (DOKS) provisioning of KaaS clusters.

  • Ensured Kubernetes 1.26 is supported with Linode Kubernetes Engine (LKE) provisioning of KaaS clusters.

  • Applied updates and ensured Kubernetes 1.27 is supported with Amazon Elastic Kubernetes Service (EKS) provisioning of KaaS clusters.

MicroK8s

  • Added Beta support for MicroK8s version 1.28 when creating and managing MicroK8s clusters. Note that 1.27 is still the default option for now, as only limited testing of 1.28 has been performed.

  • Introduced the ability for admins to enable the nfs addon (that has prerequisites) for a MicroK8s cluster, and for admins and environments admins to enable or disable the nfs addon for a MicroK8s cluster, after is has been provisioned.

  • Introduced the ability for admins to enable the openebs addon (that has prerequisites) for a MicroK8s cluster, and for admins and environments admins to enable or disable the openebs addon for a MicroK8s cluster, after is has been provisioned.

  • Introduced the ability for admins and environment admins to retrieve a status report on each control plane node of a MicroK8s cluster.

  • Introduced the ability for admins and environment admins to enable and disable addons that require arguments and generally specify arguments for addons for a MicroK8s cluster.

  • Introduced the ability for admins and environment admins to connect via SSH console to nodes in a MicroK8s cluster.

  • Introduced the ability for admins and environment admins to enable/disable community addons on a MicroK8s cluster created via Portainer. Note: On upgrade to this release, existing MicroK8s clusters created via Portainer are set to allow community addons.

  • Introduced the ability for admins and environment admins to enable or disable addons for a MicroK8s cluster, after it has been provisioned.

  • Introduced the ability for admins, when removing a MicroK8s environment, to also delete the cluster on the nodes, leaving them in a fresh state, ready to begin again.

  • Introduced the ability for admins and environment admins to horizontally scale up or down a MicroK8s cluster (i.e. add or remove nodes), after it has been provisioned.

  • Introduced the ability for admins and environment admins to upgrade the version of a MicroK8s cluster.

  • Added support for MicroK8s version 1.27 when creating MicroK8s clusters and removed warnings in the UI around a Metrics Server issue with MicroK8s 1.25 and 1.26, now that they've been patched to resolve the issue.

  • Fixed an issue in Environment and Cluster Details screens for a MicroK8s cluster that failed to provision via Portainer. In this scenario, the display of enabled addons no longer triggers (whereas, it would previously still attempt it, causing a problem).

  • Added info text to Kubernetes MicroK8s functionality to inform that nodes must be internet routable and open on certain ports.

Portainer

  • Fixed an issue where a bad gateway response occurred when updating an environment with an empty URL. portainer/portainer#10123

  • Resolved an issue where users were unable to deploy a stack when utilising an image from a private GitLab registry. portainer/portainer#10124

  • To identify Portainer submenus more clearly, their sub-options are now indented. portainer/portainer#9216

  • Added a link to the Portainer Assistant/Chatbot settings taking you to an explanatory blogpost.

  • Fixed an issue where the Portainer Assistant/Chatbot icon could eclipse list table screens' pagination.

  • Introducing a new feature that enhances version tracking and clarity for stacks deployed from Git repositories.

  • Resolved an issue around orphaned environments being included in the total count of nodes.

  • Renamed "Automatic updates" in Git deployment section to "GitOps Updates" to clarify the feature at first glance for users. Please note this is a name change only and no functionality has been altered. portainer/portainer#10175

  • Resolved an issue with the App Templates screen, where a Kubernetes icon was incorrectly showing for Docker Swarm stacks. Also updated the Swagger API documentation to detail the existence of a 'Compose edge stack' App Template (numbered 4) type. portainer/portainer#10028

  • Fixed an issue where saving Git credentials and subsequently redeploying a stack resulted in an error.

  • Resolved a minor UI issue where warning icons were smaller in size in multi-line warning messages. portainer/portainer#10118

  • Fixed an issue where standard users were unable to create Azure Container Instances (ACI) resources. portainer/portainer#10152

  • Fixed an issue where line break HTML tags were showing in some pop-up dialogs instead of actual line breaks. portainer/portainer#9226

  • Improved App Templates page with enhanced cursor icon and tile highlighting portainer/portainer#10136

  • Improved rolling back to CE from a CE to BE migration, by providing better logging and performing a check that the db file exists. portainer/portainer#9225

  • Fixed an issue where edge devices were incorrectly counted as nodes while in the waiting room. Now, waiting room devices are excluded from node count, ensuring accurate resource allocation and adherence to policy.

  • Fixed an issue where the primary environment remained permanently down after restoring from backup. portainer/portainer#10137

  • Introduced validation to prevent the use of invalid names when creating or editing Kubernetes or Docker Custom Templates. portainer/portainer#10113

  • Fixed an issue where the 'Skip TLS Verification' option was not functioning properly for custom templates. portainer/portainer#10138

  • Resolved a minor UI issue where multi-line text-tip and form-error icons were incorrectly vertically center-aligned rather than top-aligned. portainer/portainer#10118

  • Fixed an issue where the hover interaction for the environment tile on the homepage was missing portainer/portainer#10136

  • Fixed a security issue where usernames and passwords were displayed in responses. portainer/portainer#10140

  • Improved error logging in libhttp to provide more useful context. portainer/portainer#10142

  • Addressed an issue where TLS handshake error messages were being logged, which should only occur when using the DEBUG log level. portainer/portainer#10144

  • Fixed an issue where using spaces in an Organizational Unit (OU) or Common Name (CN) name caused incorrect data to be displayed in the Active Directory configuration.

  • Fixed an issue where Git deployment did not synchronize authentication status.

  • Resolved an issue where unnecessary snapshots were being loaded on the home page, leading to improved loading times and a smoother user experience portainer/portainer#10147

  • Resolved an issue where users were not being notified about the proper referencing of their uploaded .env files, requiring them to now utilize "stack.env" for appropriate referencing portainer/portainer#10148

  • Introduced a 'copy to clipboard' button to web editors within the Portainer UI. portainer/portainer#10116

  • Introduced the ability to manage time in seconds or milliseconds for container logs, expanding your time management options beyond seconds for more insightful troubleshooting. portainer/portainer#10176

  • Resolved a logging issue with database migrations, where, if an error occurred causing a rollback to the pre-upgrade version of the database, that error was no longer output to the console. portainer/portainer#10110

  • Provided icons for 'image up to date' indicators (in place of the previous colored circles) shown in Docker Stacks, Services and Containers list screens. This improves accessibility for color-blind users.

  • Resolved an issue that prevented users from stopping stacks with invalid project names during their upgrade from versions 2.6 or 2.7 to 2.13, 2.14, 2.15, 2.16, and subsequent versions. portainer/portainer#10163

  • Resolved an issue that prevented users from deleting stacks with invalid project names during their upgrade from versions 2.6 or 2.7 to 2.13, 2.14, 2.15, 2.16, and subsequent versions. portainer/portainer#10164

  • Resolved an issue where users were unable to browse image tags in a private Sonatype registry.

  • Resolved an issue where mouse clicks were not functioning within the "Display Users" section of Active Directory under authentication settings.

  • Resolved an issue where users were encountering difficulties when attempting to push images using a service principal account on Azure Registry. portainer/portainer#10155

  • Fixed an issue where delete confirmation modals were absent for edge stacks, Docker images, environment groups, and tags. portainer/portainer#10156

  • Fixed an issue where the creation of manifest file paths slice was incorrect. portainer/portainer#10170

  • Resolved a minor grammatical issue with a log line recorded when the Docker image up to date indicator check runs but there are no registries defined.

  • Community contribution - The enhancement ensures that the response rewrite operation is properly wrapped with a valid status check, contributing to a more robust and reliable system behavior. portainer/portainer#2705

  • Fixed an issue where enabling GPU support on existing containers resulted in errors. portainer/portainer#10174

  • Addressed an issue where users were unable to update the TLS certificate for the Docker API environment. portainer/portainer#10166

  • Resolved an issue where incorrect AWS ECR icon was used when creating registry portainer/portainer#10162

  • Added a feature that allows users to update to the latest Portainer Business Edition version directly from within the app

  • Improved the way ANSI escape codes are handled in logs. With this enhancement, logs will now provide clearer and more readable information by effectively stripping out ANSI escape codes.

  • Fixed a user interface issue where only up to 100 groups were being displayed. portainer/portainer#10160

  • Addressed an issue where using incorrect Azure registry credentials resulted in errors, even after updating with correct credentials, the issue persisted. portainer/portainer#10159

  • Resolved an issue where custom templates created from Git were not being pulled again at deploy time. This improvement has also been extended to Kubernetes custom templates. portainer/portainer#10157

Development

  • Resolved an issue with new React version list screens where filter icons were not positioned next to the correct column heading but were abutting the next heading along. portainer/portainer#10098

  • Applied changes to the helper-reset-password utility to prevent it being accidentally used with the Docker Desktop Extension version of Portainer (where it could break access to the Portainer instance). portainer/portainer#10109

  • Replaced archived gorilla/securecookie library with just the function that we need extracted out. portainer/portainer#10008

  • Transitioned Edge stack environments table to React, delivering a more dynamic user experience with modernized interface, improved performance, and interactive management. portainer/portainer#10210

REST API Changes

  • Corrected API method from 'GET' to 'POST' and path for generate edge key in Swagger API docs

  • Documented 'excludeSnapshots' in Swagger API docs portainer/portainer#10130

  • Documented webhook types in Swagger API docs portainer/portainer#9121

  • Resolved a 2.0 validation error in our Swagger API documentation portainer/portainer#10135

  • Corrected an error in our Swagger API documentation where 'EdgeTunnelServerAddress' was marked as required. It is now correctly marked as optional

  • We have updated the response for /endpoint to correctly reference 'EdgeCheckinInterval' in line with the accurate API Swagger documentation portainer/portainer#10139

  • Corrected missing type and 'file' to 'File' in Swagger API documentation for custom templates portainer/portainer#10141

  • Added descriptions to the Swagger API documentation for Kubernetes API endpoints that were previously missing from the docs. portainer/portainer#10106

  • Fixed an API issue where requests to create edge stacks with invalid deployment types were erroneously accepted portainer/portainer#10168

  • Addressed an issue in the 'edgeStackCreate' API where sending an incorrect request resulted in a 500 error response instead of the expected 400 error. portainer/portainer#10169

  • Fixed an issue in Swagger API documentation where 'endpointId' was incorrectly marked as optional. It is now correctly set as a required field portainer/portainer#10173

  • Removed the incorrect documentation for the DELETE method on the license API, as it is not supported. Documented the correct way to perform the operation using the POST method on the license API in Swagger API documentation.

  • Corrected Swagger API documentation for starting or stopping stacks portainer/portainer#8001

  • Corrected 'ResourceId' and 'endpointId' as required instead of optional in Swagger API documentation for webhooks portainer/portainer#9121

  • Fixed the Swagger API documentation to require 'endpointId' when updating a stack portainer/portainer#10161

  • Corrected 'Endpoints' to be listed in alphabetical order in Swagger API docs portainer/portainer#10158

Broken endpoints: 10
  • GET /cloud/microk8s/addons

  • POST /cloud/{provider}

  • GET /cloudcredentials

  • POST /cloudcredentials

  • PUT /cloudcredentials

  • POST /custom_templates

  • POST /edge_jobs

  • POST /edge_stacks

  • GET /endpoints/{id}/edge/generate-key

  • POST /stacks

New endpoints: 70
  • GET /cloud/credentials

  • POST /cloud/credentials

  • PUT /cloud/credentials

  • GET /cloud/endpoints/{endpointid}/nodes/nodestatus

  • GET /cloud/endpoints/{environmentid}/addons

  • POST /cloud/endpoints/{environmentid}/addons

  • POST /cloud/endpoints/{environmentid}/nodes/add

  • POST /cloud/endpoints/{environmentid}/nodes/remove

  • POST /cloud/endpoints/{environmentid}/upgrade

  • GET /cloud/endpoints/{environmentid}/version

  • POST /cloud/testssh

  • POST /custom_templates/file

  • POST /custom_templates/repository

  • POST /custom_templates/string

  • PUT /custom_templates/{id}/git_fetch

  • GET /edge_configurations

  • POST /edge_configurations

  • PUT /edge_configurations

  • DELETE /edge_configurations/{id}

  • GET /edge_configurations/{id}

  • GET /edge_configurations/{id}/files

  • PUT /edge_configurations/{id}/{state}

  • POST /edge_jobs/create/file

  • POST /edge_jobs/create/string

  • POST /edge_stacks/create/file

  • POST /edge_stacks/create/repository

  • POST /edge_stacks/create/string

  • POST /edge_stacks/webhooks/{webhookID}

  • PUT /edge_stacks/{id}/git

  • GET /edge_stacks/{id}/stagger/status

  • POST /endpoints/edge/generate-key

  • PUT /endpoints/relations

  • POST /gitops/repo/file/preview

  • GET /kubernetes/{endpointId}/opa

  • GET /kubernetes/{id}/ingresscontrollers

  • PUT /kubernetes/{id}/ingresscontrollers

  • POST /kubernetes/{id}/ingresses/delete

  • GET /kubernetes/{id}/metrics/nodes

  • GET /kubernetes/{id}/metrics/nodes/{name}

  • GET /kubernetes/{id}/metrics/pods/{namespace}

  • GET /kubernetes/{id}/metrics/pods/{namespace}/{name}

  • GET /kubernetes/{id}/namespaces

  • DELETE /kubernetes/{id}/namespaces/{namespace}

  • GET /kubernetes/{id}/namespaces/{namespace}

  • POST /kubernetes/{id}/namespaces/{namespace}

  • PUT /kubernetes/{id}/namespaces/{namespace}

  • GET /kubernetes/{id}/namespaces/{namespace}/ingresscontrollers

  • PUT /kubernetes/{id}/namespaces/{namespace}/ingresscontrollers

  • GET /kubernetes/{id}/namespaces/{namespace}/ingresses

  • POST /kubernetes/{id}/namespaces/{namespace}/ingresses

  • PUT /kubernetes/{id}/namespaces/{namespace}/ingresses

  • GET /kubernetes/{id}/namespaces/{namespace}/services

  • POST /kubernetes/{id}/namespaces/{namespace}/services

  • PUT /kubernetes/{id}/namespaces/{namespace}/services

  • PUT /kubernetes/{id}/opa

  • POST /kubernetes/{id}/services/delete

  • POST /stacks/create/kubernetes/repository

  • POST /stacks/create/kubernetes/string

  • POST /stacks/create/kubernetes/url

  • POST /stacks/create/standalone/file

  • POST /stacks/create/standalone/repository

  • POST /stacks/create/standalone/string

  • POST /stacks/create/swarm/file

  • POST /stacks/create/swarm/repository

  • POST /stacks/create/swarm/string

  • POST /system/update

  • POST /webhooks/{id}

  • DELETE /webhooks/{token}

  • PUT /webhooks/{token}

  • GET /websocket/microk8s-shell

Modified endpoints: 56
  • GET /cloud/{provider}/info

    • New path param: provider

    • Deleted query param: credentialId

  • PUT /custom_templates/{id}

  • GET /docker/{environmentId}/containers/{containerID}/image_status

    • New path param: containerId

    • New path param: environmentId

  • GET /docker/{environmentId}/services/{serviceID}/image_status

    • New path param: environmentId

    • New path param: serviceId

  • GET /docker/{environmentId}/snapshot/containers/{containerId}

    • New path param: containerId

  • GET /docker/{environmentId}/stacks/{id}/images_status

    • New path param: environmentId

    • New path param: id

  • PUT /edge_stacks/{id}

  • GET /edge_stacks/{id}/file

    • New query param: commitHash

    • New query param: version

  • PUT /edge_stacks/{id}/status

  • DELETE /edge_stacks/{id}/status/{endpoint_id}

    • New path param: environmentId

    • Deprecated changed from false to true

  • GET /edge_update_schedules/previous_versions

    • New query param: skipScheduleID

  • DELETE /edge_update_schedules/{id}

    • New path param: id

  • GET /edge_update_schedules/{id}

    • New path param: id

  • GET /endpoints

    • New query param: edgeCheckInPassedSeconds

    • New query param: edgeStackStatus

    • New query param: excludeSnapshots

  • POST /endpoints

  • POST /endpoints/edge/async

    • Deleted path param: id

  • DELETE /endpoints/{id}

    • Responses changed

      • New response: 403

  • PUT /endpoints/{id}

  • GET /endpoints/{id}/edge/stacks/{stackId}

    • New query param: version

  • PUT /endpoints/{id}/pools/{rpn}/access

    • Description changed from 'update the access on the resource pool in the current environment Access policy: restricted' to 'update the access on the namespace in the current environment Access policy: restricted'

  • POST /fdo/configure/{guid}

    • New path param: guid

  • DELETE /fdo/profiles/{id}

    • New path param: id

  • GET /fdo/profiles/{id}

    • New path param: id

  • PUT /fdo/profiles/{id}

    • New path param: id

  • POST /fdo/profiles/{id}/duplicate

    • New path param: id

  • POST /gitops/repo/files/search

  • GET /kubernetes/config

    • Description changed from 'Generates kubeconfig file enabling client communication with k8s api server Access policy: authenticated' to 'Generate a kubeconfig file enabling client communication with k8s api server Access policy: authenticated'

  • PUT /kubernetes/{endpointId}/opa

    • New path param: environmentId

    • Deleted path param: id

  • GET /kubernetes/{id}/namespaces/{namespace}/applications

    • New path param: namespace

    • Deleted query param: namespace

  • GET /kubernetes/{id}/opa

    • Modified path param: id

      • Description changed from 'Environment(Endpoint) identifier' to 'Environment identifier'

  • GET /nomad/endpoints/{endpointID}/allocation/{id}/events

    • New path param: environmentId

    • New path param: id

  • GET /nomad/endpoints/{endpointID}/allocation/{id}/logs

    • New path param: environmentId

    • New path param: id

  • GET /nomad/endpoints/{endpointID}/dashboard

    • New path param: environmentId

  • GET /nomad/endpoints/{endpointID}/jobs

    • New path param: environmentId

  • DELETE /nomad/endpoints/{endpointID}/jobs/{id}

    • New path param: environmentId

    • New path param: id

  • GET /nomad/endpoints/{endpointID}/leader

    • New path param: environmentId

  • POST /open_amt/{id}/activate

    • Modified path param: id

      • Description changed from 'Environment(Endpoint) identifier' to 'Environment identifier'

  • POST /open_amt/{id}/devices/{deviceId}/action

    • New path param: deviceId

    • New path param: id

  • POST /open_amt/{id}/devices_features/{deviceId}

    • New path param: deviceId

    • New path param: id

  • GET /open_amt/{id}/info

    • New path param: id

  • DELETE /registries/{id}/ecr/repositories/{repositoryName}/tags

    • New path param: repositoryName

  • PUT /settings

  • PUT /ssl

  • POST /stacks/webhooks/{webhookID}

  • DELETE /stacks/{id}

    • Modified query param: endpointId

      • Description changed from 'Environment(Endpoint) identifier used to remove an external stack (required when external is set to true)' to 'Environment identifier'

      • Required changed from false to true

  • PUT /stacks/{id}

    • Modified query param: endpointId

      • Description changed from 'Stacks created before version 1.18.0 might not have an associated environment(endpoint) identifier. Use this optional parameter to set the environment(endpoint) identifier used by the stack.' to 'Environment identifier'

      • Required changed from false to true

  • PUT /stacks/{id}/associate

    • Modified query param: endpointId

      • Description changed from 'Stacks created before version 1.18.0 might not have an associated environment(endpoint) identifier. Use this optional parameter to set the environment(endpoint) identifier used by the stack.' to 'Environment identifier'

  • GET /stacks/{id}/file

    • New query param: commitHash

    • New query param: version

  • POST /stacks/{id}/start

    • New query param: endpointId

  • POST /stacks/{id}/stop

    • New query param: endpointId

  • POST /tags

  • GET /webhooks

    • Modified query param: EndpointID

      • Required changed from false to true

    • Modified query param: ResourceID

      • Required changed from false to true

  • POST /webhooks

  • PUT /webhooks/{id}

    • New path param: id

  • PUT /webhooks/{id}/reassign

    • New path param: id

  • POST /webhooks/{token}

    • Modified path param: token

Release 2.18.4

July 7, 2023

This release includes an experimental ChatGPT integration. Although it promises exciting possibilities, it's in the early stages of development. We recommend its use for testing and development, and urge caution in production environments. We greatly appreciate your feedback and understanding during this phase. portainer/portainer#9116

Resolved CVEs

Portainer dependencies

Docker

Swarm

Portainer

  • Resolved an issue where the static IP addresses in a macvlan were unexpectedly changed. portainer/portainer#9101

  • Enhanced the user experience of the 'Skip TLS Verification' feature by adding a confirmation modal. portainer/portainer#9098

  • Resolved an issue where recreate containers fail when it has a shared and external volumes. portainer/portainer#9102

  • Fixed issue where registry credential does not sync between registry configuration page and registry details page.

  • Fixed an issue around prompting for a new license.

  • Improved the way node count shows for trial licenses.

  • Resolved an issue where update or rollback was only executed when connection was re-established.

  • Introduced a change to allow removal of all Portainer licenses.

  • Fixed an issue where a warning banner was not always showing in the Homepage or Licenses page when licenses were close to expiring.

REST API Changes

  • Resolved an issue where the response from the API was inconsistent when querying all endpoints and a specific endpoint. portainer/portainer#9096

  • Corrected 'container' to 'containers' in Swagger API docs (Business Edition).

Release 2.18.3

May 22, 2023

In this release, we introduce an experimental ChatGPT integration. Although it promises exciting possibilities, it's in the early stages of development. We recommend its use for testing and development, and urge caution in production environments. We greatly appreciate your feedback and understanding during this phase.

Edge

  • Fixed issue preventing configuration of Portainer authentication settings with an alternative mTLS certificate

  • Resolved issue causing edge agent to skip command processing during full snapshot resend

Kubernetes

  • Restored options and wording in the Kubernetes Advanced deployment screen's Automatic updates section, following regression from changes in 2.17. (portainer/portainer#8950)

Docker

  • Resolved issue preventing correct display of network details when containers are running on an unexpected Docker swarm node. (portainer/portainer#8981)

Portainer

  • Introduced ChatGPT integration as an experimental feature, currently not recommended for production environment use

  • Fixed issue preventing LDAP server from creating a connection when using TLS 1.2. (portainer/portainer#8980)

  • Implemented minor UI changes to clarify existing experimental and beta features, ensuring accurate icon and wording display. (portainer/portainer#8951)

  • Corrected an issue causing the polling indicator to float incorrectly in UI when pulling Git repo list on the stack creation page. (portainer/portainer#8982)

  • Resolved syntax styling display issue in web editor. (portainer/portainer#8984)

  • Improved button color contrast in web editor. (portainer/portainer#8985)

  • Fixed visual hierarchy in web editor selection behavior. (portainer/portainer#8986)

REST API Changes

Release 2.18.2

May 1, 2023

Upgrade notice

  • Users upgrading from 2.16.x should note that a bug was introduced then which prevented enforcing of TLS verifications. This has now been fixed but, in circumstances where certificates were not set up correctly and appeared to work due to the bug, you may now need to resolve the certificate issue or deliberately set the new ‘Skip verification’ toggle.

Edge

  • Fixed issue where users were unable to update their Edge Agent to the latest version because the corresponding option was not available when creating a scheduled update

Kubernetes

  • Increased potential success rate of updating Portainer with larger databases by changing Kubernetes manifest and Helm chart for Portainer to have initialDelaySeconds of 45 (sec) and failureThreshold of 3. portainer/portainer#8860

Docker

Portainer

  • Fixed issue where the option to skip TLS verification was missing when editing a stack created from git. Additionally, to adhere to security best practices, the option’s default value has been corrected to be set to off during migration portainer/portainer#8853

  • Fixed issue where TLS verification was being skipped when creating / editing stacks created from git in version 2.16.x portainer/portainer#8853

  • Fixed issue where the port number in the displayed webhook link was incorrect when Portainer was running behind a reverse proxy

  • Resolved an issue with the updated web editor component, where it was not loading long YAML files correctly portainer/portainer#8848

Release 2.18.1

April 18, 2023

Please note 2.18.0 is not publicly available. This release is 2.18.1 and is our next GA release since "2.17.x". This was done due to the need to provide an upgradeable preview image to a customer.

Breaking changes

  • For breaking changes in the API, please see the REST API changes section.

  • The Kompose functionality in Kubernetes has been removed since 2.17.0. Compose yaml can no longer be deployed on Kubernetes.

  • Moved edge devices to the homepage view and removed edge devices menu option under edge compute.

  • Add devices button is replaced with new UX in environment wizard.

Resolved CVEs

Portainer dependencies
  • SNYK-JS-BOOTBOX-174704

  • SNYK-JS-FASTJSONPATCH-3182961

  • SNYK-JS-MINIMATCH-3050818

  • SNYK-JS-SANITIZEHTML-2957526

  • SNYK-JS-XMLDOMXMLDOM-3042243

  • SNYK-JS-XMLDOMXMLDOM-3092934

  • CVE-2022-23471

  • CVE-2021-41092

  • CVE-2022-41717

  • CVE-2022-32149

  • CVE-2022-27664

  • SNYK-GOLANG-GOLANGORGXNETHTTP2-3160322

Agent dependencies
  • CVE-2022-41717

  • SNYK-GOLANG-GOLANGORGXNETHTTP2-3160322

Upgrade notice

  • Since release 2.17.x we have added the ability to upgrade Edge Agents from Portainer when running on Docker Standalone / Docker Swarm / Nomad. Before using this feature we strongly advise to test this on a non-production environment first and have an alternative method available to connect to the Edge Device.

  • Any clusters connected to Portainer of version 1.23 Kubernetes and above will have their Pod Security Policies (if they have any and are using the pod security constraints feature) updated to the Pod Security Standards

Edge

  • Introduced a retry policy for edge stack deployment to improve success rate

  • Fixed issue where browse snapshot button was clickable for Kubernetes and Nomad edge agents in async mode

  • Fixed issue where upgrading edge agent from ECR private registry using certificates failed

  • Fixed issue when browsing async edge agents before first snapshot is received.

  • Provide feature flag for FDO feature to be shown in UI portainer/portainer#8696

  • Fixed issue when browsing non-existent async agent snapshot cause backend panic

  • Fixed issue for remote update schedules error incorrectly displaying for non admin users

  • Fixed the issue where the edge stack is not removed from edge agent when it has been deleted while edge agent is offline

  • Fixed issue where live connect button is clickable for async environment when it shouldn't be portainer/portainer#8697

  • Fixed issue where edge agent panics with malformed edge key

  • Introduced ability to view container's environment variable when browsing snapshot

  • Removed "Add Edge devices" from Edge Compute and introduced to Environment wizard by renaming Edge Agent to Edge Agent Standard and introduced Edge Agent Async UI options portainer/portainer#8783

  • Fixed an issue where "copy token" button was missing from edge agent environment wizard portainer/portainer#8554

  • Introduced remote updating edge agent from a private registry for docker standalone environment

  • Introduced ability to assign group, edge groups and tags to edge environment when using AEEC script

  • Fixed issue where live connect button is clickable for async environment when it shouldn't be portainer/portainer#8697

  • Fixed issue where edge job logs was not retrieved correctly when edge groups contain async devices

  • Changed default value for async check-in intervals from disabled to 1 minute to improve success rate of initial edge agent connection

  • Renamed AEEC to "Auto onboarding" for better user understanding

Kubernetes

  • Introduced a new feature to allow creating of a MicroK8s Kubernetes cluster on existing machines.

  • Improved performance of Kubernetes screens by adjusting rate limiting of Kubernetes go client. portainer/portainer#8682

  • Fixed an issue when provisioning a Civo Kubernetes cluster with the Kubernetes version left as the latest, due to Civo introducing Talos as a new Kubernetes cluster type (instead of K3s on Alpine) which then only applied to the latest Kubernetes version.

  • Improved Kubernetes Applications page performance by introducing a namespace filter. portainer/portainer#8637

  • Improved Kubernetes Dashboard page performance. portainer/portainer#8635

  • Improved the load time of various Kubernetes pages by removing existing API calls that retrieve namespace resource quota information, where they are not needed. portainer/portainer#8571

  • Introduced the ability to set annotations against various different Kubernetes objects via the existing form pages.

  • Introduced a new Services screen in Kubernetes environments to improve the visibility of all services that may exist in a cluster, and enable removing where they've inadvertently been left behind after manual removal of applications/deployments. portainer/portainer#8613

  • Introduced the ability to upload an internal SSL/TLS certificate which can then be used to access a Helm repository hosted on a private server.

  • Updated the pod security constraints feature to use newer OPA Gatekeeper 2.9 and moved the feature away from using Pod Security Policy resources with Kubernetes clusters of 1.23 and above (as they are now removed in Kubernetes 1.25 and above).

  • Added migration to ensure existing pod security constraints work on environments with new Pod Security Standards of updated OPA Gatekeeper 2.9. This includes migrating edge environments on post-upgrade connect that may occur on clicking into via Homepage.

  • Resolved an issue where pod security constraints were not being enforced (since 2.16).

Docker

  • Fixed issue where users are not able to re-create container with multiple networks

  • Fixed issue with relative path not working when private registry is used, due to private registry credentials not passing to unpacker

  • Resolved an issue where default storage detection logic that runs on Kubernetes environment connection was incorrectly running on Docker environment connection, and was therefore causing an error to be output to the logs (but was otherwise benign). portainer/portainer#8606

  • Improved the existing UI around GPU support for Docker Standalone environments, introduced an overall toggle to turn this on or off and generally improved performance in Docker Containers and Stacks screens where GPU columns may show. portainer/portainer#8646

  • Defaulted the image up to date indicator to on for new Docker environments added, or on upgrade from CE to BE for all Docker environments (now that caching and Ajax load performance improvements have been applied to this feature).

  • Fixed an issue where stack name validation was missing, causing deployments to fail portainer/portainer#8629

Nomad

  • Fixed issue where Nomad Edge Agent install script causes error when using environment variables

  • Introduced ability to upgrade edge agent in Nomad environment from within portainer UI

Portainer

  • Fixed issue where container log not showing when logs contain NULL value

  • Added form validation for S3 compatible host field

  • Resolved a minor UI issue with the Container details page's container health panel alignment and content label wrapping. portainer/portainer#8636

  • Fixed a typo in the placeholder text for the access control component's Authorized users dropdown where it said 'teams' but should have said 'users'. portainer/portainer#8565

  • Fixed issue where stack can not be deleted if relative path is removed from the mount point

  • Fixed issue where logs in JSON format displayed incorrectly in log viewer portainer/portainer#8787

  • Resolved an issue with slow performance of certain actions (such as bulk removing of unused container volumes or adding of Kubernetes ingresses) when a user has a long list of notifications (shown via the bell icon in the page header). portainer/portainer#8604

  • Fixed issue where you can not connect or configure Azure private registry from Portainer while registry is empty

  • Added release testing of ARM32 architecture for Portainer Agent

  • Resolved an issue that occurred when updating user preferences. portainer/portainer#8570

  • Introduced UI mechanism for automatic retrying of tunnel connection when it fails due to high latency portainer/portainer#8784

  • Added certificate support of AWS IAM Role Anywhere authentication for Agent and Edge Agent portainer/portainer#8789

  • Updated hide internal authentication prompt option to default to off

  • Fixed issue where searching is not functional in associated edge environment when creating edge group portainer/portainer#8589

  • Fixed issue with Docker Swarm environment where containers count weren't displaying correctly in homepage. portainer/portainer#8695

  • Fixed issue where skipping https verification was default to true for Azure git deployment portainer/portainer#8698

  • Fixed issue where TLS Min Version was not fully enforced portainer/portainer#8788

  • Fixed a minor issue on restarting a container where the toaster pop-up message shown had an extraneous slash in front of the container name. portainer/portainer#8563

  • Introduced ability to use different certificate for mTLS communication between Portainer server and agent.

  • Fixed an issue while in dark mode, where, with any auto-filled text in fill-ins, the cursor completely disappeared until you started typing again. portainer/portainer#8564

  • Resolved a minor issue in the Browse Registry screen on Kubernetes environments, where the Registries breadcrumb link would take non-admin users back to the Homepage instead of the Registries list screen.

  • Provide feature flag for FDO feature to be shown in UI portainer/portainer#8696

  • Fixed issue of missing requirement of TLS definition for endpoint creation and correct tagids parameter in swagger API portainer/portainer#8780

  • Improved Edge Agent Health status indicator and keep consistency with API response portainer/portainer#8781

  • Fixed issue where git deployment failed to edit or redeploy when compose path begin with slash portainer/portainer#8782

  • Fixed an issue in the restore from backup function, where a timeout error can occur and Portainer does not restart with the backup restored. portainer/portainer#8792

Development

REST API Changes

  • Fixed the API Swagger/OpenAPI documentation for some IDs that were defined as strings but should be integers. portainer/portainer#8794

  • Added to the API Swagger/OpenAPI documentation that you can upload a file to a Docker Standalone host when the host management feature is enabled. portainer/portainer#8793

New Endpoints: 2
  • GET /edge_update_schedules/previous_versions

  • POST /sshkeygen

Deleted Endpoints: 2
  • GET /system/info

  • POST /system/upgrade

Modified Endpoints: 39
  • POST /cloud/{provider}

  • POST /cloudcredentials

    • Description changed from 'Create a cloud credential Access policy: authenticated' to 'delete delete a cloud credential by ID Access policy: authenticated'

    • New query param: id

  • POST /custom_templates

  • PUT /custom_templates/{id}

  • POST /edge_groups

  • PUT /edge_groups/{id}

  • POST /edge_jobs

  • POST /edge_jobs/{id}

  • POST /edge_stacks

  • PUT /edge_stacks/{id}

  • POST /edge_update_schedules

  • GET /edge_update_schedules/active

  • GET /edge_update_schedules/agent_versions

  • POST /endpoint_groups

  • PUT /endpoint_groups/{id}

  • GET /endpoints

    • New query param: edgeAsync

    • Deleted query param: edgeDevice

    • Modified query param: edgeDeviceUntrusted

      • Description changed from 'if true, show only untrusted endpoints, if false show only trusted (relevant only for edge devices, and if edgeDevice is true)' to 'if true, show only untrusted edge agents, if false show only trusted edge agents (relevant only for edge agents)'

  • POST /endpoints

  • PUT /endpoints/{id}

  • POST /endpoints/{id}/docker/v2/browse/put

    • Description changed from 'Upload a file under a specific path on the file system of an environment (endpoint). Access policy: authenticated' to 'Use this environment(endpoint) to upload TLS files. Access policy: administrator'

    • Responses changed

      • New response: 204

      • Deleted response: 200

  • GET /endpoints/{id}/kubernetes/helm

    • Modified query param: filter

      • Required changed from true to false

    • Modified query param: namespace

      • Required changed from true to false

    • Modified query param: selector

      • Required changed from true to false

  • DELETE /endpoints/{id}/kubernetes/helm/{release}

    • Modified query param: namespace

      • Required changed from true to false

  • PUT /endpoints/{id}/registries/{registryId}

  • PUT /endpoints/{id}/settings

  • POST /gitops/repo/files/search

  • POST /gitops/repo/refs

  • POST /ldap/admin-groups

  • POST /ldap/check

  • POST /ldap/groups

  • POST /ldap/test

  • POST /ldap/users

  • POST /registries

  • PUT /registries/{id}

  • POST /resource_controls

  • PUT /settings

  • POST /stacks

  • POST /team

  • POST /webhooks

  • PUT /webhooks/{id}

  • PUT /webhooks/{id}/reassign

Release 2.17.1

February 22, 2023

Resolved CVEs

Docker

  • Fixed issue with recreating containers in the Portainer UI if they have been originally created via the CLI. portainer/portainer#8507

Portainer

  • Fixed an issue where upgrading to Business Edition leaves behind limited stack. portainer/portainer#8516

  • Fixed an issue where Edge Agent updater leaves behind limited stack.

  • Fixed grammar of placeholder for region field in S3 backup configuration. portainer/portainer#8515

  • Fixed an issue where an error occurred for upgrading Portainer to 2.17.0 version when Docker engine version is 19.03. portainer/portainer#8514

  • Fixed an issue where node enforcement message displayed incorrectly for trial license users.

  • Fixed an issue where git credentials are not selected when editing stack deployed from git repository.

Release 2.17.0

February 7, 2023

Known issues

  • Running Portainer with Docker Engine <= 19.03 (Docker API <= 1.40) will cause a fatal error similar to failed initializing upgrade service | error="failed to determine container platform: failed to retrieve docker info: Error response from daemon: client version 1.41 is too new. Maximum supported API version is 1.40"

Breaking changes

  • For breaking changes in the API, please see the REST API changes section

  • The Kompose functionality in Kubernetes has been removed. Compose yaml can no longer be deployed on Kubernetes.

  • Moved Edge Devices to the homepage view and removed Edge Devices menu option under Edge Compute

  • Add devices button is temporarily located on the Edge Compute Settings page

Resolved CVEs

Portainer dependencies

Agent dependencies

Upgrade notice

  • This release has added the ability to upgrade Edge Agents from Portainer when running on Docker Standalone. Before using this feature we strongly advise to test this on a non-production environment first and have an alternative method available to connect to the Edge Device.

Edge

  • Introduced the ability to remotely update edge agents from within Portainer

  • Moved Edge Devices to the homepage view: portainer/portainer#8333

  • Introduced the ability to browse snapshots of async edge environments from homepage view: portainer/portainer#8336

  • Optimized performance for scaling large numbers of edge agents: portainer/portainer#8349

  • Introduced option for pre-pull of images for edge stack deployment to increase deployment success rate

  • Added edge group support in edge jobs to allow execution across many devices

  • Introduce the ability to edit edge agent tunnel URL and API server URL from within Portainer

  • Introduced improved environment tile layout to address consistency when edge devices moved to homepage: portainer/portainer#8334

  • Clarified UX around polling intervals and poll frequency option in edge compute settings between async and normal edge agents.

  • Added info text to waiting room view

  • Fixed issue where edge stack incorrectly deployed to default namespace when there is a specified namespace defined in the manifest: portainer/portainer#8346

  • Fixed issue where select all checkbox is missing for edge stack and edge job tables: portainer/portainer#8029

  • Fixed issue with Edge device tags not showing on Create Edge Group screen: portainer/portainer#7936

  • Fixed issue where delete edge device does not remove it from the edge groups mapping: portainer/portainer#8348

  • Fixed issue where edge stack failed to deploy with private registry in async mode

  • Fixed issue where actions icon under edit edge stack page is not consistent

Kubernetes

  • Introduced new log viewer to Portainer Business Edition

  • Introduced the ability to edit the YAML manifest of Kubernetes objects and apply the changes via the Kubernetes patch function

  • Introduced global and cluster-level options to allow enforcing of code-based deployment of Kubernetes objects, preventing the use of Portainer forms and other less easy-to-repeat workflows

  • Introduced a new setting in the Cluster setup screen of a Kubernetes environment to allow enforcing of admin-only deploying of ingresses

  • Introduced the ability to specify updates to existing environment variables of a deployment via query string parameters on the Kubernetes application redeploy webhook

  • Added a rolling restart button to the Kube application UI

  • Introduced a new rollout-restart parameter to Kube application redeploy webhooks to allow remote initiating of zero-downtime deployment rolling restarts

  • Introduced an alternate means of authenticating connections to the Google Cloud platform (used by our KaaS provisioning of Google Kubernetes Engine environments), following their deprecation of the gcp auth plugin in Kubernetes v1.22 and removal in v1.26

  • Introduced experimental Kubernetes functionality (behind a feature flag) to allow installing of MicroK8s to existing machines

  • The Kubernetes deployment option for docker-compose format manifests and the Kompose conversion tool that enabled this have now been removed due to long-standing Common Vulnerabilities and Exposures (CVEs) in Kompose: portainer/portainer#8355

  • Improved the explanatory tooltips and info text for Kube application automatic updates functionality: portainer/portainer#8223

  • Updated Kubernetes as a Service (KaaS) cluster provisioning to use the latest eksctl tool for the AWS EKS platform, and support up to v1.23 of Kubernetes (use of this version was previously failing)

  • Resolved an issue where Kubernetes secrets were no longer shown in an expand panel for each application listed in the Applications list screen: portainer/portainer#8118

  • Improved config setting defaults when connecting clusters: ingress controllers (with a class) are auto detected/set as allowed, metrics API features setting is on (if metrics server is deployed), and storage classes with the 'default' annotation are on: