Skip to content

Commit

Permalink
Merge branch 'FRINXio:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
BranislavMalo authored Jul 30, 2024
2 parents 66ac0f8 + e6d7df5 commit 10bfaa8
Show file tree
Hide file tree
Showing 17 changed files with 821 additions and 34 deletions.
43 changes: 17 additions & 26 deletions frinx-machine/getting-started/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,12 @@ order: 2000
# FRINX Machine introduction

FRINX Machine is a dockerized deployment of multiple elements. The FRINX
Machine enables large scale automation of network devices, services and
retrieval of operational state data from a network. User specific
Machine enables large-scale automation of network devices, services and
retrieval of operational state data from a network. User-specific
workflows are designed through the use of OpenConfig NETCONF & YANG
models, vendor native models, and the CLI. The FRINX Machine uses
dockerized containers that are designed and tested to work together to
create a user specific solution.

!!!
For installation, please refer to: [FRINX Machine
repository](https://github.com/FRINXio/FRINX-machine)
!!!
create a user-specific solution.

!!!
FRINX-machine can be installed in Kubernetes using the [Helm chart](https://artifacthub.io/packages/helm/frinx-helm-charts/frinx-machine)
Expand All @@ -27,40 +22,40 @@ FRINX-machine can be installed in Kubernetes using the [Helm chart](https://arti

### FRINX UniConfig

- Connects to the devices in network
- Connects to the devices in the network
- Retrieves and stores configuration from devices
- Pushes configuration data to devices
- Builds diffs between actual and intended config to execute atomic
configuration changes
- Retrieves operational data from devices
- Manages transactions across one or multiple devices
- Translates between CLI, vendor native, and industry standard data
- Translates between CLI, vendor native, and industry-standard data
models (i.e. OpenConfig)
- Reads and stores vendor native data models from mounted network
devices (i.e YANG models)
- Ensures high availability, reducing network outages and down time
- Ensures high availability, reducing network outages and downtime
- Executes commands on multiple devices simultaneously

### Netflix Conductor (workflow engine) - core of Workflow manager
### Netflix Conductor (workflow engine) - the core of the Workflow manager

- Atomic tasks are chained together into more complex workflows
- Defines, executes and monitors workflows (via REST or UI)

We chose Netflix’s conductor workflow engine since it has been proven to
be highly scalable open-source technology that integrates very well with
FRINX UniConfig. Further information about conductor can be found at:
be a highly scalable open-source technology that integrates very well with
FRINX UniConfig. Further information about Conductor can be found at:

- **Sources:** https://github.com/Netflix/conductor
- **FRINXio sources:** https://github.com/FRINXio/conductor-community
- **Docs:** https://conductor-oss.github.io/conductor/index.html

### Postgres database - core of Device inventory
### Postgres database - the core of Device inventory

- Stores inventory data

### Monitoring software: loki + grafana + influxdb + telegraf - core of Monitoring

- Stores workflow execution and meta data
- Stores workflow execution and metadata
- Stores UniConfig logs
- Stores docker container logs

Expand All @@ -72,32 +67,28 @@ FRINX UniConfig. Further information about conductor can be found at:
- Allows users to mount devices and view their status. The UI allows
users to execute UniConfig operations such as read, edit, and
commit. Configurations can be pushed to or synced from the network
- Device inventory, workflow execution, resource manager are
- Device inventory, workflow execution, and resource manager are
all accessible through the UI

## High Level Architecture
## High-Level Architecture

Following diagram outlines main functional components in the FRINX
The following diagram outlines the main functional components in the FRINX
Machine solution:

![FM Architecture](FRINX_Machine_Architecture.png)

FRINX Machine repository is available at https://github.com/FRINXio/FRINX-machine

Frinx-conductor repository is available at https://github.com/FRINXio/conductor

## Defining a workflow

The workflows are defined using a JSON based domain specific language
The workflows are defined using a JSON-based domain-specific language
(DSL) by wiring a set of tasks together. The tasks are either control
tasks (fork, conditional, etc.) or application tasks (i.e. encoding a
file) that are executed on a remote device.

The FRINX Machine distribution comes pre-loaded with a number of
The FRINX Machine distribution comes pre-loaded with several
standardized workflows

A detailed description of how to run workflows and tasks, along with
examples, can be found in the official [Netflix Conductor
examples can be found in the official [Netflix Conductor
documentation](https://conductor-oss.github.io/conductor/documentation/configuration/workflowdef/index.html)

## Operating FRINX Machine
Expand Down
135 changes: 135 additions & 0 deletions frinx-machine/installation/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
icon: rocket
expanded: false
order: 2000
---

# FRINX Machine Helm Chart Installation Guide

This guide provides the step-by-step instructions for installing FRINX Machine on a Kubernetes cluster using Helm charts.

## Prerequisites

- `Minikube`: Make sure that Minikube is installed on your local machine. Follow the Minikube installation guide if necessary.
- `Helm`: Make sure that Helm is installed. Follow the Helm installation guide if necessary.


## Step 1: Start Minikube

```bash
# Minimal recommended setup
minikube start --cpus=12 --memory=24G --kubernetes-version=v1.27 --addons=ingress

# Alternatively, use maximum available CPUs
minikube start --cpus=max --memory=24G --kubernetes-version=v1.27 --addons=ingress
```

## Step 2: Add the FRINX Helm Repository

Add the FRINX Helm repository and update the repository list:

```bash
helm repo add frinx https://FRINXio.github.io/helm-charts
helm repo update
```

## Step 3: Install Operators and CRDs

Install FRINX Machine operators and custom resource definitions (CRDs):

```bash
helm install -n frinx --create-namespace frinx-machine-operators frinx/frinx-machine-operators
```

Verify the installation by checking the pods in the frinx namespace:


```bash
kubectl get pods -n frinx
```

You should see output similar to:

```bash
NAME READY STATUS RESTARTS AGE
arango-frinx-machine-operators-operator-6dfdff75bd-cnwmp 1/1 Running 0 25s
arango-frinx-machine-operators-operator-6dfdff75bd-k8kqp 1/1 Running 0 25s
frinx-machine-operators-cloudnative-pg-d9566444c-85w8g 1/1 Running 0 25s
```

## Step 4: Create Docker Registry Secret

Create a Docker registry secret for pulling images:

For more info about accessing private images, visit [Download Frinx Uniconfig](https://docs.frinx.io/frinx-uniconfig/getting-started/#download-frinx-uniconfig)

```bash
kubectl create secret -n frinx docker-registry regcred \
--docker-server="https://index.docker.io/v1/" \
--docker-username="<PLACEHOLDER>" \
--docker-password="<PLACEHOLDER>"
```

## Step 5: Install FRINX Machine

Install the FRINX Machine using Helm:

```bash
helm install -n frinx frinx-machine frinx/frinx-machine
```

Verify the installation by checking the pods in the frinx namespace:

```bash
kubectl get pods -n frinx
```

You should see output similar to:

```bash
NAME READY STATUS RESTARTS AGE
arango-frinx-machine-operators-operator-6dfdff75bd-h6mxb 1/1 Running 0 21m
arango-frinx-machine-operators-operator-6dfdff75bd-xh9x6 1/1 Running 0 21m
arangodb-sngl-yxxouifa-e0f232 1/1 Running 0 11m
conductor-server-6757754659-tss78 2/2 Running 0 19m
device-induction-56fdd555b8-j646n 1/1 Running 0 19m
frinx-frontend-7c596b6bfc-qgthp 2/2 Running 0 19m
frinx-machine-operators-cloudnative-pg-d9566444c-fgp5w 1/1 Running 0 21m
grafana-64986657b8-zzc5x 1/1 Running 0 19m
influxdb-0 1/1 Running 0 19m
inventory-57994dcd85-9v2f9 1/1 Running 0 19m
kafka-controller-0 1/1 Running 0 19m
krakend-85bb6cd88b-6ldg7 2/2 Running 0 19m
loki-0 1/1 Running 0 19m
performance-monitor-f6885b4dc-4wrfp 1/1 Running 0 19m
postgresql-1 1/1 Running 0 11m
postgresql-2 1/1 Running 0 11m
promtail-zfmkn 1/1 Running 0 19m
resource-manager-d98d6866b-w5d6x 1/1 Running 0 19m
swagger-ui-5b9fc85b99-8tzdd 1/1 Running 0 19m
telegraf-ds-drsh7 1/1 Running 0 19m
timescale-db-0 1/1 Running 0 19m
topology-discovery-6d8c975876-gqg79 2/2 Running 0 19m
uc-zone-lb-9cd56dd7-x82tz 1/1 Running 0 19m
uniconfig-controller-75d945f9c5-lggdb 1/1 Running 0 12m
uniconfig-postgresql-1 1/1 Running 0 12m
uniconfig-postgresql-2 1/1 Running 0 12m
```

## Step 6: Access the UI

Add the following entries to your /etc/hosts file:

```
# /etc/hosts
...
192.168.49.2 krakend.127.0.0.1.nip.io fm.127.0.0.1.nip.io
```

Enable the KrakenD ingress for the FRINX Machine:

```
helm upgrade --install -n frinx frinx-machine frinx/frinx-machine --set krakend.ingress.enabled=true
```

Visit Frinx Machine page in your browser on `https://krakend.127.0.0.1.nip.io/frinxui`
5 changes: 1 addition & 4 deletions frinx-uniconfig/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ docker stop uniconfig

### Download FRINX UniConfig

Download a ZIP archive of the latest FRINX UniConfig: [uniconfig-5.0.7.zip](https://license.frinx.io/download/uniconfig-5.0.7.zip)
To download UniConfig, please contact: [email protected]

By downloading, you accept the [FRINX software agreement](https://frinx.io/eula).

Expand Down Expand Up @@ -111,6 +111,3 @@ The file can be found here:

See [OpenAPI](https://docs.frinx.io/frinx-uniconfig/user-guide/operational-procedures/openapi/) for more information.

## Offline Activation

For offline activation of UniConfig, please contact **[email protected]**.
7 changes: 7 additions & 0 deletions frinx-uniconfig/release-notes/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Release notes

- [Release notes for UniConfig 6.1.2](../release-notes/uniconfig-6.1.2.md)
- [Release notes for UniConfig 6.0.6](../release-notes/uniconfig-6.0.6.md)
- [Release notes for UniConfig 6.0.5](../release-notes/uniconfig-6.0.5.md)
- [Release notes for UniConfig 6.1.1](../release-notes/uniconfig-6.1.1.md)
- [Release notes for UniConfig 6.1.0](../release-notes/uniconfig-6.1.0.md)
- [Release notes for UniConfig 5.1.23](../release-notes/uniconfig-5.1.23.md)
- [Release notes for UniConfig 6.0.4](../release-notes/uniconfig-6.0.4.md)
- [Release notes for UniConfig 6.0.3](../release-notes/uniconfig-6.0.3.md)
- [Release notes for UniConfig 5.1.22](../release-notes/uniconfig-5.1.22.md)
- [Release notes for UniConfig 6.0.2](../release-notes/uniconfig-6.0.2.md)
Expand Down
9 changes: 9 additions & 0 deletions frinx-uniconfig/release-notes/uniconfig-5.1.23.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!-- Release notes generated using configuration in .github/release.yml at 5.1.23 -->

## What's Changed
### βœ… New Features
* Added 13.* version support for ARRIS devices
### πŸ”¨ Dependency Upgrades
* Embedded Postgres 16
### πŸ”§ Other Changes
* Bump to 5.1.23-SNAPSHOT.
56 changes: 56 additions & 0 deletions frinx-uniconfig/release-notes/uniconfig-6.0.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!-- Release notes generated using configuration in .github/release.yml at 6.0.4 -->

## What's Changed
### 🐞 Bug Fixes
* [UNIC-1728] Fix reading of sample VNF config from netconf-testtool
* Add missing dependencies to testtool
* Swagger - add missing namespace when node is augmenting on deeper level
* SwaggerUI - show extensions
* Fix gnmi missing schemaContext handling
* Swagger - fix required statement
* Swagger - fix url parameters
* Docker Compose - add NET_RAW capability
* [UNIC-966] Fix create and update operation in PATCH
* Fix update tag in PATCH and apply-template
* [UNIC-1657] Set found subtree isSelected to true.
* [UNIC-1746] Swagger: fix custom operational path
* [UNIC-1737] Fix synchronization of datastore from DatabaseDOMDataBroker
* Fix sending netconf or gnmi mount body with param schema-cache-directory set to "" (empty string)
* [UNIC-1744] UC Shell: Fix show on choice nodes
### βœ… New Features
* [UNIC-1710] CLI health-check
* Added 13.* version support for ARRIS devices
### πŸ’‘ Improvements
* Switch to Exificient
* [UNIC-397] Improve error message for keys in payload.
* [UNIC-1038] Rewrite Dockerfile
* [UNIC-1735] Improve gnmi list deserialization
* Refactor crypto mount parameter to device-crypto in java client side.
* Cleanup dependencies
* Swagger - use oneOf for choice nodes
### πŸ”¨ Dependency Upgrades
* Update wrapper script and mvnw to version 3.3.1
* build(deps): bump org.jetbrains.kotlin:kotlin-maven-plugin from 1.9.23 to 1.9.24
* Remove unused dependency - objenesis
* Use Embedded Postgres version 16
* Revert "Use Embedded Postgres version 16 (#2419)"
* Docker scout CVE fixes
* Embedded PostgreSQL 16
* build(deps): bump io.swagger.core.v3:swagger-core from 2.2.21 to 2.2.22
* build(deps): bump org.codehaus.mojo:build-helper-maven-plugin from 3.5.0 to 3.6.0
* build(deps): bump org.owasp:dependency-check-maven from 9.1.0 to 9.2.0
* build(deps): bump grpc.version from 1.63.0 to 1.64.0
* build(deps): bump org.apache.commons:commons-compress from 1.26.1 to 1.26.2
* build(deps): bump org.codehaus.mojo:exec-maven-plugin from 3.2.0 to 3.3.0
* build(deps): bump com.puppycrawl.tools:checkstyle from 10.16.0 to 10.17.0
* build(deps): bump org.apache.maven.plugins:maven-invoker-plugin from 3.6.1 to 3.7.0
* build(deps): bump commons-cli:commons-cli from 1.7.0 to 1.8.0
* build(deps): bump org.springframework.boot:spring-boot-dependencies from 3.1.11 to 3.1.12
* build(deps): bump org.jetbrains.kotlin:kotlin-maven-plugin from 1.9.24 to 2.0.0
* build(deps): bump maven.core.version from 3.9.6 to 3.9.7
### πŸ”§ Other Changes
* Bump to 6.0.4-SNAPSHOT.
* Clean up constants
* Update dependabot.yml
* Revert protocol uppercase back to lowercase.
* Fix typo
28 changes: 28 additions & 0 deletions frinx-uniconfig/release-notes/uniconfig-6.0.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!-- Release notes generated using configuration in .github/release.yml at 6.0.5 -->

## What's Changed
### 🐞 Bug Fixes
* [UNIC-1739] - Fix advisory session unlocking (#2467)
* Swagger: Fix missing cli topology in path parameters (#2480)
* [UNIC-1751] Fix mount operation duplication in the same tx (#2460)
* [UNIC-1753] Multiple gnmi notification fixes for IOS Xr7 (#2483)
* [UNIC-1756] Fix wrong snmp connection establishment
* [UNIC-1754] Fix yang-patch rfc8040 error response (#2489)
* Fixed JUNOS version 13 installation
* [UNIC-1758] Database error: Failed to update node YANG repository because repository does not exist in DB
* Fix augmentation qname handling
* [UNIC-883] Fix DB tx exception handling
* [UNIC-1743] Create calculate-diff-shell rpc. (#2468)
* Fix cli session closeup
* Fix traefik changing URL query param from ; to & (#2514)
* [UNIC-1763] Swagger: Fix generation of action nodes and tags (#2525)
* Fix default reading properties (#2527)
* [UNIC-1771] Refresh schemactx
* Swagger - add module name to choice schema node definition (#2541)
### πŸ’‘ Improvements
* Add banner to logs (#2509)
### πŸ”§ Other Changes
* Fix verify and merge wfs
* Bump to 6.0.5-SNAPSHOT.
* [UNIC-1764] Support to optionally wrap cases in choice node (#2539)
* Release 6.0.5.
18 changes: 18 additions & 0 deletions frinx-uniconfig/release-notes/uniconfig-6.0.6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!-- Release notes generated using configuration in .github/release.yml at 6.0.6 -->

## What's Changed
### 🐞 Bug Fixes
* [UNIC-1778] Fix journal size dispatch
* Fix merge concurrency group
* [UNIC-1775] Improve generic PromptResolutionStrategy
* [UNIC-1781] Skip nested constraints in union type (#2573)
* Interrupt task when its tx has been expired (#2589)
* [UNIC-1789] Complex types constraints skipping (#2592)
* [UNIC-1784] Fix checked-commit no rollback (#2593)
### πŸ”¨ Dependency Upgrades
* build(deps): bump maven.core.version from 3.9.7 to 3.9.8 (#2529)
* build(deps): bump org.owasp:dependency-check-maven from 9.2.0 to 10.0.0
* Bump odc to 10.0.2
### πŸ”§ Other Changes
* Bump to 6.0.6-SNAPSHOT.
* Release 6.0.6.
Loading

0 comments on commit 10bfaa8

Please sign in to comment.