Portainer - 2.18.1

Security

2.18.1

See Upgrading Portainer instructions.

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 change

  • 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

Overview of changes

New Portainer CE 2.18.1 release

Edge

  • Fixed issue where live connect button is clickable for async environment when it shouldn't be https://github.com/portainer/portainer/issues/8697
  • 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 https://github.com/portainer/portainer/issues/8783
  • Fixed an issue where "copy token" button was missing from edge agent environment wizard https://github.com/portainer/portainer/issues/8554

Kubernetes

  • Improved performance of Kubernetes screens by adjusting rate limiting of Kubernetes go client. https://github.com/portainer/portainer/issues/8682
  • Improved Kubernetes Applications page performance by introducing a namespace filter.. https://github.com/portainer/portainer/issues/8637
  • Improved Kubernetes Dashboard page performance. https://github.com/portainer/portainer/issues/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. https://github.com/portainer/portainer/issues/8571
  • 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. https://github.com/portainer/portainer/issues/8613

Docker

  • 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). https://github.com/portainer/portainer/issues/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. https://github.com/portainer/portainer/issues/8646
  • Fixed an issue where stack name validation was missing, causing deployments to fail https://github.com/portainer/portainer/issues/8629

Portainer

  • Changed "upgrade to BE banner" to subtle always and removed toggle option from account settings as no longer needed https://github.com/portainer/portainer/issues/8721
  • Provide feature flag for FDO feature to be shown in UI https://github.com/portainer/portainer/issues/8696
  • Resolved a minor UI issue with the Container details page's container health panel alignment and content label wrapping. https://github.com/portainer/portainer/issues/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'. https://github.com/portainer/portainer/issues/8565
  • Fixed issue where logs in JSON format displayed incorrectly in log viewer https://github.com/portainer/portainer/issues/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). https://github.com/portainer/portainer/issues/8604
  • Added release testing of ARM32 architecture for portainer agent
  • Resolved an issue that occurred when updating user preferences. https://github.com/portainer/portainer/issues/8570
  • Introduced UI mechanism for automatic retrying of tunnel connection when it fails due to high latency https://github.com/portainer/portainer/issues/8784
  • Added certificate support of AWS IAM Role Anywhere authentication for Agent and Edge Agent https://github.com/portainer/portainer/issues/8789
  • Fixed issue where searching is not functional in associated edge environment when creating edge group https://github.com/portainer/portainer/issues/8589
  • Fixed issue with Docker Swarm environment where containers count weren't displaying correctly in homepage. https://github.com/portainer/portainer/issues/8695
  • Fixed issue where skipping https verification was defaulted to true for azure git deployment https://github.com/portainer/portainer/issues/8698
  • Fixed issue where TLS Min Version was not fully enforced https://github.com/portainer/portainer/issues/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. https://github.com/portainer/portainer/issues/8563
  • 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. https://github.com/portainer/portainer/issues/8564
  • Fixed issue of missing requirement of TLS definition for endpoint creation and correct tagids parameter in swagger API https://github.com/portainer/portainer/issues/8780
  • Improved Edge Agent Health status indicator and keep consistency with API response https://github.com/portainer/portainer/issues/8781
  • Fixed issue where git deployment failed to edit or redeploy when compose path begin with slash https://github.com/portainer/portainer/issues/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. https://github.com/portainer/portainer/issues/8792

Development

  • Improved the layering of the Portainer Dockerfile to ensure internal development-related aspects are excluded where possible. https://github.com/portainer/portainer/issues/8559
  • Migrated git deployment page form Angular to React https://github.com/portainer/portainer/issues/8785
  • Migrated code editor component from Angular to React https://github.com/portainer/portainer/issues/8786
  • Introduced Tailwind prettier which will group utility classes project-wide and order them in a recommended way, making it easier to work with them. https://github.com/portainer/portainer/issues/8560
  • Introduced replacement for bootbox with react components https://github.com/portainer/portainer/issues/8588
  • Improved the feature flag architecture to make it easier to use. https://github.com/portainer/portainer/issues/8562
  • Resolved incorrect usage of log.fatal to ensure the application exits only as necessary. https://github.com/portainer/portainer/issues/8561

