Skip to content

Conversation

@volodymyrss
Copy link
Collaborator

@volodymyrss volodymyrss commented Apr 8, 2025

  • REANA
    • NFS provisioner
    • added bootstrap for admin user
    • used 0.95.0 alpha2, else db is reana:reana unless debug - workaround?
  • jupyterhub with configuration for rucio access
  • optional prometheus
  • optional grafana
  • add basic helm/k8s linting

Postpone for later:

  • add multi-RI rucio client and GW image
  • Built-in dev Rucio (?)
  • add default dashboards
  • add a way to setup RSE for etap sessions: mount it, use default for extension
    • as a first stage, add default RSE mount
  • optionally mount CVMFS
  • add configurable session spawner
  • extended REANA with CRM prototype

We'll make an issue splitting some of the features for next MR.

TODO: check SWAN charts.

@volodymyrss volodymyrss self-assigned this Apr 8, 2025
ingress.kubernetes.io/ssl-redirect: "true"
meta.helm.sh/release-name: reana
meta.helm.sh/release-namespace: reana
traefik.frontend.entryPoints: http,https

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't hurt as it's just an annotation, but need to support ingress != traefik ?

@@ -0,0 +1,7 @@
reana:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wishlist to add
hostbase or similar, that is templated for the jhub and reana host names
Make indigo IAM client secret available for jhub too
Indigo IAM authorise, token and callback URLs for reana and jhub
nfs storage classes, both the default for persistent, and the reana shared storage class
common (postgres)db secret
Rucio host (template the extraEnv and rucio.cfg file generation ?)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that it is not that straightforward to remove all duplication from values. It is not possible to use template within values file itself.
It is possible to use yaml anchors but it's not for all cases (e.g. not when substring need to be templated).

Usually to avoid duplication like that, it is necessary to modify the chart itself, in this case the dependency charts.
I will see what can be done without being too invasive.

We could also template values ourselves, but it means adding a custom tool on top of helm and this will be less portable.

deploy:
helm:
releases:
- name: cern-vre

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe "escape-vre" is better, or even "my-escape-vre" as a default release name. Whatever this thing is, it won't actually be the CERN VRE :)

Copy link
Collaborator Author

@volodymyrss volodymyrss Jul 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, interesting question.

For me, "VRE" is a generic term which I see throughout the related domains. So I assumed that name of the software product is "CERN VRE". Since it is a particular kind of a Virtual Research Environment, the kind made by CERN. See also the logo:

image.

It also coincides with the name of the CERN instance.

However, we have now ESCAPE VRE, CERN VRE, ETAP VRE, and I wonder.

@garciagenrique @Soap2G what do you think? Should "CERN" be anywhere in the name of the generic VRE chart?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for raising this point.
IMO, each VRE deployment should keep their institution or "brand". In the way I imagine things, we should aim for a common "helm base layer" (let's call it vre or escape-vre). Then, each of the specific installations (CERN, ET, etc) could name their respective inherited chart as they want :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With respect to the logo @Soap2G was the master mind behind the design. If you like it, we can create an ET VRE one, or feel free to create one based on the cern-vre one :)

RucioAuthenticator:
# client_id: "" # set through secret
# client_secret: "" # set through secret
authorize_url: https://iam-escape.cloud.cnaf.infn.it/authorize

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the indigo client info, including callback urls (if there is a hostbase name) be factorised for reana and jhub?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could be possible. Not sure whether is a good idea in terms of security - you might want to have different authorization policies for Jupyter and REANA.

Using different clients isn't (shouldn't be) that difficult. However, it's true that it would just required the creation and maintenance (propagating IdP secrets) of two(+) different clients.

Copy link
Member

@garciagenrique garciagenrique left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @volodymyrss @paullaycock

Thanks for opening this PR. Let me add some general comments here.

I see that there are a lot of annotations that are cern-vre specific - which in the end are cern infrastructure specific. For example, the names of the volume and storage class naming, as well as the rucio env vars (among others).

