From d5abbb2275f5a78e7ac15f1898ebace4ce83f64d Mon Sep 17 00:00:00 2001 From: Paul Farault Date: Tue, 5 May 2026 21:10:08 +0200 Subject: [PATCH] feat: import meeting notes from github disscussions --- users/2023/20231129.md | 16 +++++++ users/2023/20231206.md | 19 ++++++++ users/2024/20240117.md | 18 +++++++ users/2024/20240228.md | 23 +++++++++ users/2024/20240306.md | 22 +++++++++ users/2024/20240313.md | 28 +++++++++++ users/2024/20240320.md | 23 +++++++++ users/2024/20240327.md | 27 +++++++++++ users/2024/20240516.md | 18 +++++++ users/2024/20240522.md | 20 ++++++++ users/2024/20240529.md | 21 +++++++++ users/2024/20240605.md | 24 ++++++++++ users/2024/20240612.md | 18 +++++++ users/2024/20240703.md | 14 ++++++ users/2024/20240717.md | 16 +++++++ users/2024/20240724.md | 18 +++++++ users/2024/20240731.md | 19 ++++++++ users/2024/20240911.md | 9 ++++ users/2024/20240918.md | 28 +++++++++++ users/2024/20240925.md | 17 +++++++ users/2024/20241002.md | 29 ++++++++++++ users/2024/20241009.md | 17 +++++++ users/2024/20241016.md | 18 +++++++ users/2024/20241106.md | 19 ++++++++ users/2024/20241204.md | 34 ++++++++++++++ users/2024/20241211.md | 25 ++++++++++ users/2024/20241218.md | 18 +++++++ users/2024/assets/20241002-schema.png | Bin 0 -> 55972 bytes users/2025/20250115.md | 17 +++++++ users/2025/20250122.md | 20 ++++++++ users/2025/20250129.md | 18 +++++++ users/2025/20250205.md | 17 +++++++ users/2025/20250212.md | 17 +++++++ users/2025/20250219.md | 17 +++++++ users/2025/20250305.md | 15 ++++++ users/2025/20250312.md | 16 +++++++ users/2025/20250319.md | 17 +++++++ users/2025/20250326.md | 20 ++++++++ users/2025/20250402.md | 35 ++++++++++++++ users/2025/20250409.md | 41 ++++++++++++++++ users/2025/20250416.md | 49 +++++++++++++++++++ users/2025/20250507.md | 50 ++++++++++++++++++++ users/2025/20250514.md | 43 +++++++++++++++++ users/2025/20250521.md | 48 +++++++++++++++++++ users/2025/20250528.md | 52 +++++++++++++++++++++ users/2025/20250604.md | 38 +++++++++++++++ users/2025/20250611.md | 36 ++++++++++++++ users/2025/20250704.md | 20 ++++++++ users/2025/20250827.md | 25 ++++++++++ users/2025/20250903.md | 23 +++++++++ users/2025/20250910.md | 26 +++++++++++ users/2025/20250917.md | 19 ++++++++ users/2025/20250924.md | 39 ++++++++++++++++ users/2025/20251015.md | 28 +++++++++++ users/2025/20251022.md | 33 +++++++++++++ users/2025/20251105.md | 25 ++++++++++ users/2025/20251109.md | 65 ++++++++++++++++++++++++++ users/2025/20251112.md | 35 ++++++++++++++ users/2025/20251126.md | 40 ++++++++++++++++ users/2025/20251203.md | 23 +++++++++ users/2025/20251210.md | 29 ++++++++++++ users/2025/20251217.md | 42 +++++++++++++++++ users/2026/20260107.md | 25 ++++++++++ users/2026/20260114.md | 34 ++++++++++++++ users/2026/20260128.md | 35 ++++++++++++++ users/2026/20260204.md | 30 ++++++++++++ users/2026/20260211.md | 29 ++++++++++++ 67 files changed, 1749 insertions(+) create mode 100644 users/2023/20231129.md create mode 100644 users/2023/20231206.md create mode 100644 users/2024/20240117.md create mode 100644 users/2024/20240228.md create mode 100644 users/2024/20240306.md create mode 100644 users/2024/20240313.md create mode 100644 users/2024/20240320.md create mode 100644 users/2024/20240327.md create mode 100644 users/2024/20240516.md create mode 100644 users/2024/20240522.md create mode 100644 users/2024/20240529.md create mode 100644 users/2024/20240605.md create mode 100644 users/2024/20240612.md create mode 100644 users/2024/20240703.md create mode 100644 users/2024/20240717.md create mode 100644 users/2024/20240724.md create mode 100644 users/2024/20240731.md create mode 100644 users/2024/20240911.md create mode 100644 users/2024/20240918.md create mode 100644 users/2024/20240925.md create mode 100644 users/2024/20241002.md create mode 100644 users/2024/20241009.md create mode 100644 users/2024/20241016.md create mode 100644 users/2024/20241106.md create mode 100644 users/2024/20241204.md create mode 100644 users/2024/20241211.md create mode 100644 users/2024/20241218.md create mode 100644 users/2024/assets/20241002-schema.png create mode 100644 users/2025/20250115.md create mode 100644 users/2025/20250122.md create mode 100644 users/2025/20250129.md create mode 100644 users/2025/20250205.md create mode 100644 users/2025/20250212.md create mode 100644 users/2025/20250219.md create mode 100644 users/2025/20250305.md create mode 100644 users/2025/20250312.md create mode 100644 users/2025/20250319.md create mode 100644 users/2025/20250326.md create mode 100644 users/2025/20250402.md create mode 100644 users/2025/20250409.md create mode 100644 users/2025/20250416.md create mode 100644 users/2025/20250507.md create mode 100644 users/2025/20250514.md create mode 100644 users/2025/20250521.md create mode 100644 users/2025/20250528.md create mode 100644 users/2025/20250604.md create mode 100644 users/2025/20250611.md create mode 100644 users/2025/20250704.md create mode 100644 users/2025/20250827.md create mode 100644 users/2025/20250903.md create mode 100644 users/2025/20250910.md create mode 100644 users/2025/20250917.md create mode 100644 users/2025/20250924.md create mode 100644 users/2025/20251015.md create mode 100644 users/2025/20251022.md create mode 100644 users/2025/20251105.md create mode 100644 users/2025/20251109.md create mode 100644 users/2025/20251112.md create mode 100644 users/2025/20251126.md create mode 100644 users/2025/20251203.md create mode 100644 users/2025/20251210.md create mode 100644 users/2025/20251217.md create mode 100644 users/2026/20260107.md create mode 100644 users/2026/20260114.md create mode 100644 users/2026/20260128.md create mode 100644 users/2026/20260204.md create mode 100644 users/2026/20260211.md diff --git a/users/2023/20231129.md b/users/2023/20231129.md new file mode 100644 index 0000000..3b97231 --- /dev/null +++ b/users/2023/20231129.md @@ -0,0 +1,16 @@ +--- +date: 2023-11-29 +type: users +attendees: + - Olivier M.(DGFIP) + - Moncef L.(DGFIP) + - Mehdi B.(DGFIP) + - Idir I. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- **Kickoff** : begin the design and implementation +- first technology to integrate : jupyterhub +- Participation to the KubeCon Paris 2024 +- Update of the github repository with new logo: https://github.com/OKDP +- website domain reserved : okdp.io diff --git a/users/2023/20231206.md b/users/2023/20231206.md new file mode 100644 index 0000000..3a25466 --- /dev/null +++ b/users/2023/20231206.md @@ -0,0 +1,19 @@ +--- +date: 2023-12-06 +type: users +attendees: + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- begin the study of the first technology to integrate : jupyterhub +- separation between OKDP and its requirements in an extra project like kube, minio, longhorn, etc. +- clone used projects into a separate repository in ordre to keep their history +- start with a github jupyterhub-draft project in the okdp repo then design an okdp project to centralize all integrated technologies +- maintaining Issues/PRs + 2 approves like TDP only for official projects and not draft +- creating discussions for decision-making on current topics +- next step: preparation of local environments via kind, vagrant, etc. diff --git a/users/2024/20240117.md b/users/2024/20240117.md new file mode 100644 index 0000000..ebd8262 --- /dev/null +++ b/users/2024/20240117.md @@ -0,0 +1,18 @@ +--- +date: 2024-01-17 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Nicolas V. (DGFIP) + - Rémi PERRIER (ENEDIS) +--- + +- new partner joined okdp meetings : Rémi PERRIER - ENEDIS +- prepare okdp presentation for the TOSIT day (February 9th at BPCE) +- work in progress : 1. OKDP WebSite update with more details about okdp and its roadmap 2. build of jupyterhub/jupyterlab images 3. choice between ArgoCD and FluxCD for CD implementation diff --git a/users/2024/20240228.md b/users/2024/20240228.md new file mode 100644 index 0000000..aa3b6e3 --- /dev/null +++ b/users/2024/20240228.md @@ -0,0 +1,23 @@ +--- +date: 2024-02-28 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- Back to TOSIT Data Day Event +- Front OKDP : Angular or React can be used for the front dev and SpringBoot for the back +- Superset: integrate its integration into the roadmap for dataViz +- Go-lang : can be used for transverse automation layers for OKDP +- OKDP Web site up to date with last version by Moncef L. +- Spark: advanced Metastore, Spark-ui and spark-hs integration by Idir I. +- Spark: FluxCD deployment integration by Serge A. +- FluxCD : OKDP integration done by Serge A. with some features in progress : security, multi-tenancy, etc. +- ArgoCD can be used for applicative deployments +- Trino : first integration in progress by Moncef L. diff --git a/users/2024/20240306.md b/users/2024/20240306.md new file mode 100644 index 0000000..01f4091 --- /dev/null +++ b/users/2024/20240306.md @@ -0,0 +1,22 @@ +--- +date: 2024-03-06 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Edouard ROUSSEAUX (EDF) +--- + +- RoadMap (to be published via the web site) updated with integration of superset : + 1. Spark integration + 2. Metastore integration (hive metastore in progress) + 3. Trino integration (design and requirements) + 4. SuperSets integration (to-do) + 5. Sanbox implementation (to-do) +- Implementation of an authentication module for spark history server (demo to be planned for tosit members) +- implementation of github discussions with decisions and technical details diff --git a/users/2024/20240313.md b/users/2024/20240313.md new file mode 100644 index 0000000..7eb9f58 --- /dev/null +++ b/users/2024/20240313.md @@ -0,0 +1,28 @@ +--- +date: 2024-03-13 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Edouard R. (EDF) + - Lionel H. (Orange) + - Pierre S. (Adaltas) +--- + +- Olivier M.: okdp roadmap to be updated +- Mehdi B.: new project to manage authentication in Spark History and its release management +- Pierre S.: topics to share for new contributions +- Pierre S.: Proposal for other DEV environments with other kubernetes distributions +- Lionel H.: Orange contributions: + - Spark HS to be tested in the Orange context + - dev of an UI to list spark apps via APIs kube + rex to be planned + - share Spark images with the community +- presentation to be planned : + - March 27th: SparkHistory and okdp projects + - April 3: build of spark images and Spark History + - April 4: okdp demo for TOSIT members diff --git a/users/2024/20240320.md b/users/2024/20240320.md new file mode 100644 index 0000000..55cf681 --- /dev/null +++ b/users/2024/20240320.md @@ -0,0 +1,23 @@ +--- +date: 2024-03-20 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Nicolas V. (DGFIP) + - Pierre S. (Adaltas) +--- + +- Olivier M.: confirmation of the following meetings: Thursday April 11 for the demo from 9 a.m. to 10 a.m. +- Olivier M.: DGFIP is looking for alternatives to array (potentially supersets) +- Moncef L.: Update roadmap on the web-site and remove of react +- Moncef L.: implementation of the Helm chart for Spark History Server +- Serge A.: implementation of the Helm chart for Hive Metastore and postgres +- Idir I.: build of spark images +- Mehdi & Chung: finalizing the setup of the test environment with Kind +- Moncef: creation of an OKDP channel on the TOSIT mattermost to discuss current technical subjects diff --git a/users/2024/20240327.md b/users/2024/20240327.md new file mode 100644 index 0000000..dd17498 --- /dev/null +++ b/users/2024/20240327.md @@ -0,0 +1,27 @@ +--- +date: 2024-03-27 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Nicolas V. (DGFIP) + - Pierre S. (Adaltas) + - Lionel H. (Orange) +--- + +- Lionel H.: working on a build container for constant dev env. +- Lionel H.: proposal for a PR on the Spark History authentication project to make the identifier configurable for the JWT token (between sub and email) +- Olivier H.: Participation in the Big Data & AI event with a stand in November 2024. +- Pierre S.: working on multi-tenancy feature in SuperSet +- Serge A.: hive metastore integration and release management +- Serge A.: using FluxCD to deploy requirements (cert manager, metalLb, etc.) in Gitops mode +- Idir I. : build of Spark images +- Moncef L.: build factory +- Mehdi B.: preparation of OKDP slides +- Lionel H.: contribution in the form of PR on the Spark build with: dependency checking + Log4j patch + jre deployment for jdk 11 and 17 + kerberos deployment + tests + observability configuration +- Moncef L.: creation of an OKDP sub-channel for specific discussions diff --git a/users/2024/20240516.md b/users/2024/20240516.md new file mode 100644 index 0000000..396419a --- /dev/null +++ b/users/2024/20240516.md @@ -0,0 +1,18 @@ +--- +date: 2024-05-16 +type: users +attendees: + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Lionel H. (Orange) +--- + +- Moncef L.: integration of Trino in progress via a Helm chart +- Idir I.: integration of Superset with a focus on security +- Serge A.: implementation of the OKDP sandbox via FluxCD +- Moncef L.: preparation of the June demo in progress +- Moncef L.: integration of the Spark History authentication module at the Helm chart level +- Lionel H.: successful testing and integration of the Spark auth module in the Orange context diff --git a/users/2024/20240522.md b/users/2024/20240522.md new file mode 100644 index 0000000..e45df8f --- /dev/null +++ b/users/2024/20240522.md @@ -0,0 +1,20 @@ +--- +date: 2024-05-22 +type: users +attendees: + - Olivier M. (DGFIP) + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Stephane B. (Orange) + - Lionel H. (Orange) +--- + +- Olivier M.: preparation of the presentation for the Data & AI Leaders +- Confirmation of participation in Tosit Day on Thursday 13/06 for an OKDP presentation (Olivier M., Idir I. and Mehdi B. on site and Moncef L. remotely) +- Olivier M.: contact BPCE and Arkea on a potential collaboration on Trino +- Olivier M.: OKDP internal presentation on 07/06 and slides to be reviewed by Mehdi B. and Moncef L. +- Moncef L.: preparation of the demo and progress on current topics: Trino (Moncef L.), Sandbox via FluxCD (Serge A.) and Superset (Idir I.) +- Stephane B. and Lionel H.: integration of the spark HS authentication module and review of the integration with OIDC in order to avoid declaring a wlidcard for SparkUI redirects +- Lionel H.: internal validation for Orange's participation in the OKDP presentation diff --git a/users/2024/20240529.md b/users/2024/20240529.md new file mode 100644 index 0000000..4ebf515 --- /dev/null +++ b/users/2024/20240529.md @@ -0,0 +1,21 @@ +--- +date: 2024-05-29 +type: users +attendees: + - Olivier M. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Lionel H. (Orange) + - Edouard R. (EDF) + - Nicolas V. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- Olivier M.: preparation of the presentation for the Data & AI Leaders +- Olivier M.: OKDP internal presentation on 07/06 and slides to be reviewed by Mehdi B. and Moncef L. +- Olivier M.: collaboration with an inter-ministerial group around superset +- Edouard R.: proposal for a demo of EDF's containerized Data platform on 06/19/24 +- Olivier M.: ongoing update of the website by Mehdi B. with new events (in progress) +- Lionel H.: creation of a new github issue ( followed by Idir I. ) around Spark History Server and its authentication module in order to make it more generic diff --git a/users/2024/20240605.md b/users/2024/20240605.md new file mode 100644 index 0000000..331ee0e --- /dev/null +++ b/users/2024/20240605.md @@ -0,0 +1,24 @@ +--- +date: 2024-06-05 +type: users +attendees: + - Olivier M. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Lionel H. (Orange) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- Update of the OKDP web site with various events (PR ongoing) +- Presentation of OKDP to Arkéa on Thursday, 30/05 (done) +- Presentation of EDF's proprietary solution on Spark, Wednesday, 19/06/2024. +- Testing of the spark authentication module by new users +- Github issue created by Orange on the Authentication/Ldap (IDP) part on GitHub (ongoing) +- DINUM (BlueHats workshop), Friday, June 7, 2024, from 11:00 to 12:30 (Jupyter, Spark + Spark History authentication module, SandBox, SuperSet, end-to-end build and deployment, etc.) +- TOSiT-Day on the afternoon of 13/06, fill in the framadate (done) +- Roundtable at the Data & AI Leaders on 27 and 28/11 (in progress) +- Packaging SuperSet by Idir, publication and documentation to follow +- Build OKDP: Orange will approach DIODE (DGFiP) to work and provide feedback on the Build part +- Participation of partners (BPCE and Orange) in the Hoche Data & AI, Data Mesh, Data Cloud Platform, Data Fabric & Architectures Meetups diff --git a/users/2024/20240612.md b/users/2024/20240612.md new file mode 100644 index 0000000..689220c --- /dev/null +++ b/users/2024/20240612.md @@ -0,0 +1,18 @@ +--- +date: 2024-06-12 +type: users +attendees: + - Olivier M. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- Update the OKDP website with our various events (done) +- DINUM (BlueHats workshop): Friday, June 7, 2024, from 11:00 AM to 12:30 PM (Jupyter, Spark + Spark History authentication module, SandBox, SuperSet, end-to-end build and deployment, etc.). There were 40 participants (done) +- TOSiT-Day on 06/13 in the afternoon. +- SuperSet: Meeting on Tuesday, 06/18, for a new collaboration on the support and REX part +- Presentation of EDF’s proprietary solution on Spark, Wednesday, 06/19/2024. +- TODO : MLOPS: integration of kubeflow, MLFlow, Onyxia, other UIs, etc. diff --git a/users/2024/20240703.md b/users/2024/20240703.md new file mode 100644 index 0000000..f87b656 --- /dev/null +++ b/users/2024/20240703.md @@ -0,0 +1,14 @@ +--- +date: 2024-07-03 +type: users +attendees: + - Serge A. (DGFIP) + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Lionel H. (Orange) +--- + +- Serge A.: integration of topolvm with vgs management via helm chart for the sandbox +- Idir I.: create github repo for hive/superset images and their sources +- Lionel H.: propose a solution to secure Docker images (currently being tested on Orange side) diff --git a/users/2024/20240717.md b/users/2024/20240717.md new file mode 100644 index 0000000..1594044 --- /dev/null +++ b/users/2024/20240717.md @@ -0,0 +1,16 @@ +--- +date: 2024-07-17 +type: users +attendees: + - Nicolas V. (DGFIP) + - Idir I. (DGFIP) + - Serge A. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Lionel H. (Orange) +--- + +- Idir: split helm charters in github (done) +- Idir: start the architecture choices on the front part with a preference for go-lang for its watcher support +- Serge A.: integration of topolvm for minio/sandbox (done) +- Serge A.: automation of minio resources creation in declarative mode (in progress) diff --git a/users/2024/20240724.md b/users/2024/20240724.md new file mode 100644 index 0000000..6259c0c --- /dev/null +++ b/users/2024/20240724.md @@ -0,0 +1,18 @@ +--- +date: 2024-07-24 +type: users +attendees: + - Nicolas V. (DGFIP) + - Idir I. (DGFIP) + - Serge A. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Olivier M. (DGFIP) + - Guillaume M. (DGFIP) +--- + +- Updating slides with new UI features +- preparation of the internal presentation with the new roadmap +- Discussion with other UX design teams +- Minio integration and automatic resource management in progress +- split Helm charts on github finalized diff --git a/users/2024/20240731.md b/users/2024/20240731.md new file mode 100644 index 0000000..d01c9eb --- /dev/null +++ b/users/2024/20240731.md @@ -0,0 +1,19 @@ +--- +date: 2024-07-31 +type: users +attendees: + - Olivier M. (DGFIP) + - Guillaume M. (DGFIP) + - Nicolas V. (DGFIP) + - Idir I. (DGFIP) + - Moncef L. (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Lionel H. (Orange) +--- + +- Idir I.: Split Helm charts (done) +- Idir I.: REST API in Golang + Angular for the UI (in progress) +- Serge A.: MinIO and declarative resource management + RBAC (bucket + policies) (in progress) +- Moncef L.: Take over the Kubernetes clusters topic on private cloud +- Lionel H.: New ticket on the Spark authentication module diff --git a/users/2024/20240911.md b/users/2024/20240911.md new file mode 100644 index 0000000..2a2617d --- /dev/null +++ b/users/2024/20240911.md @@ -0,0 +1,9 @@ +--- +date: 2024-09-11 +type: users +--- + +- Idir I.: Develop some Angular models for the OKDP UI (in progress) +- Serge A.: MinIO and declarative resource management + RBAC (bucket + policies) (in progress) +- Lionel H.: New [ticket ](https://github.com/OKDP/okdp-spark-auth-filter/issues/34)on the Spark authentication module +- Idir I. : Choosing the backend for the UI, potentially in GoLang. diff --git a/users/2024/20240918.md b/users/2024/20240918.md new file mode 100644 index 0000000..003d509 --- /dev/null +++ b/users/2024/20240918.md @@ -0,0 +1,28 @@ +--- +date: 2024-09-18 +type: users +attendees: + - Olivier M. (DGFIP) + - Idir I. (DGFIP) + - Nicolas V (DGFIP) + - Mehdi B. (DGFIP) + - Chung N. (DGFIP) + - Guillaume M. (DGFIP) + - Moncef L. (DGFIP) + - Serge A. (DGFIP) + - Lionel H. (Orange) +--- + +- Backend choice for the UI: + 1. GlassKube: https://glasskube.dev/ + 2. Timoni: https://timoni.sh/ + 3. Open Component Model OCM: https://ocm.software/ + 4. Open Application Model (Microsoft, Alibaba): https://oam.dev/ -> kubevela: https://kubevela.io/ + 5. kusionstack: https://www.kusionstack.io/ +- Criteria: + 1. Integration with fluxcd as the first selection criterion + 2. A user-friendly frontend + 3. Multi-cluster support + 4. CNCF incubation +- Serge A.: Minio integration in progress for resource management + LDAP integration +- Lionel H.: Spark issue in progress diff --git a/users/2024/20240925.md b/users/2024/20240925.md new file mode 100644 index 0000000..9154b2e --- /dev/null +++ b/users/2024/20240925.md @@ -0,0 +1,17 @@ +--- +date: 2024-09-25 +type: users +attendees: + - Idir I. (DGFIP) + - Nicolas V (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Moncef L. (DGFIP) + - Serge A. (DGFIP) +--- + +- Sandbox: Integration of KIND for platforms (not macOS: Linux, Windows) [Kube on containers] +- Sandbox: Integration of Vagrant for internal use [Kube on VMs] +- Backend OKDP UI: Choice in progress and discussions on KubeVela and Crossplane (Open Application Model) +- Backend OKDP UI: Crossplane (Open Application Model) +- MinIO: Resource management (in progress) diff --git a/users/2024/20241002.md b/users/2024/20241002.md new file mode 100644 index 0000000..cadb0f5 --- /dev/null +++ b/users/2024/20241002.md @@ -0,0 +1,29 @@ +--- +date: 2024-10-02 +type: users +attendees: + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Moncef L. (DGFIP) + - Serge A. (DGFIP) + - Moncef L. (DGFIP) + - Lionel H. (Orange) +--- + +- Sandbox: Integration of Minikube for better cross-OS compatibility: Windows, Linux, etc. +- UI: Exclude the KubeVella option for the following reasons: + 1. No versioning + 2. Packaging does not match + 3. No GitOps + 4. Decreasing trend on GitHub +- Instead, proceed with the following architecture : + +![Flux schema](./assets/20241002-schema.png) + +1. A REST API development using Go-lang will be necessary between the frontend and the Git layer. +2. The choice of Go-lang is based on the following arguments : + - [X] Continuity with Kubernetes and existing tools like kubectl + - [x] Simpler exploitation + - [x] Modularity +- Unit and integration tests in progress on the Spark authentication module by Orange diff --git a/users/2024/20241009.md b/users/2024/20241009.md new file mode 100644 index 0000000..41efde5 --- /dev/null +++ b/users/2024/20241009.md @@ -0,0 +1,17 @@ +--- +date: 2024-10-09 +type: users +attendees: + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Chung N. (DGFIP) +--- + +- SANDBOX: minikube tested and validated in containers and VMs mode +- SANDBOX: integration pending the latest updates in KAD +- TODO: documentation of the different GitHub repositories in progress +- KAD: evolution and refactoring in progress +- UI: adding new features: multiple workspaces by namespace and the concept of deployment template +- UI: preparing a Docker image with all dependencies diff --git a/users/2024/20241016.md b/users/2024/20241016.md new file mode 100644 index 0000000..6edc05e --- /dev/null +++ b/users/2024/20241016.md @@ -0,0 +1,18 @@ +--- +date: 2024-10-16 +type: users +attendees: + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Chung N. (DGFIP) + - Olivier M. (DGFIP) + - Nicolas V. (DGFIP) + - Moncef L. (DGFIP) +--- + +- Sandbox: Integration of Minikube into the sandbox validated and integration of the new version of KAD in progress +- OKDP UI: Rest API to be done +- OKDP UI: First version of KAD and the front-end (based on Angular) validated by the team +- Chung N.: Request for a presentation of the work that will take place on Friday, October 18th at 2:00 PM diff --git a/users/2024/20241106.md b/users/2024/20241106.md new file mode 100644 index 0000000..bcc13d9 --- /dev/null +++ b/users/2024/20241106.md @@ -0,0 +1,19 @@ +--- +date: 2024-11-06 +type: users +attendees: + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Chung N. (DGFIP) + - Olivier M. (DGFIP) +--- + +- Olivier M.: update of dgfip OKDP support +- Olivier M.: presentation 01/21/25 BPCE TOSIT Day (preparation of the demo) +- Idir I.: dev of the rest api for the OKDP UI backend +- Serge A.: Refactoring of KAD in progress +- Mehdi B.: integration in progress of the latest version of KAD for the sandbox +- Mehdi B.: preparation of the demo for the Data & AI Leaders Event +- Olivier M.: work internally DGFIP to prepare a dataset for the demos diff --git a/users/2024/20241204.md b/users/2024/20241204.md new file mode 100644 index 0000000..9582c77 --- /dev/null +++ b/users/2024/20241204.md @@ -0,0 +1,34 @@ +--- +date: 2024-12-04 +type: users +attendees: + - Moncef L. (DGFIP) + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Lionel H.(Orange) + - Olivier M. (DGFIP) +--- + +**Olivier M.** + +- Presentation at the tech show and feedback on the highly anticipated V1 of OKDP. +- TOSIT Day: presentation and demo of OKDP. + +**Lionel H.** + +- Presentation of an AI module (KeyOps) at the TOSIT Day: [Khiops](https://khiops.org/) under BSD license. +- Spark History PR approved on GCP +- compatibility with Java 8/11 in progress (replacement of Caffeine with Guava). + +**Moncef L.** + +- Add the front end to OKDP. +- Prepare the management of Spark jobs. + +**Mehdi B.** + +- Upload the slides to the DGFIP share. +- Refactor the sandbox. +- Documentation for publication on the website. diff --git a/users/2024/20241211.md b/users/2024/20241211.md new file mode 100644 index 0000000..ce4af79 --- /dev/null +++ b/users/2024/20241211.md @@ -0,0 +1,25 @@ +--- +date: 2024-12-11 +type: users +attendees: + - Moncef L. (DGFIP) + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Lionel H.(Orange) + - Olivier M. (DGFIP) + - Chung N. (DGFIP) + - Nicolas V. (DGFIP) +--- + +- Python Libraries: Request to integrate a Python library for internal teams: Streamlit. +- Slides for TOSIT Data Day: + - Preparation of materials to present strategic progress. + - Preparation of a demonstration using real data, integrating the Spark operator. + - Orange's feedback on the Spark History authentication module. +- Website: Update and definition of the roadmap to enhance visibility. +- Iceberg and Polaris: Analysis of opportunities for integrating the two technologies. +- Apache Incubation: Progress in the process of integrating OKDP into the Apache incubation program. +- Sandbox Refactoring: Integration of the latest features related to KAD and configuration refactoring. +- Superset: Emphasis on the importance of a gouv chart for its integration into OKDP. diff --git a/users/2024/20241218.md b/users/2024/20241218.md new file mode 100644 index 0000000..3c0f3c9 --- /dev/null +++ b/users/2024/20241218.md @@ -0,0 +1,18 @@ +--- +date: 2024-12-18 +type: users +attendees: + - Moncef L. (DGFIP) + - Idir I. (DGFIP) + - Mehdi B. (DGFIP) + - Guillaume M. (DGFIP) + - Serge A. (DGFIP) + - Olivier M. (DGFIP) +--- + +- Streamlit: Validation of the addition of the Streamlit library to Python tools. +- BPCE Day: Preparation underway for the event scheduled on 01/21. +- Roadmap 2025: in progress +- Sandbox: in progress + Decision to resolve DNS via /etc/hosts. +- Superset: Integration of the governance chart into the roadmap to be planned. +- OKDP Server: Implementation in progress. diff --git a/users/2024/assets/20241002-schema.png b/users/2024/assets/20241002-schema.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1885208db48b767f3b25ff9f76ea7e7653fe9f GIT binary patch literal 55972 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