Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ The _all-in-one_ lab features the Grafana dashboard that takes the central stage
## Requirements

> [!IMPORTANT]
> **Nokia EDA Version:** 25.12.1 or later required. Free and automated [installation available](https://docs.eda.dev/25.12/getting-started/try-eda/).
> **Nokia EDA Version:** 26.4.1 or later required. Free and automated [installation available](https://docs.eda.dev/26.4/getting-started/try-eda/).
> The EDA platform must be installed and operational before proceeding with the lab deployment.

1. **Helm**
Kubernetes package manager. [Copy](https://docs.eda.dev/25.12/user-guide/using-the-clis/#helm) from your EDA playground directory or [install](https://helm.sh/docs/intro/install/).
Kubernetes package manager. [Copy](https://docs.eda.dev/26.4/user-guide/command-line-tools/#helm) from your EDA playground directory or [install](https://helm.sh/docs/intro/install/).
2. **Kubectl**
Kubernetes CLI. [Copy](https://docs.eda.dev/25.12/user-guide/using-the-clis/#kubectl) from the playground directory or [install](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/).
Kubernetes CLI. [Copy](https://docs.eda.dev/26.4/user-guide/command-line-tools/#kubectl) from the playground directory or [install](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/).

Before proceeding with the lab deployment, ensure you have a working EDA installation. You can use either:

Expand Down Expand Up @@ -191,7 +191,7 @@ The lab is entirely automated, with all the necessary EDA resources declarativel

## Removing the lab

To remove the lab, remove the namespace it was deployed in using [edactl](https://docs.eda.dev/25.12/user-guide/using-the-clis/#edactl) and kubectl:
To remove the lab, remove the namespace it was deployed in using [edactl](https://docs.eda.dev/26.4/user-guide/command-line-tools/#edactl) and kubectl:

```bash
edactl delete namespace eda-telemetry && \
Expand Down
6 changes: 3 additions & 3 deletions charts/telemetry-stack/files/alloy/config.alloy
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ loki.write "syslog" {
loki.source.kafka "alarms" {
brokers = ["kafka.eda-telemetry.svc:9092"]
topics = ["alarms"]
version = "2.8.0"
version = "4.2.0"
group_id = "alarms-processor"
labels = { component = "kafka-alarms" }
forward_to = [loki.process.alarm_mapper.receiver]
Expand Down Expand Up @@ -53,7 +53,7 @@ loki.process "alarm_mapper" {
loki.source.kafka "deviations" {
brokers = ["kafka.eda-telemetry.svc:9092"]
topics = ["deviations"]
version = "2.8.0"
version = "4.2.0"
group_id = "deviations-processor"
labels = { component = "kafka-deviations" }
forward_to = [loki.process.deviations_mapper.receiver]
Expand Down Expand Up @@ -137,4 +137,4 @@ loki.process "syslog_parser" {

livedebugging {
enabled = true
}
}
14 changes: 7 additions & 7 deletions charts/telemetry-stack/files/grafana/dashboards/st.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@
},
"editorMode": "code",
"exemplar": false,
"expr": "resources_cr_fabrics_eda_nokia_com_v1alpha1_fabric_status_health{namespace_name='$namespace'}",
"expr": "resources_cr_fabrics_eda_nokia_com_v1_fabric_status_health{namespace_name='$namespace'}",
"instant": false,
"legendFormat": " ",
"range": true,
Expand Down Expand Up @@ -313,7 +313,7 @@
},
"editorMode": "code",
"exemplar": false,
"expr": "resources_cr_services_eda_nokia_com_v1_virtualnetwork_status_operationalState{namespace_name='$namespace'}",
"expr": "resources_cr_services_eda_nokia_com_v2_virtualnetwork_status_operationalState{namespace_name='$namespace'}",
"instant": false,
"legendFormat": " {{virtualnetwork_name}}",
"range": true,
Expand Down Expand Up @@ -388,7 +388,7 @@
},
"editorMode": "code",
"exemplar": false,
"expr": "resources_cr_protocols_eda_nokia_com_v1_defaultbgpgroup_status_numPeers{namespace_name='$namespace'} - resources_cr_protocols_eda_nokia_com_v1_defaultbgpgroup_status_numPeersOperDown\n{namespace_name='$namespace'}",
"expr": "resources_cr_protocols_eda_nokia_com_v2_defaultbgpgroup_status_numPeers{namespace_name='$namespace'} - resources_cr_protocols_eda_nokia_com_v2_defaultbgpgroup_status_numPeersOperDown{namespace_name='$namespace'}",
"instant": false,
"legendFormat": "Oper Up",
"range": true,
Expand All @@ -400,7 +400,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
"expr": "resources_cr_protocols_eda_nokia_com_v1_defaultbgpgroup_status_numPeers{namespace_name='$namespace'}",
"expr": "resources_cr_protocols_eda_nokia_com_v2_defaultbgpgroup_status_numPeers{namespace_name='$namespace'}",
"hide": false,
"instant": false,
"legendFormat": "Total Peers",
Expand Down Expand Up @@ -909,7 +909,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
"expr": "resources_cr_routing_eda_nokia_com_v1alpha1_defaultrouter_status_health{namespace_name='$namespace'}",
"expr": "resources_cr_routing_eda_nokia_com_v1_defaultrouter_status_health{namespace_name='$namespace'}",
"instant": false,
"legendFormat": "{{defaultrouter_name}}",
"range": true,
Expand Down Expand Up @@ -1818,7 +1818,7 @@
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
"expr": "network_instance_protocols_bgp_statistics_disabled_peers{network_instance_name=\"default\",source=\"$NE\", namespace_name='$namespace'}",
"expr": "node_srl_network_instance_protocols_bgp_statistics_disabled_peers{network_instance_name=\"default\",node_name=\"$NE\", namespace_name='$namespace'}",
"instant": false,
"interval": "",
"legendFormat": "Disabled Peers",
Expand Down Expand Up @@ -2968,4 +2968,4 @@
"title": "Telemetry Playground",
"uid": "Telemetry_Playground",
"version": 2
}
}
14 changes: 9 additions & 5 deletions charts/telemetry-stack/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ spec:
runAsNonRoot: true
containers:
- name: prometheus
image: quay.io/prometheus/prometheus:v3.4.2
image: quay.io/prometheus/prometheus:v3.11.3
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- --config.file=/etc/prometheus/prometheus.yml
Expand Down Expand Up @@ -70,6 +70,10 @@ spec:
app: grafana
template:
metadata:
annotations:
checksum/grafana-datasource: {{ .Files.Get "files/grafana/datasource.yml" | sha256sum }}
checksum/grafana-dashboards: {{ .Files.Get "files/grafana/dashboards.yml" | sha256sum }}
checksum/grafana-st-dashboard: {{ .Files.Get "files/grafana/dashboards/st.json" | sha256sum }}
labels:
app: grafana
spec:
Expand All @@ -79,7 +83,7 @@ spec:
runAsGroup: 472
containers:
- name: grafana
image: grafana/grafana:12.0.2
image: grafana/grafana:13.0.1
imagePullPolicy: {{ .Values.imagePullPolicy }}
env:
{{- if .Values.https_proxy }}
Expand Down Expand Up @@ -159,7 +163,7 @@ spec:
spec:
containers:
- name: loki
image: grafana/loki:3.5.2
image: grafana/loki:3.7.1
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- --config.file=/etc/loki/loki-config.yml
Expand Down Expand Up @@ -202,7 +206,7 @@ spec:
spec:
containers:
- name: alloy
image: grafana/alloy:v1.9.0
image: grafana/alloy:v1.16.0
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- run
Expand Down Expand Up @@ -254,7 +258,7 @@ spec:
spec:
containers:
- name: kafka
image: apache/kafka:4.0.0
image: apache/kafka:4.2.0
imagePullPolicy: {{ .Values.imagePullPolicy }}
env:
- name: KAFKA_NODE_ID
Expand Down
6 changes: 3 additions & 3 deletions clab/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

- **EDA Mode:** `Simulate=False` - integrates with external Containerlab nodes
- **Architecture:** SR Linux nodes and client containers run via Containerlab, telemetry stack runs in Kubernetes
- **License:** Requires valid EDA hardware license (version 25.12+)
- **License:** Requires valid EDA hardware license (version 26.4.1+)
- **Traffic Generation:** ✅ Full iperf3 support for realistic network testing
- **Node Prefix:** `clab-eda-st-*` (e.g., `clab-eda-st-leaf1`)
- **Use Case:** Re-using EDA installations with Simulate=False mode.

> [!IMPORTANT]
> **EDA Version:** 25.12.1 or later required
> **EDA Version:** 26.4.1 or later required
>
> **For Containerlab:** EDA must be installed with `Simulate=False` mode ([see docs][sim-false-doc]) and a valid EDA license is required.
>
> <small>License is not required for CX-based deployment.</small>

[sim-false-doc]: https://docs.eda.dev/user-guide/containerlab-integration/#installing-eda
[sim-false-doc]: https://docs.eda.dev/26.4/user-guide/containerlab-integration/#installing-eda

Requires EDA with `Simulate=False`.

Expand Down
14 changes: 7 additions & 7 deletions cx/topology/lab-topo.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
apiVersion: topologies.eda.nokia.com/v1alpha1
apiVersion: topologies.eda.nokia.com/v1
kind: NetworkTopology
metadata:
generateName: telemetry-lab-
namespace: eda-telemetry
spec:
operation: replaceAll
operation: ReplaceAll
nodeTemplates:
- name: leaf
nodeProfile: srlinux-ghcr-25.10.1
nodeProfile: srlinux-ghcr-25.10.3
platform: 7220 IXR-D2L
labels:
eda.nokia.com/security-profile: managed
eda.nokia.com/role: leaf
- name: spine
nodeProfile: srlinux-ghcr-25.10.1
nodeProfile: srlinux-ghcr-25.10.3
platform: 7220 IXR-D3L
labels:
eda.nokia.com/security-profile: managed
Expand All @@ -35,12 +35,12 @@ spec:

linkTemplates:
- name: isl
type: interSwitch
type: InterSwitch
labels:
eda.nokia.com/role: interSwitch
- name: edge
type: edge
encapType: dot1q
type: Edge
encapType: Dot1q
labels:
eda.nokia.com/role: edge
eda.nokia.com/macvrf1001: "true" # all access ports are part of the macvrf1001
Expand Down
14 changes: 12 additions & 2 deletions init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ edactl() {
-- edactl "$@"
}

# Run namespace bootstrap (25.12 and newer)
# Run namespace bootstrap.
echo -e "${GREEN}--> Creating ${ST_STACK_NS} namespace...${RESET}"
edactl namespace bootstrap create --from-namespace eda ${ST_STACK_NS} | indent_out

if [ $? -eq 0 ]; then
echo "Namespace ${ST_STACK_NS} bootstrap completed successfully." | indent_out
else
echo "--> Warning: Namespace ${ST_STACK_NS} bootstrap failed. Only EDA 25.12.1 and newer are supported."
echo "--> Warning: Namespace ${ST_STACK_NS} bootstrap failed. Only EDA 26.4.1 and newer are supported."
fi

if [[ -n "$CX_DEP" ]]; then
Expand Down Expand Up @@ -203,6 +203,16 @@ if [[ "$IS_CX" != "true" ]]; then
sed -i.bak -E "s/(\"host\": \")[^\"]+(\",)/\1${ALLOY_IP}\2/" "$SYSLOG_CONFIG_FILE"
echo "--> Updated syslog host to '$ALLOY_IP' in $SYSLOG_CONFIG_FILE"

CLAB_K8S_ROUTE_FILE="manifests/clab/0008_mgmt_route_to_k8s.yaml"
if [[ -f "$CLAB_K8S_ROUTE_FILE" ]]; then
K8S_LB_PREFIX=${K8S_LB_PREFIX:-$(kubectl -n metallb-system get ipaddresspool -o jsonpath='{range .items[*].spec.addresses[*]}{.}{"\n"}{end}' 2>/dev/null | grep -E '^[0-9]+\.' | head -n1)}
if [[ -z "$K8S_LB_PREFIX" ]]; then
K8S_LB_PREFIX=$(echo "$ALLOY_IP" | awk -F. '{print $1"."$2"."$3".0/24"}')
fi
sed -i.bak -E "s#(\"prefix\": \")(__K8S_LB_PREFIX__|[^\"]+)(\",)#\1${K8S_LB_PREFIX}\3#" "$CLAB_K8S_ROUTE_FILE"
echo "--> Updated clab Kubernetes route prefix to '$K8S_LB_PREFIX' in $CLAB_K8S_ROUTE_FILE"
fi

# Fetch EDA ext domain name from engine config
EDA_API=$(uv run ./scripts/get_eda_api.py)

Expand Down
4 changes: 2 additions & 2 deletions manifests/0000_apps.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ spec:
- appId: prom.eda.nokia.com
catalog: eda-catalog-builtin-apps
version:
value: v5.0.0
value: v6.0.0
- appId: kafka.eda.nokia.com
catalog: eda-catalog-builtin-apps
version:
value: v5.0.0
value: v6.0.0
38 changes: 38 additions & 0 deletions manifests/clab/0008_mgmt_route_to_k8s.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: config.eda.nokia.com/v1
kind: Configlet
metadata:
name: clab-mgmt-route-to-k8s
namespace: eda-telemetry
spec:
configs:
- path: .network-instance{.name=="mgmt"}
operation: Update
config: |-
{
"next-hop-groups": {
"group": [
{
"name": "clab-k8s-gateway",
"nexthop": [
{
"index": 1,
"ip-address": "10.58.2.1"
}
]
}
]
},
"static-routes": {
"route": [
{
"prefix": "172.19.255.0/24",
"next-hop-group": "clab-k8s-gateway"
}
]
}
}
endpointSelectors:
- eda.nokia.com/role=leaf
- eda.nokia.com/role=spine
operatingSystem: srl
priority: 0
Loading