Let me share here my (biased) vision of how I envision this repo (which doesn't need to be like this of course).

What would you think of creating an agnostic "base helm layer" (let's call it vre) which only deploys the "main services" - JupyterHub, Rucio and Reana? Then each vre flavor, that ideally inherits from the base layer, would add their own or specific services (nfs, grafana, EOS, CERN MONIT, etc.), change the chart values to point to their specific services (storage, network, db, idp, rucio and REANA server, etc), and name the charts as desired (cern-vre, etap, etc).

deploy:
helm:
releases:
- name: cern-vre
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for raising this point.
IMO, each VRE deployment should keep their institution or "brand". In the way I imagine things, we should aim for a common "helm base layer" (let's call it vre or escape-vre). Then, each of the specific installations (CERN, ET, etc) could name their respective inherited chart as they want :)

deploy:
helm:
releases:
- name: cern-vre
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With respect to the logo @Soap2G was the master mind behind the design. If you like it, we can create an ET VRE one, or feel free to create one based on the cern-vre one :)


* <https://github.com/vre-hub/vre>

## Requirements
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See general comment about the different vre flavors

RucioAuthenticator:
# client_id: "" # set through secret
# client_secret: "" # set through secret
authorize_url: https://iam-escape.cloud.cnaf.infn.it/authorize
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could be possible. Not sure whether is a good idea in terms of security - you might want to have different authorization policies for Jupyter and REANA.

Using different clients isn't (shouldn't be) that difficult. However, it's true that it would just required the creation and maintenance (propagating IdP secrets) of two(+) different clients.

@volodymyrss
Copy link
Collaborator Author

There is a question right now if it makes sense to use try using new pre-release reana 0.95.0, or port the CRM changes back onto 0.9.4.

@garciagenrique
Copy link
Member

There is a question right now if it makes sense to use try using new pre-release reana 0.95.0, or port the CRM changes back onto 0.9.4.

I think it is always a good idea to try the latest version @volodymyrss. Any reason to use 0.9.4 ?

@volodymyrss
Copy link
Collaborator Author

volodymyrss commented Sep 8, 2025

There is a question right now if it makes sense to use try using new pre-release reana 0.95.0, or port the CRM changes back onto 0.9.4.

I think it is always a good idea to try the latest version @volodymyrss. Any reason to use 0.9.4 ?

The latest version is not released, it's in alpha.

Right now I am having an issue with it, related to parsing user token info from IAM . I think it was working before though, so it's strange the issue appeared both in dev and staging setup. Maybe IAM changed.

Anyway, alpha is not stable and will require continuous updates to our development.

When we last talked with @tiborsimko I think it was said it's too early to try 0.95.0, but I also did not see a huge number of changes in reana github org since, and the latest release is 0.95.0-alpha.2 is in Feb.
Do you know @tiborsimko what is the plan for 0.95.0, should we try to contribute our monitoring changes to it?

Or @garciagenrique you probably know of what is the plan for REANA version adoption in the VRE?

@volodymyrss
Copy link
Collaborator Author

volodymyrss commented Sep 15, 2025

I remembered why we moved to alpha version of REANA.

It's partly because we wanted to use included DB, but I saw this https://github.com/reanahub/reana/blob/0.9.4/helm/reana/templates/reana-db.yaml#L45 which seems to set debug values only in non-debug environment - so there seems to be maybe a bug? Of course we could use external db but it seems strange.

Second reason is that we are actually developing reana chart, so it's weird to start from old version.

But then, current alpha version stopped working, so this needs some investigation.

edit:

I think alpha version is not compatible with Indigo IAM, because recent versions of invenio_oauthclient seem to assume fetching userinfo both from endpoint and from token, specifically in the way keycloack does it. IAM fails with token userinfo decoding because it can not get the token signature right.

I am sure it is possible to adjust invenio_oauthclient and reana_server (which needs some extra configuration in this case).

In principle until 0.95.0 is stable, we could use 0.9.4 with a patch for the DB credentials in debug mode.
But 0.9.4 uses python3.8 which is already EoL.

Overall, it seems that to finish our project, we need a bit deeper changes to involvement reana and invenio_oauthclient, and count on new reana to be released.

An advice from @tiborsimko would be welcome, but I can also look myself deeper and propose further reana PRs.

@volodymyrss volodymyrss force-pushed the first-version-vre-chart branch from b6e35a9 to 32decf0 Compare September 15, 2025 11:54
@volodymyrss
Copy link
Collaborator Author

We discussed we need to talk about storage usage. To avoid duplication of data.

We are also thinking about using RSE per VRE instance.

@volodymyrss volodymyrss requested a review from Soap2G October 29, 2025 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants