diff --git a/.github/workflows/renku-dev-test.yaml b/.github/workflows/renku-dev-test.yaml index 9f922efd99..d02c960016 100644 --- a/.github/workflows/renku-dev-test.yaml +++ b/.github/workflows/renku-dev-test.yaml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4.1.1 - - uses: cypress-io/github-action@v5 + - uses: cypress-io/github-action@v6 id: cypress env: TEST_EMAIL: renku@datascience.ch diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 12d757c3f4..7426a984f2 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,22 +1,70 @@ .. _changelog: +0.48.0 +------ + +This release contains a new privacy policy and terms of use in the UI and bug fixes to renku core service related to project migration. + +User-Facing Changes +~~~~~~~~~~~~~~~~~~~ + +**🌟 New Features** + +- 📜 **UI**: Show terms of use and privacy policy in the help section + (`#2954 `_). + +**✨ Improvements** + +- 🖌 **UI**: Improve appearance of templates on new project page + (`#2999 `_). +- 🛑 **UI**: Unify appearance of project settings alerts + (`#3001 `_). + +**🐞 Bug Fixes** + +- **Core Service**: Fix issue with having to run project migration twice to migrate the Dockerfile/project template. + (`#3690 `__) + - **UI**: Restore logged in/out notifications + (`#3014 `_). +- **UI**: Hide button to add storage on deployments not supporting external storages + (`#3001 `_). +- **UI**: Fix landing page parallax background (`#3010 `_). +- **UI**: Fix search bar styles (`#3019 `_). +- **UI**: Handle ``jsonrpc`` improper redirects (`#3017 `_, `#2966 `_). + +Internal Changes +~~~~~~~~~~~~~~~~ + +**Improvements** + +- **UI**: Add initial alpha implementation of Renku 1.0 projects + (`#2875 `_). + +Individual Components +~~~~~~~~~~~~~~~~~~~~~ + +- `renku-python 2.9.2 `_ +- `renku-ui 3.20.1 `_ +- `renku-ui 3.20.0 `_ + 0.47.1 ------ This release only includes changes to the documentation and updates to the acceptance tests. It doesn't bring any new features or bug fixes. + 0.47.0 ------ This release expands Renku's cloud storage functionality in two key ways: First, mounted storages are now read **and write**, so you can use mounted storage as an active workspace for your data in a RenkuLab session. Second, we have expanded the cloud storage services you can integrate with RenkuLab. You can now -mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs. - +mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs. + If you use SSH sessions via the CLI, you can use cloud storage there too! Configure cloud storage for your project on RenkuLab.io, and those storages will be mounted in your remote session. Support for cloud -storage in local Renku sessions is still on our roadmap. +storage in local Renku sessions is still on our roadmap. This release also adds the ability to change which resource class your session uses when you unpause the session, in case the original resource class is now full. @@ -147,15 +195,15 @@ Internal Changes Individual components ~~~~~~~~~~~~~~~~~~~~~ -- `renku-python 2.8.2 `_ +- `renku-python 2.8.2 `_ - `renku-ui 3.17.2 `_ -- `renku-graph 2.48.2 `_ +- `renku-graph 2.48.2 `_ 0.45.1 ------ -This is a bugfix release that updates the helm chart to work with new -prometheus metrics in the renku core service, which was preventing it from +This is a bugfix release that updates the helm chart to work with new +prometheus metrics in the renku core service, which was preventing it from starting properly if metrics were enabled. In addition this release also addresses problems with expiring Gitlab access tokens when sessions are paused and resumed which caused resumed session to not be able to push to Gitlab @@ -166,8 +214,8 @@ Internal Changes **🐞 Bug Fixes** -- **Helm Chart**: update core-service deployment to allow service and rq - metrics to run side-by-side (`#3303 +- **Helm Chart**: update core-service deployment to allow service and rq + metrics to run side-by-side (`#3303 `_). - **Notebooks**: use a larger /dev/shm folder in sessions (`#1723 `_) diff --git a/cypress-tests/cypress/e2e/checkWorkflows.cy.ts b/cypress-tests/cypress/e2e/checkWorkflows.cy.ts index da6e0670b4..d649064d2f 100644 --- a/cypress-tests/cypress/e2e/checkWorkflows.cy.ts +++ b/cypress-tests/cypress/e2e/checkWorkflows.cy.ts @@ -103,7 +103,8 @@ describe("Workflows pages", () => { .contains("span", "m") .should("be.visible"); cy.getDataCy("workflow-details") - .get("a#icon-link-5") + .contains("tr", "Default value") + .find("a") .should("be.visible") .click(); cy.get("#file-card-header") diff --git a/cypress-tests/cypress/e2e/useSession.cy.ts b/cypress-tests/cypress/e2e/useSession.cy.ts index 6348d10584..e402654566 100644 --- a/cypress-tests/cypress/e2e/useSession.cy.ts +++ b/cypress-tests/cypress/e2e/useSession.cy.ts @@ -233,74 +233,87 @@ describe("Basic public project functionality", () => { return; } - cy.stopAllSessionsForProject(projectIdentifier); - cy.intercept("/ui-server/api/data/storage*").as("getProjectCloudStorage"); + cy.getDataCy("cloud-storage-section") + .find("button") + .contains("Add Cloud Storage") + .should("be.visible") + .click(); + cy.getDataCy("cloud-storage-edit-header") + .contains("Add Cloud Storage") + .should("be.visible"); - cy.getProjectSection("Settings").click(); - cy.getDataCy("settings-navbar") - .contains("a.nav-link", "Cloud Storage") + cy.getDataCy("cloud-storage-edit-schema") + .contains("s3") + .should("be.visible") + .click(); + cy.getDataCy("cloud-storage-edit-providers") + .contains("AWS") + .should("be.visible") + .click(); + cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click(); + + cy.getDataCy("cloud-storage-edit-options").should("be.visible"); + cy.get("#sourcePath").should("have.value", "").type("giab"); + cy.get("#endpoint") + .should("have.value", "") + .type("http://s3.amazonaws.com"); + cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click(); + + cy.getDataCy("cloud-storage-edit-mount").should("be.visible"); + cy.get("#name").should("have.value", "").type("data_s3"); + cy.get("#mountPoint") + .should("have.value", "external_storage/data_s3") + .type("{selectAll}data_s3"); + cy.get("#readOnly").should("not.be.checked").check(); + + cy.getDataCy("cloud-storage-edit-update-button") .should("be.visible") + .contains("Add") .click(); - // Add a S3 storage configuration if it doesn't exist - cy.wait("@getProjectCloudStorage").then(({ response }) => { - const storages = response.body as { storage: { name: string } }[]; - if (storages.find(({ storage }) => storage.name === "data_s3")) { - return; - } - - cy.getDataCy("cloud-storage-section") - .find("button") - .contains("Add Cloud Storage") - .should("be.visible") - .click(); - cy.getDataCy("cloud-storage-edit-header") - .contains("Add Cloud Storage") - .should("be.visible"); - - cy.getDataCy("cloud-storage-edit-schema") - .contains("s3") - .should("be.visible") - .click(); - cy.getDataCy("cloud-storage-edit-providers") - .contains("AWS") - .should("be.visible") - .click(); - cy.getDataCy("cloud-storage-edit-next-button") - .should("be.visible") - .click(); - - cy.getDataCy("cloud-storage-edit-options").should("be.visible"); - cy.get("#sourcePath").should("have.value", "").type("giab"); - cy.get("#endpoint") - .should("have.value", "") - .type("http://s3.amazonaws.com"); - cy.getDataCy("cloud-storage-edit-next-button") - .should("be.visible") - .click(); - - cy.getDataCy("cloud-storage-edit-mount").should("be.visible"); - cy.get("#name").should("have.value", "").type("data_s3"); - cy.get("#mountPoint") - .should("have.value", "external_storage/data_s3") - .type("{selectAll}data_s3"); - cy.get("#readOnly").should("not.be.checked").check(); - - cy.getDataCy("cloud-storage-edit-update-button") - .should("be.visible") - .contains("Add") - .click(); - - cy.getDataCy("cloud-storage-edit-body").contains( - "storage data_s3 has been succesfully added" - ); - cy.getDataCy("cloud-storage-edit-close-button") - .should("be.visible") - .click(); - }); - - cy.getDataCy("more-menu").should("be.visible").click(); - cy.getProjectPageLink(projectIdentifier, "sessions/new") + cy.getDataCy("cloud-storage-edit-body").contains( + "storage data_s3 has been succesfully added" + ); + cy.getDataCy("cloud-storage-edit-close-button") + .should("be.visible") + .click(); + + // Wait for the image to be ready and start a session + cy.get(".renku-container") + .contains("A session gives you an environment") + .should("exist"); + cy.get(".renku-container .badge.bg-success", { timeout: TIMEOUTS.vlong }) + .contains("available") + .should("exist"); + cy.getDataCy("cloud-storage-item").contains("data_s3").should("exist"); + cy.get("#cloud-storage-data_s3-active").should("be.checked"); + cy.get(".renku-container button.btn-secondary", { timeout: TIMEOUTS.long }) + .contains("Start Session") + .should("exist") + .click(); + cy.get(".progress-box .progress-title").should("exist"); //.contains("Step 2 of 2"); + cy.get("button") + .contains(projectTestConfig.projectName) + .should("be.visible"); + cy.get(".progress-box .progress-title") + .contains("Starting Session") + .should("exist"); + cy.get(".progress-box .progress-title", { timeout: TIMEOUTS.vlong }).should( + "not.exist" + ); + + // Verify that the S3 data is mounted + cy.getIframe("iframe#session-iframe").within(() => { + cy.get(".jp-DirListing-content", { timeout: TIMEOUTS.long }).should( + "be.visible" + ); + cy.get(".jp-DirListing-item") + .contains("data_s3") + .should("be.visible") + .dblclick(); + + cy.get(".jp-DirListing-item") + .contains("README.s3_structure") .should("be.visible") .first() .click(); diff --git a/cypress-tests/cypress/support/commands/general.ts b/cypress-tests/cypress/support/commands/general.ts index 5fe0f25abb..9876970640 100644 --- a/cypress-tests/cypress/support/commands/general.ts +++ b/cypress-tests/cypress/support/commands/general.ts @@ -19,7 +19,7 @@ export const getIframe = (selector: string) => { .then(cy.wrap); }; -function getDataCy(value: string, exist: true) { +function getDataCy(value: string, exist?: boolean) { if (exist) return cy.get(`[data-cy=${value}]`).should("exist"); return cy.get(`[data-cy=${value}]`); } @@ -33,8 +33,8 @@ declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Cypress { interface Chainable { - getDataCy(value: string, exist?: boolean); - getIframe(selector: string): Chainable; + getDataCy: typeof getDataCy; + getIframe: typeof getIframe; } } } diff --git a/docs/how-to-guides/admin/privacycookie.rst b/docs/how-to-guides/admin/privacycookie.rst index d71e64c72c..6c9c904090 100644 --- a/docs/how-to-guides/admin/privacycookie.rst +++ b/docs/how-to-guides/admin/privacycookie.rst @@ -3,22 +3,24 @@ User interface configuration options ------------------------------------ -Privacy page -~~~~~~~~~~~~ +Privacy page and Terms of Use +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The UI has a privacy page with a completely configurable content, suited for showing -any policy/terms related information, like the `Privacy Policy Statement` or the -`Terms of Use`. +The UI can be configured to show a `Privacy Policy` and `Terms of Use`. These are +displayed under the `Help` section of the UI. -The content is read from a ``ConfigMap``. You need to configure the values in -``ui.privacy.page`` to enable the feature and set the reference ConfigMap name and key. -Both ``ui.privacy.enabled`` and ``ui.privacy.page.enabled`` need to be ``true`` for -enabling the privacy page. +For each of these, the content is read from a ``ConfigMap``. You need to configure +the values in ``ui.client.privacy.page`` to enable the feature and set the reference +ConfigMap name and key. If ``ui.client.privacy.page.enabled`` is ``true``, then the privacy +policy and terms of use will be shown in the UI, with content taken from the ConfigMap +specified by ``ui.client.privacy.page.configMapName`` at the key +``ui.client.privacy.page.configMapPolicyKey`` for the privacy policy and +``ui.client.privacy.page.configMapTermsKey`` for the terms of use. .. note:: If you don't set the ConfigMap name and key, - `a sample `_ + `a sample `_ will be used instead. You can start from it as a template to create your customized ConfigMap. The `Markdown syntax `_ is fully supported for the @@ -33,7 +35,7 @@ for anonymous users (i.e. without an account or not currently logged in). To com international laws, it's strongly advised to explicitly require consent to the user for storing these data and using cookies. -To activate this feature, please set ``ui.privacy.enabled: true``. We have already configured a +To activate this feature, please set ``ui.privacy.banner.enabled: true``. We have already configured a default cookie banner to inform the users about the aforementioned requirements and points to point them to the privacy page for further details. diff --git a/helm-chart/renku/requirements.yaml b/helm-chart/renku/requirements.yaml index f28bdc16d7..6b13e25c57 100644 --- a/helm-chart/renku/requirements.yaml +++ b/helm-chart/renku/requirements.yaml @@ -30,6 +30,6 @@ dependencies: condition: notebooks.cloudstorage.s3.installDatashim - name: csi-rclone repository: "https://swissdatasciencecenter.github.io/helm-charts/" - version: "0.1.5" + version: "0.1.6" condition: global.csi-rclone.install diff --git a/helm-chart/renku/templates/NOTES.txt b/helm-chart/renku/templates/NOTES.txt index c1ea9777d7..d0ab572768 100644 --- a/helm-chart/renku/templates/NOTES.txt +++ b/helm-chart/renku/templates/NOTES.txt @@ -9,7 +9,7 @@ can be accessed using the following one-liner (you need to have jq installed). kubectl get secrets -n {{ .Release.Namespace }} {{ template "renku.fullname" . }} -o json | jq -r .data.users | base64 --decode {{- end -}} -{{ if .Values.ui.client.privacy.enabled -}} +{{ if or .Values.ui.client.privacy.banner.enabled .Values.ui.client.privacy.page.enabled -}} You may need to customize privacy values for your RenkuLab deployment (E.G. the Privacy page). Please refer to the following documentation: https://renku.readthedocs.io/en/latest/admin/index.html#additional-configurations {{ end }} diff --git a/helm-chart/renku/templates/ui/ui-client-configmap.yaml b/helm-chart/renku/templates/ui/ui-client-configmap.yaml index d81939eded..75c0e3cfcd 100644 --- a/helm-chart/renku/templates/ui/ui-client-configmap.yaml +++ b/helm-chart/renku/templates/ui/ui-client-configmap.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ template "ui.fullname" . }}-privacy-sample + name: {{ template "renku.fullname" . }}-privacy-sample labels: app: ui chart: {{ template "renku.chart" . }} @@ -17,7 +17,7 @@ data: ## Configure the Privacy Page You should customize the privacy statement by cloning the sample ConfigMap ``*-sample-privacy`` and adjust the content. Any markdown formatted text works. Feel free to change the ConfigMap key and to pick any name, - be sure to properly configure the values ``ui.privacy.page`` before upgrading your RenkuLab deployment. + be sure to properly configure the values ``ui.client.privacy.page`` before upgrading your RenkuLab deployment. If the mapping is enabled but no text is provided (empty content, wrong ``privacy.page`` values, missing ConfigMap, etc.), the links in the navigation bars will be hidden and users manually accessing the privacy page will get a warning. @@ -25,3 +25,19 @@ data: ## Apply the changes If you edit the ConfigMap content and you don't upgrade the deployment from helm, keep in mind that the ui pod needs to be manually re-deployed in order to apply the changes to the privacy page. + terms: | + # Terms of Use + The content of this page is only a template. + ## Information + If you are reading this message, the Terms of Use page content has not been updated for this RenkuLab deployment. + The following content is intended to be read by a RenkuLab admin. + ## Configure the Terms of Use + You should customize the terms of use by cloning the sample ConfigMap ``*-sample-privacy`` and adjust the + content. Any markdown formatted text works. Feel free to change the ConfigMap key and to pick any name, + be sure to properly configure the values ``ui.client.privacy.page`` before upgrading your RenkuLab deployment. + If the mapping is enabled but no text is provided (empty content, wrong ``privacy.page`` values, missing + ConfigMap, etc.), the links in the navigation bars will be hidden and users manually accessing the terms page + will get a warning. + ## Apply the changes + If you edit the ConfigMap content and you don't upgrade the deployment from helm, keep in mind that the + ui pod needs to be manually re-deployed in order to apply the changes to the terms page. diff --git a/helm-chart/renku/templates/ui/ui-client-deployment-template.yaml b/helm-chart/renku/templates/ui/ui-client-deployment-template.yaml index 0d554fc275..ae58ef7a41 100644 --- a/helm-chart/renku/templates/ui/ui-client-deployment-template.yaml +++ b/helm-chart/renku/templates/ui/ui-client-deployment-template.yaml @@ -25,14 +25,17 @@ spec: app: ui release: {{ .Release.Name }} spec: - {{- if and .Values.ui.client.privacy.enabled .Values.ui.client.privacy.page.enabled }} + {{- if .Values.ui.client.privacy.page.enabled }} volumes: - name: privacy configMap: name: {{ .Values.ui.client.privacy.page.configMapName | default (printf "%s-privacy-sample" (include "renku.fullname" .)) | quote }} items: - - key: {{ .Values.ui.client.privacy.page.configMapKey | default (printf "privacy_statement") | quote }} + - key: {{ .Values.ui.client.privacy.page.configMapPolicyKey | default (printf "privacy_statement") | quote }} path: statement.md + - key: {{ .Values.ui.client.privacy.page.configMapTermsKey | default (printf "terms") | quote }} + path: terms.md + {{- end }} automountServiceAccountToken: {{ .Values.global.debug }} containers: @@ -43,7 +46,7 @@ spec: - name: http containerPort: 8080 protocol: TCP - {{- if and .Values.ui.client.privacy.enabled .Values.ui.client.privacy.page.enabled }} + {{- if .Values.ui.client.privacy.page.enabled }} volumeMounts: - mountPath: /config-privacy name: privacy @@ -75,9 +78,11 @@ spec: {{- end }} - name: ANONYMOUS_SESSIONS value: {{ .Values.global.anonymousSessions.enabled | default (printf "false") | quote }} - - name: PRIVACY_ENABLED - value: {{ .Values.ui.client.privacy.enabled | quote }} - {{- if .Values.ui.client.privacy.enabled }} + - name: PRIVACY_BANNER_ENABLED + value: {{ .Values.ui.client.privacy.banner.enabled | quote }} + - name: TERMS_PAGES_ENABLED + value: {{ .Values.ui.client.privacy.page.enabled | quote }} + {{- if .Values.ui.client.privacy.banner.enabled }} - name: PRIVACY_BANNER_CONTENT value: {{ .Values.ui.client.privacy.banner.content | default (printf "") | b64enc | quote }} - name: PRIVACY_BANNER_LAYOUT diff --git a/helm-chart/renku/values.yaml b/helm-chart/renku/values.yaml index 61f4d8b985..110b441ab1 100644 --- a/helm-chart/renku/values.yaml +++ b/helm-chart/renku/values.yaml @@ -62,7 +62,7 @@ global: fullnameOverride: "" image: repository: renku/renku-core - tag: "v2.9.1" + tag: "v2.9.2" pullPolicy: IfNotPresent uiserver: ## The client secret for the renku-ui client application registered in keycloak. @@ -295,7 +295,7 @@ keycloakx: enabled: false extraInitContainers: | - name: theme-provider - image: renku/keycloak-theme:4.1.3 + image: renku/keycloak-theme:4.1.5 imagePullPolicy: IfNotPresent command: - sh @@ -613,7 +613,7 @@ ui: replicaCount: 1 image: repository: renku/renku-ui - tag: "3.19.0" + tag: "3.20.1" pullPolicy: IfNotPresent ## Optionally specify an array of imagePullSecrets. ## Secrets must be manually created in the namespace. @@ -696,12 +696,13 @@ ui: # privacy.page.configMapName value. As a reference, you can use the sample configMap generated when # enabling the feature. privacy: - enabled: false page: enabled: false #configMapName: privacy-page - #configMapKey: privacy_statement + #configMapPolicyKey: privacy_statement + #configMapTermsKey: terms banner: + enabled: false content: | This website requires cookies in order to ensure basic functionality. By clicking or navigating the site, you consent to the use of cookies in accordance with @@ -772,7 +773,7 @@ ui: keepCookies: [] image: repository: renku/renku-ui-server - tag: "3.19.0" + tag: "3.20.1" pullPolicy: IfNotPresent imagePullSecrets: [] nameOverride: "" @@ -857,10 +858,10 @@ dlf-chart: csi-rclone: {} # This section is only relevant if you are installing csi-rclone as part of Renku ## Name of the csi storage class to use for RClone/Cloudstorage. Should be unique per cluster. - # storageClassName: csi-rclone + # storageClassName: csi-rclone # csiNodepluginRclone: # nodeSelector: {} - # Set tolerations if you have taints on your user session nodes. The csi has to run on every node + # Set tolerations if you have taints on your user session nodes. The csi has to run on every node # where it is used. # tolerations: [] # affinity: {} @@ -1512,4 +1513,4 @@ affinity: {} versions: latest: image: - tag: v2.9.1 + tag: v2.9.2 diff --git a/helm-chart/values.yaml.changelog.md b/helm-chart/values.yaml.changelog.md index 1aa578b668..c4b2e1b961 100644 --- a/helm-chart/values.yaml.changelog.md +++ b/helm-chart/values.yaml.changelog.md @@ -5,23 +5,35 @@ For changes that require manual steps other than changing values, please check o Please follow this convention when adding a new row * ` - **:
` +## Upgrading to Renku 0.48.0 + +The handling of privacy policy and terms of service content has been slightly changed to make +it more flexible. + +* DELETE `ui.privacy.enabled` has been removed to make the privacy policy and cookie banner configurable independently. +* NEW `ui.privacy.banner.enabled` allows turning on the cookie banner (defaults to false). +* DELETE `ui.client.privacy.page.configMapKey` which has been renamed to `ui.client.privacy.page.configMapPolicyKey`. +* NEW `ui.client.privacy.page.configMapPolicyKey` the key in the ConfigMap where the content for the privacy policy is located. +* NEW `ui.client.privacy.page.configMapTermsKey` the key in the ConfigMap where the content for the terms of use is located. + + ## Upgrading to Renku 0.47.0 -We completely overhauled how mounting cloud storage in sessions works, relying on a new CSI driver based on RClone -which has to be installed in the cluster for things to work. Either install it as part of Renku using the flag -mentioned below or install the csi-rclone chart manually and set the correct storage class in the values for the +We completely overhauled how mounting cloud storage in sessions works, relying on a new CSI driver based on RClone +which has to be installed in the cluster for things to work. Either install it as part of Renku using the flag +mentioned below or install the csi-rclone chart manually and set the correct storage class in the values for the notebooks service. * NEW `noteboks.cloudstorage.enabled` - set to `true` to enable mounting cloud storage in sessions. * DELETE `notebooks.cloudstorage.s3.enabed` - superseeded by previous property. -* NEW `notebooks.cloudstorage.storageClass` - the storage class for the CSI Rclone chart, needed for new cloudstorage +* NEW `notebooks.cloudstorage.storageClass` - the storage class for the CSI Rclone chart, needed for new cloudstorage to work. The default `csi-rclone` should be fine unless already in use. -* NEW `global.csi-rclone.install` - if `true` installs the csi-rclone chart alongside Renku. The chart is needed for +* NEW `global.csi-rclone.install` - if `true` installs the csi-rclone chart alongside Renku. The chart is needed for cloud storage in sessions to work. -* NEW `csi-rclone.storageClassName` - the storage class name the CSI drivers uses, should match what is configured in +* NEW `csi-rclone.storageClassName` - the storage class name the CSI drivers uses, should match what is configured in the `storageClass` property mentioned above. -* NEW `csi-rclone.csiNodePlugin.tolerations` - Tolerations for the node plugin part of the CSI driver. Need to be set - in a way that allows it to be scheduled on user session nodes. By default this would mean `key=renku.io/dedicated`, +* NEW `csi-rclone.csiNodePlugin.tolerations` - Tolerations for the node plugin part of the CSI driver. Need to be set + in a way that allows it to be scheduled on user session nodes. By default this would mean `key=renku.io/dedicated`, `operator=Equal`, `value=user` and `effect=NoSchedule` @@ -82,7 +94,7 @@ Amalthea will simply use your default Kubernetes scheduler. * DELETE `amalthea.scheduler.image` - deprecated will be ignored if provided * DELETE `amalthea.scheduler.enable` - deprecated will be ignored if provided * DELETE `amalthea.scheduler.priorities` - deprecated will be ignored if provided -* NEW `amalthea.scheduler.packing` - can be used to enable a preset scheduler that will try to pack sessions on the smallest number of nodes and favor the most used nodes +* NEW `amalthea.scheduler.packing` - can be used to enable a preset scheduler that will try to pack sessions on the smallest number of nodes and favor the most used nodes * NEW `amalthea.scheduler.custom` - can be used to add any custom scheduler for Amalthea, admins just have to provide the scheduler name * EDIT `crc` - the field has been renamed to `dataService`, all child fields and functionality remains the same * NEW `global.gitlab.url` has been added and needs to be specified, this will be the single place where the Gitlab URL will be specified in future releases we will deprecated all the other Gitlab URL fields in the values file. @@ -105,14 +117,14 @@ configuration is possible from its `values.yaml` file. * EDIT - `notebooks.amalthea.*` moved to `amalthea.*` * EDIT - `notebooks.dlf-chart.*` moved to `dlf-chart.*` -In addition going forward we will follow a much stricter versioning scheme that will distinguish changes to +In addition going forward we will follow a much stricter versioning scheme that will distinguish changes to the Renku Helm chart as opposed to changes to the application. Notably: - Patch changes (i.e. `0.50.1` -> `0.50.2`) indicate that there are NO changes in the Helm chart and that only appplication level bug fixes are present in the new release. - Minor version changes (i.e. `0.50.2` -> `0.51.0`) indicate that there are NO changes in the Helm chart and that only application level new features and/or application level breaking changes are present. -- Major version changes (i.e. `0.50.0` -> `1.0.0`) will be reserved for changes in the Helm chart, either when the -values file changes or when the Helm templates change. +- Major version changes (i.e. `0.50.0` -> `1.0.0`) will be reserved for changes in the Helm chart, either when the +values file changes or when the Helm templates change. ## Upgrading to Renku 0.37.0 * EDIT - `notebooks.culling.idleThresholdSeconds` in the notebooks' values file was renamed to @@ -261,7 +273,7 @@ redis: sentinel: true existingSecret: redis-secret existingSecretPasswordKey: redis-password - + commonConfiguration: |- appendonly no save "" @@ -269,10 +281,10 @@ redis: replica: replicaCount: 3 resources: - limits: + limits: cpu: 250m memory: 256Mi - requests: + requests: cpu: 250m memory: 256Mi updateStrategy: