* feat(RBAC) EE-1304 list ingresses of current namespace other than all namespaces at front end side
* feat(RBAC) EE-1304 remove list ingresses from clusterrole
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(nodes limits)Review the resource assignement when creating a Kubernetes application EE-437
* feat(nodes limits) review feedback EE-437
* feat(nodes limits) workaround for lodash cloneDeep not working in production mode EE-437
* feat(nodes limits) calculate max cpu of slide bar with floor function instead of round function EE-437
* feat(nodes limits) another review feedback EE-437
* feat(nodes limits) cleanup code EE-437
* feat(nodes limits) EE-437 pr feedback update
* feat(nodes limits) EE-437 rebase onto develop branch
* feat(nodes limits) EE-437 another pr feedback update
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* fix EE-1078 Too strict form validation for docker environment variables (#5278)
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* fix(ingress): EE-1049 Ingress config is lost when deleting an application deployed with ingress (#5264)
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(app/k8s): update ingress scheme from v1beta1 to v1 (#5466)
Co-authored-by: cong meng <mcpacino@gmail.com>
Co-authored-by: Simon Meng <simon.meng@portainer.io>
Co-authored-by: LP B <xAt0mZ@users.noreply.github.com>
* feat(k8s/resource-pool): add the ability to mark/unmark resource pool as system
fix(kube/ns): check label to see if namespace is system
refactor(k8s/namespaces): rename variables
feat(kubernetes): toggle system state in the server (#5361)
fix(app/resource-pool): UI fixes
feat(app/resource-pool): add confirmation modal when unamrking system namespace
* refactor(app): review changes
* feat(app/namespaces): introduce store to retrieve namespace system status without changing all the kubernetes models
refactor(app/namespaces): remove unused code first introduced for system tagging
fix(app/namespaces): cache namespaces to retrieve system status regardless of namespace reference format
refactor(app): migrate namespace store from helper to a separate singleton
refactor(app): remove KubernetesNamespaceHelper from DI cycle
* refactor(app): normalize usage of KubernetesNamespaceHelper functions
* refactor(app/k8s): change namespace store to functions instead of class
Co-authored-by: LP B <xAt0mZ@users.noreply.github.com>
* kubernetes attributes done, swarm attributes halfway, aci to go
* all attributes for cypress selectors added
* kubernetes attributes done, swarm attributes halfway, aci to go
* all attributes for cypress selectors added
* all attributes for cypress selectors added
* fixed files from rebase, added docker sidebar element attributes
* kubernetes attributes done, swarm attributes halfway, aci to go
* all attributes for cypress selectors added
* all attributes for cypress selectors added
* removed files to match develop
* ammended comments
* removed bindings for switch
* - metric server api call disabled on cluster view
- metric server api call disabled on node view
- metric server api call disabled on namespace view
* enforcing resource access to function to ensure similarity to ee implementation
* fix(app):fix additional not save warning EE-799
* fix additional warning when user leave page
* fix additional warning when user leave page in buildImageController.js
* fix docker build controller additional warning message
* fix changes required from reviews
* - refactored ondestroy hook function to align it closer to (below) oninit
- removed duplicated hook func duplication in configurationController
Co-authored-by: zees-dev <dev.786zshan@gmail.com>
* feat EE-440/EE-436 kubernetes-resources-summary-panel
* bugfix: returning created resources after update
* fixed patch based bugs - displaying accurate updates for k8s resources
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* fix(frontend): When a docker endpoint is selected, configuring a newly added k8s agent fails EE-821
* fix(frontend): restore endpointID in a finally block EE-821
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(k8s/container): metrics layout
* feat(k8s/container): memory graph
* feat(k8s/container): cpu usage percent
* feat(k8s/metrics): metrics api validation to enable metrics server
* feat(k8s/pods): update error metrics view
* feat(k8s/container): improve stopRepeater function
* feat(k8s/pods): display empty view instead of empty graphs
* feat(k8s/pods): fix CPU usage
* feat(k8s/configure): fix the metrics server test
* feat(k8s/pod): fix cpu issue
* feat(k8s/pod): fix toaster for non register pods in metrics server
* feat(k8s/service): remove options before 30 secondes for refresh rate
* feat(k8s/pod): fix default value for the refresh rate
* feat(k8s/pod): fix rebase
* feat(dockerhub): introduce local status endpoint
* feat(proxy): rewrite request with dockerhub credentials
* feat(endpoint): check env type
* feat(endpoint): check for local endpoint
* feat(docker): introduce client side service to get limits
* feat(container): add info about rate limits in container
* feat(dockerhub): load rate limits just for specific endpoints
* feat(images): show specific dockerhub messages for admin
* feat(service-create): show docker rate limits
* feat(service-edit): show rate limit messages
* fix(images): fix loading of page
* refactor(images): move rate limits check to container
* feat(kubernetes): proxy agent requests
* feat(kubernetes/apps): show pull limits in application creation
* refactor(image-registry): move warning to end of field
* fix(image-registry): show right message for admin
* fix(images): silently fail when loading rate limits
* fix(kube/apps): use new rate limits comp
* fix(images): move rate warning to end
* fix(registry): move search to right place
* fix(service): remove service warning
* fix(endpoints): check if kube endpoint is local
* fix(home): redirect home if edge endpoint is down
* fix(kubernetes): rephrase error message when endpoint is down
Co-authored-by: Anthony Lapenna <anthony.lapenna@portainer.io>
Co-authored-by: Anthony Lapenna <anthony.lapenna@portainer.io>
* fix windows build
* fix(endpoints): show correct values of security settings (#4889)
* fix(app): EndpointProvider fallback on URL EndpointID when no endpoint is selected (#4892)
* fix(templates): App templates not loading with error in browser console (#4895)
* fix(kube/config): show used key warning when needed (#4890)
fix [CE-469]
- recalculate duplcate keys when they are changed
- show used warning on duplicate keys
* fix(k8s): CE-471 variables from configuration showing on environment variables section on application edit screen (#4896)
* fix(k8s): CE-471 variables from configuration showing on environment variables section on application edit screen
* fix(k8s): CE-471 avoid to remove value path of env when patch k8s deployment, as the value path does not exist if env variable has empty value.
Co-authored-by: Simon Meng <simon.meng@portainer.io>
Co-authored-by: Dmitry Salakhov <to@dimasalakhov.com>
Co-authored-by: Chaim Lev-Ari <chiptus@users.noreply.github.com>
Co-authored-by: LP B <xAt0mZ@users.noreply.github.com>
Co-authored-by: Maxime Bajeux <max.bajeux@gmail.com>
Co-authored-by: cong meng <mcpacino@gmail.com>
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(app): when leaving a view with unsaved changed, a modal prompt the user with a confirmation message
feat(app): when leaving a view with unsaved changes, a modal prompt the user with a confirmation message
* feat(app/web-editor): fix the modal behaviour when editing a stack details
* feat(app/web-editor): add a reusable function confirmWebEditorDiscard in modal service
* feat(docker/stack): fix missing dependency
* feat(node): Enable the ability to cordon/uncordon/drain nodes
* feat(cluster): check if there is a drain operation somewhere
* feat(kubernetes): allow to cordon, uncordon, drain nodes
* refacto(kubernetes): set a constant for drain label name
* fix(node): Relocate the warning message next to the dropdown and change the information message
* refactor(app): backport technical changes
* refactor(app): remove EE only features
* feat(app): small review changes to match EE codebase layout on some files
Co-authored-by: xAt0mZ <baron_l@epitech.eu>
* #4007 feat(yaml-inspector): add button to expand/collapse yaml inspector
* feat(yaml-inspector): add button to expand/collapse yaml inspector
Better yamlInspector.html formatting
* feat(yaml-inspector): change name of toggle function
More descriptive name for the function that toggles the expansion of the YAML inspector.
* fix(application): Can't update application with persisted data, after the storage option is disabled on cluster
* refacto(application): Some code extraction requested for better maintenance
* feat(app): sort environment variables
* feat(k8s/application): improve the sorting for the env variables when creating/editing application
* feat(k8s/application): update the removal of the env var
* feat(docker/service): improve the sorting order for env var in service edition view
* feat(configurations): Review UI/UX configurations
* feat(configurations): fix binary secret value
* fix(frontend): populate data between simple and advanced modes (#4503)
* fix(configuration): parseYaml before create configuration
* fix(configurations): change c to C in ConfigurationOwner
* fix(application): change configuration index to configuration key in the view
* fix(configuration): resolve problem in application create with configuration not overriden.
* fix(configuration): fix bad import in helper
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(kubernetes/pods): introduce patch api
* feat(k8s/pods): pod converter
* feat(kubernetes/pods): introduce patch api
* feat(k8s/pod): add annotations only if needed
* fix(k8s/pod): replace class with factory function
* feat(placement): Add a warning notification under the placement tab when an application cannot be scheduled on any node in the cluster
* fix(applications): if there is at least one node the application can schedule on, then do not show the warning
* fix(k8s/datatables): reduce size of collapse/expand column for stacks datatable and storage datatable
* fix(k8s/datatables): reduce size of expand/collapse column
* feat(k8s/resources-list-view): add advanced deployment panel to applications view, configurations view and volumes view
* feat(k8s/resources-list-view): move advanced deployment into a template and use it everywhere
* fix(frontend) unable to retrieve config map error when trying to manage newly created resource pool (ce#180) (#4618)
* fix(frontend) unable to retrieve config map error when trying to manage newly created resource pool (ce#180)
* fix(frontend) rephrase comments (#4629)
Co-authored-by: Stéphane Busso <sbusso@users.noreply.github.com>
Co-authored-by: Simon Meng <simon.meng@portainer.io>
Co-authored-by: Stéphane Busso <sbusso@users.noreply.github.com>
* + silently continue when downloading artifacts in windows (#4637)
* fix(docker/stack-details): do not display editor tab for external stack (#4650)
* Revert "chore(build): bump Kompose version (#4475)" (#4676)
This reverts commit 380f106571.
Co-authored-by: Stéphane Busso <sbusso@users.noreply.github.com>
Co-authored-by: cong meng <mcpacino@gmail.com>
Co-authored-by: Simon Meng <simon.meng@portainer.io>
Co-authored-by: Stéphane Busso <sbusso@users.noreply.github.com>
Co-authored-by: Anthony Lapenna <anthony.lapenna@portainer.io>
* fix(k8s/application): transform username to be dns compliant (#4595)
* fix(k8s/application): transform username to be dns compliant for configurations and resource pools(#4595)
* fix(k8s/application): update regex to replace all special characters (#4595)
Co-authored-by: Simon Meng <simon.meng@portainer.io>
* feat(app): add a preview for business edition features
* feat(app): open links in new tab + show storage quota section + grey out unavailable providers
* feat(k8s/resource-pool): set ingress hostname as mandatory and remove default backend
* refactor(k8s/resource-pool): use constants
* feat(k8s/configure): add experimental note about traefik
* feat(k8s/configure): separate ingress class name and ingress class type
* feat(k8s/resource-pool): ability to add custom annotations to ingress classes on RP create/edit
* feat(k8s/ingresses): remove 'allow users to use ingress' switch
* feat(k8s/configure): minor UI update
* feat(k8s/resource-pool): minor UI update
* feat(k8s/application): update ingress route form validation
* refactor(k8s/resource-pool): remove console.log statement
* feat(k8s/resource-pool): update ingress annotation placeholders
* feat(k8s/configure): add pattern form validation on ingress class
* fix(k8s/resource-pool): automatically associate ingress class to ingress
* fix(k8s/resource-pool): fix invalid ingress when updating a resource pool
* fix(k8s/resource-pool): update ingress rewrite target annotation value
* feat(k8s/application): ingress form validation
* fix(k8s/application): squash ingress rules with empty host inside a single one
* feat(k8s/resource-pool): ingress host validation
* fix(k8s/resource-pool): rewrite rewrite option and only display it for ingress of type nginx
* feat(k8s/application): do not expose ingress applications over node port
* feat(k8s/application): add specific notice for ingress
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(application): Support multi-container pods applications
* feat(application): Support multi-container pods applications
* fix(application): use only one pod in app details and fix logs and console links
* fix(application): show all containers in containers datatable
* fix(application): fix order by pod name
* feat(k8s/application): minor UI update
* feat(k8s/application): minor UI update
* feat(k8s/application): minor UI update
* feat(k8s/application): minor UI update
* feat(k8s/application): minor UI update
* fix(application): fix persisted folders in application details
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(k8s/endpoint): expose ingress controllers on endpoints
* feat(k8s/applications): add ability to expose applications over ingress - missing RP and app edits
* feat(k8s/application): add validation for ingress routes
* feat(k8s/resource-pools): edit available ingress classes
* fix(k8s/ingress): var name refactor was partially applied
* feat(kubernetes): double validation on RP edit
* feat(k8s/application): app edit ingress update + formvalidation + UI rework
* feat(k8s/ingress): dictionary for default annotations on ingress creation
* fix(k8s/application): temporary fix + TODO dev notice
* feat(k8s/application): select default ingress of selected resource pool
* feat(k8s/ingress): revert ingressClassName removal
* feat(k8s/ingress): admins can now add an host to ingress in a resource pool
* feat(k8s/resource-pool): list applications using RP ingresses
* feat(k8s/configure): minor UI update
* feat(k8s/configure): minor UI update
* feat(k8s/configure): minor UI update
* feat(k8s/configure): minor UI update
* feat(k8s/configure): minor UI update
* fix(k8s/ingresses): remove host if undefined
* feat(k8s/resource-pool): remove the activate ingresses switch
* fix(k8s/resource-pool): edditing an ingress host was deleting all the routes of the ingress
* feat(k8s/application): prevent app deploy if no ports to publish and publishing type not internal
* feat(k8s/ingress): minor UI update
* fix(k8s/ingress): allow routes without prepending /
* feat(k8s/application): add form validation on ingress route
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(node): Add the ability to apply taints and labels to nodes
* feat(k8s/node): minor UI update
* feat(k8s/node): UI update and disable system labels
* feat(k8s/node): minor UI update
* fix(node): fix add first taint
* refacto(node): add KubernetesNodeHelper
* feat(node): add used label to labels
* feat(node): add node update modals
* fix(node): modal when used label changes
* feat(k8s/node): minor UI update
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(volumes): Enhance the used by column for volumes
* feat(k8s/volumes): minor UI update
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(resourcepool): Reducing the Quota assigned to a RP
* fix(k8s/resource-pool): fix an issue with hasResourceQuotaBeenReduce condition
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(applications): update UI to use existing volumes
* feat(application): Add the ability to use existing volumes when creating an application
* feat(application): Existing persisted folders should default to associated volumes
* feat(application): add form validation to existing volume
* feat(application): remove the ability to use an existing volume with statefulset application
* feat(k8s/applications): minor UI update
* feat(k8s/application): minor UI update
* feat(volume): allow to increase volume size and few other things
* feat(volumes): add the ability to allow volume expansion
* fix(storage): fix the storage patch request
* fix(k8s/applications): remove conflict leftover
* feat(k8s/configure): minor UI update
* feat(k8s/volume): minor UI update
* fix(storage): change few things
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
* feat(cluster): add kubernetes endpoint resource
* feat(cluster): add kubernetes endpoint service
* feat(node): Show which IP address / port the cluster API is listening on
* fix(cluster): support multi-master clusters
* fix(cluster): support multi-master clusters
* feat(k8s/cluster): minor UI update
* refactor(k8s/cluster): rename variable
* refactor(k8s/endpoints): refactor KubernetesEndpointsFactory
Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>