# nokia-eda/playground architecture

> Architecture diagram of the GitHub repository nokia-eda/playground, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nokia-eda/playground
- Repository: https://github.com/nokia-eda/playground

## Overview

EDA Playground is a Makefile-driven setup for trying EDA with a preconfigured deployment and simulated network. The documented workflow starts with a user invoking the Makefile, which coordinates Kubernetes setup, EDA configuration, application installation, and topology loading. The tree shows separate app-installation paths and topology assets. Some wiring is inferred from the documented Makefile role and module names; source excerpts do not show the Makefile recipes, so uncertain invocation details are omitted.

Main entry points: [`Makefile`](https://github.com/nokia-eda/playground/blob/main/Makefile) (Makefile entrypoint), [`.mk/topology-load.mk`](https://github.com/nokia-eda/playground/blob/main/.mk/topology-load.mk) (Topology loader), [`.mk/k8s-utils.mk`](https://github.com/nokia-eda/playground/blob/main/.mk/k8s-utils.mk) (Kubernetes utilities), [`.mk/install-apps-using-appinstall.mk`](https://github.com/nokia-eda/playground/blob/main/.mk/install-apps-using-appinstall.mk) (AppInstall deployment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Playground setup"]
  node_makefile["Makefile entrypoint"]
  node_k8s["Kubernetes utilities<br/>[k8s-utils.mk]"]
  node_auth["Cluster authentication<br/>[auth-config.mk]"]
  node_kind_config["Kind cluster config<br/>[kind.yaml]"]
end

subgraph group_deployment["EDA deployment"]
  node_eda_config["EDA configuration<br/>[90-eda.conf]"]
  node_eda_service["EDA UI service<br/>[eda-ui.service]"]
  node_eda_api["EDA API service<br/>[eda-api-svc.yaml]"]
end

subgraph group_apps["Application installation"]
  node_appinstall["AppInstall deployment"]
  node_workflow_install["Workflow deployment"]
  node_app_templates["App install templates"]
  node_upgrade_template["App upgrade template"]
  node_workflow_template["Workflow template"]
  node_inventory["Inventory recovery"]
end

subgraph group_network["Simulated network"]
  node_topology_loader["Topology loader<br/>[topology-load.mk]"]
  node_topology_defs["Network topologies"]
  node_topology_data["Simulation config data"]
  node_metallb_config["MetalLB configuration"]
end

node_user(("Playground user"))
node_kubernetes{{"Kubernetes cluster"}}

node_user -->|"invokes"| node_makefile
node_makefile -->|"coordinates setup"| node_k8s
node_makefile -->|"configures access"| node_auth
node_makefile -->|"installs apps"| node_appinstall
node_makefile -->|"installs apps"| node_workflow_install
node_makefile -->|"loads topology"| node_topology_loader
node_k8s -->|"uses settings"| node_kind_config
node_k8s -->|"configures"| node_kubernetes
node_auth -->|"authenticates"| node_kubernetes
node_appinstall -->|"uses template"| node_app_templates
node_appinstall -->|"uses template"| node_upgrade_template
node_workflow_install -->|"uses template"| node_workflow_template
node_topology_loader -->|"loads definitions"| node_topology_defs
node_topology_loader -->|"loads simulation data"| node_topology_data
node_topology_loader -->|"loads configuration"| node_metallb_config
node_inventory -.->|"reads inventories"| node_kubernetes
node_inventory -.->|"recovers inventories"| node_kubernetes

click node_makefile "https://github.com/nokia-eda/playground/blob/main/Makefile"
click node_k8s "https://github.com/nokia-eda/playground/blob/main/.mk/k8s-utils.mk"
click node_auth "https://github.com/nokia-eda/playground/blob/main/.mk/auth-config.mk"
click node_eda_config "https://github.com/nokia-eda/playground/blob/main/configs/90-eda.conf"
click node_eda_service "https://github.com/nokia-eda/playground/blob/main/configs/eda-ui.service"
click node_eda_api "https://github.com/nokia-eda/playground/blob/main/configs/eda-api-svc.yaml"
click node_appinstall "https://github.com/nokia-eda/playground/blob/main/.mk/install-apps-using-appinstall.mk"
click node_workflow_install "https://github.com/nokia-eda/playground/blob/main/.mk/install-apps-using-workflow.mk"
click node_app_templates "https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-installer-install-template.yaml"
click node_upgrade_template "https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-installer-upgrade-template.yaml"
click node_workflow_template "https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-workflow-template.yaml"
click node_inventory "https://github.com/nokia-eda/playground/blob/main/scripts/manage-inventory-groups.py"
click node_topology_loader "https://github.com/nokia-eda/playground/blob/main/.mk/topology-load.mk"
click node_topology_defs "https://github.com/nokia-eda/playground/tree/main/topology"
click node_topology_data "https://github.com/nokia-eda/playground/tree/main/topology/configmaps"
click node_kind_config "https://github.com/nokia-eda/playground/blob/main/configs/kind.yaml"
click node_metallb_config "https://github.com/nokia-eda/playground/blob/main/configs/metallb-native.yaml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_makefile,node_k8s,node_auth,node_kind_config,node_user toneBlue
class node_eda_config,node_eda_service,node_eda_api toneAmber
class node_appinstall,node_workflow_install,node_app_templates,node_upgrade_template,node_workflow_template,node_inventory toneMint
class node_topology_loader,node_topology_defs,node_topology_data,node_metallb_config toneRose
class node_kubernetes toneIndigo
```

## Components

### Playground setup

- [Makefile entrypoint](https://github.com/nokia-eda/playground/blob/main/Makefile): `Makefile`
- [Kubernetes utilities](https://github.com/nokia-eda/playground/blob/main/.mk/k8s-utils.mk): `.mk/k8s-utils.mk`
- [Cluster authentication](https://github.com/nokia-eda/playground/blob/main/.mk/auth-config.mk): `.mk/auth-config.mk`
- [Kind cluster config](https://github.com/nokia-eda/playground/blob/main/configs/kind.yaml): `configs/kind.yaml`

### EDA deployment

- [EDA configuration](https://github.com/nokia-eda/playground/blob/main/configs/90-eda.conf): `configs/90-eda.conf`
- [EDA UI service](https://github.com/nokia-eda/playground/blob/main/configs/eda-ui.service): `configs/eda-ui.service`
- [EDA API service](https://github.com/nokia-eda/playground/blob/main/configs/eda-api-svc.yaml): `configs/eda-api-svc.yaml`

### Application installation

- [AppInstall deployment](https://github.com/nokia-eda/playground/blob/main/.mk/install-apps-using-appinstall.mk): `.mk/install-apps-using-appinstall.mk`
- [Workflow deployment](https://github.com/nokia-eda/playground/blob/main/.mk/install-apps-using-workflow.mk): `.mk/install-apps-using-workflow.mk`
- [App install templates](https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-installer-install-template.yaml): `configs/bulk-app-installer-install-template.yaml`
- [App upgrade template](https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-installer-upgrade-template.yaml): `configs/bulk-app-installer-upgrade-template.yaml`
- [Workflow template](https://github.com/nokia-eda/playground/blob/main/configs/bulk-app-workflow-template.yaml): `configs/bulk-app-workflow-template.yaml`
- [Inventory recovery](https://github.com/nokia-eda/playground/blob/main/scripts/manage-inventory-groups.py): `scripts/manage-inventory-groups.py`

### Simulated network

- [Topology loader](https://github.com/nokia-eda/playground/blob/main/.mk/topology-load.mk): `.mk/topology-load.mk`
- [Network topologies](https://github.com/nokia-eda/playground/tree/main/topology): `topology`
- [Simulation config data](https://github.com/nokia-eda/playground/tree/main/topology/configmaps): `topology/configmaps`
- [MetalLB configuration](https://github.com/nokia-eda/playground/blob/main/configs/metallb-native.yaml): `configs/metallb-native.yaml`

### Other components

- **Playground user**
- **Kubernetes cluster**

## Connections

- Playground user → Makefile entrypoint: invokes
- Makefile entrypoint → Kubernetes utilities: coordinates setup
- Makefile entrypoint → Cluster authentication: configures access
- Makefile entrypoint → AppInstall deployment: installs apps
- Makefile entrypoint → Workflow deployment: installs apps
- Makefile entrypoint → Topology loader: loads topology
- Kubernetes utilities → Kind cluster config: uses settings
- Kubernetes utilities → Kubernetes cluster: configures
- Cluster authentication → Kubernetes cluster: authenticates
- AppInstall deployment → App install templates: uses template
- AppInstall deployment → App upgrade template: uses template
- Workflow deployment → Workflow template: uses template
- Topology loader → Network topologies: loads definitions
- Topology loader → Simulation config data: loads simulation data
- Topology loader → MetalLB configuration: loads configuration
- Inventory recovery → Kubernetes cluster: reads inventories
- Inventory recovery → Kubernetes cluster: recovers inventories