REST API Changes

  • Fixed the API Swagger/OpenAPI documentation for some IDs that were defined as strings but should be integers. https://github.com/portainer/portainer/issues/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. https://github.com/portainer/portainer/issues/8793

New Endpoints: 1

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

Deleted Endpoints: None

Modified Endpoints: 51

  • POST /custom_templates

  • PUT /custom_templates/{id}

  • GET /edge_groups

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /edge_groups

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /edge_groups/{id}

    • Responses changed
    • Modified response: 204
    • Description changed from '' to 'No Content'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_groups/{id}

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • PUT /edge_groups/{id}

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_jobs

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /edge_jobs

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /edge_jobs/{id}

    • Responses changed
    • Modified response: 204
    • Description changed from '' to 'No Content'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_jobs/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /edge_jobs/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_jobs/{id}/file

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_jobs/{id}/tasks

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /edge_jobs/{id}/tasks/{taskID}/logs

    • Responses changed
    • Modified response: 204
    • Description changed from '' to 'No Content'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_jobs/{id}/tasks/{taskID}/logs

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /edge_jobs/{id}/tasks/{taskID}/logs

    • Responses changed
    • Modified response: 204
    • Description changed from '' to 'No Content'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_stacks

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /edge_stacks

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /edge_stacks/{id}

    • Responses changed
    • Modified response: 204
    • Description changed from '' to 'No Content'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_stacks/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • PUT /edge_stacks/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_stacks/{id}/file

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • PUT /edge_stacks/{id}/status

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 403
    • Description changed from '' to 'Forbidden'
    • Modified response: 404
    • Description changed from '' to 'Not Found'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /edge_stacks/{id}/status/{endpoint_id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 403
    • Description changed from '' to 'Forbidden'
    • Modified response: 404
    • Description changed from '' to 'Not Found'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /edge_templates

    • Responses changed
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • 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}/edge/jobs/{jobID}/logs

    • Responses changed
    • Modified response: 200
    • Description changed from '' to 'OK'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /endpoints/{id}/edge/stacks/{stackId}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 404
    • Description changed from '' to 'Not Found'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • 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}/settings

  • POST /registries

  • PUT /registries/{id}

  • POST /resource_controls

  • POST /stacks

  • POST /stacks/{id}/git

  • POST /team

  • PUT /users/{id}

  • GET /webhooks

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /webhooks

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 409
    • Description changed from '' to 'Conflict'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • DELETE /webhooks/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • PUT /webhooks/{id}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 409
    • Description changed from '' to 'Conflict'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • POST /webhooks/{token}

    • Responses changed
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /websocket/attach

    • Responses changed
    • Modified response: 200
    • Description changed from '' to 'OK'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 403
    • Description changed from '' to 'Forbidden'
    • Modified response: 404
    • Description changed from '' to 'Not Found'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /websocket/exec

    • Responses changed
    • Modified response: 200
    • Description changed from '' to 'OK'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 409
    • Description changed from '' to 'Conflict'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'
  • GET /websocket/pod

    • Responses changed
    • Modified response: 200
    • Description changed from '' to 'OK'
    • Modified response: 400
    • Description changed from '' to 'Bad Request'
    • Modified response: 403
    • Description changed from '' to 'Forbidden'
    • Modified response: 404
    • Description changed from '' to 'Not Found'
    • Modified response: 500
    • Description changed from '' to 'Internal Server Error'

Details

date
April 18, 2023, 5:33 a.m.
name
Release 2.18.1
type
Minor
👇
Register or login to:
  • 🔍View and search all Portainer releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google
or