Skip to content

Commit

Permalink
Merge branch 'main' into LZK/update-minio-version
Browse files Browse the repository at this point in the history
  • Loading branch information
lzianekhodja-aneo authored Aug 3, 2023
2 parents 643e3e7 + 60df313 commit fa05629
Show file tree
Hide file tree
Showing 13 changed files with 577 additions and 9 deletions.
84 changes: 79 additions & 5 deletions .docs/content/0.armonik/1.glossary.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Glossary

Here is an alphabetically sorted list to help you understand every term you might encounter in the ArmoniK project:

## ActiveMQ

Open source message broker written in Java used as the tasks queue.

For more information, check [ActiveMQ documentation](https://activemq.apache.org/)

## CLA

Contributor License Agreement, Contribution agreement in the form of a license that everyone contributing to a given project must sign. One CLA is to be signed per repository.

You may read the CLA [here](https://gist.github.com/svc-cla-github/d47e32c1e81248bde8fee5aec9c8f922)

## Client

User-developed software that communicates with the ArmoniK Control Plane to submit a list of tasks to be executed (by one or several workers) and retrieves results and error.
Expand All @@ -26,37 +40,87 @@ Input data for a given task that depends on another unique task. Data dependenci

Expression designating the set of software components running the various storage and database systems within ArmoniK.

## Fluentbit

Log and metrics monitoring tool, optimized for scalable environments.
For more information, check [Fluentbit's documentation](https://docs.fluentbit.io/manual)

## HPA

Horizontal Pod Autoscaler : a Kubernetes module to automatically update the amount of resources to allocate based on the current workload.

For more information, check [Kubernetes documentation about HPA](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)

## Grafana

Data visualization web application. Used to monitor resources and statistics in ArmoniK

For more information, check [Grafana's documentation](https://grafana.com/docs/)

## gRPC

Open source framework capable of running on different platforms, computer or server, and can communicate between these different environments . Remote Procedure Call was made by Google originally.

For more information, check [gRPC's website](https://grpc.io/docs/)

## Ingress

API object that manages external access to the services in a cluster, typically HTTP. Ingress may provide load balancing, SSL termination and name-based virtual hosting.

For more information, check [Kubernetes documentation about Ingress](https://docs.nginx.com/nginx-ingress-controller/intro/overview/)

## KEDA

Kubernetes Event-driven Autoscaler : this component exposes custom metrics external to Kubernetes. The HPA can have accesss to it

For more information, check [KEDA's documentation](https://keda.sh/docs/)

## Kubernetes

Kubernetes is an open source container orchestration engine for automating deployment, scaling and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation ([CNCF](https://www.cncf.io/about)) (see Kubernetes [documentation](https://kubernetes.io/docs/home/#:~:text=Kubernetes%20is%20an%20open%20source,and%20management%20of%20containerized%20applications.)).
Kubernetes is an open source container orchestration engine for automating deployment, scaling and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation ([CNCF](https://www.cncf.io/about))

For more information, check [Kubernetes documentation](https://kubernetes.io/docs/home/)

## MongoDB

MongoDB is a document database designed for ease of application development and scaling (see MongoDB [documentation](https://www.mongodb.com/docs/manual/)).
MongoDB is a document database designed for ease of application development and scaling.
For more information, check [MongoDB's documentation](https://www.mongodb.com/docs/manual/).

## Node

In the context of Kubernetes, a node is a machine that runs containerized workloads as part of a Kubernetes cluster. A node can be a physical or virtual machine hosted in the cloud or on-premise.

## NuGet

The name can be used to refer to the **package manager** using the .NET framework or the **packages** themselves. These packages contain code from other developers that you may download and use.
For more information, check the [NuGet documentation](https://learn.microsoft.com/en-us/nuget/)

## Partition

Logical segmentation of the Kubernetes cluster's pool of machines to distribute workloads according to usage. This feature is provided and handled by ArmoniK.

## Payload

Input data for a task that does not depend on any other task.
Input data for a task that does not depend on any other task. This is the actual binary input of a task.

## Pod

Pods are the smallest deployable units of computing that one can create and manage in Kubernetes. A Pod is a group of one or more containers, with shared storage and network resources and a specification for how to run the containers. A Pod's contents are always co-located and co-scheduled and run in a shared context. A Pod models an application-specific "logical host": it contains one or more application containers which are relatively tightly coupled (see Kubernetes [documentation](https://kubernetes.io/docs/concepts/workloads/pods/)).

## Polling agent

Former term for scheduling agent.
Former name of the scheduling agent.

## Prometheus

Toolkit that collects and stores time series data from the different systems. These data can be visualized with Grafana for monitoring.
For more information, check [Prometheus documentation](https://prometheus.io/docs/introduction/overview/)

## Redis

Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker and streaming engine. Redis provides data structures such as strings, hashes, lists, sets and sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster (see [Redis documentation](https://redis.io/docs/about/)). In ArmoniK, Redis is used as a key-value cache for task data (such as payloads and results).
Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker and streaming engine. Redis provides data structures such as strings, hashes, lists, sets and sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster (see [Redis documentation](https://redis.io/docs/about/)).

In ArmoniK, Redis is used as a key-value cache for task data (such as payloads and results).

## Scheduling agent

Expand All @@ -66,6 +130,12 @@ Containerized software cohabiting with a worker within a pod, running a specific

A session is a logical container for tasks and associated data (task statut, results, errors, etc). Every task is submitted within a session. An existing session can be resumed to retrieve data or submit new tasks. When a session is cancelled, all associated executions still in progress are interrupted.

## Seq

Logs aggregator software. Used in ArmoniK to identify and aggregate errors and information from the different components.

For more information, check [Seq's documentation](https://docs.datalust.co/docs)

## Submitter

Containerized software in charge of submitting tasks, i.e., writing the corresponding data to the various databases (queue, Redis and MongoDB).
Expand All @@ -77,3 +147,7 @@ Atomic computation taking one or several input data and outputting one or severa
## Worker

User-developed containerized software capable of performing one or several tasks depending on its implementation. A worker can simply take input data and perform calculations on it to return a result. A worker can also submit new tasks that will be self-performed, or by different workers, other instances of itself.

## Workload

Set of computational tasks
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Installation
# Deployment

Now that prerequisites are installed, you can install ArmoniK. In order to do that, we provide a script to deploy all the infrastructure in one command.

Expand Down
47 changes: 47 additions & 0 deletions .docs/content/1.installation/1.linux/2.all-in-one-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# All in one deployment

If you want to deploy ArmoniK with all the cloud services, this section is for you.

::alert{type="info"}
This deployment is for development purposes.
::

## Deploy

To launch the deployment, go to the [`infrastructure/quick-deploy/localhost/all`](https://github.com/aneoconsulting/ArmoniK/tree/main/infrastructure/quick-deploy/localhost/all) directory:

If you want to deploy on AWS, go to the dedicated section on [`AWS`](https://github.com/aneoconsulting/ArmoniK/tree/main/infrastructure/quick-deploy/aws/all)

Execute the following command:

```bash
make
```

or

```bash
make deploy
```

## Configuration

All parameters are contained in [`parameters.tfvars`](https://github.com/aneoconsulting/ArmoniK/blob/main/infrastructure/quick-deploy/localhost/all/parameters.tfvars)

::alert{type="info"}
By default, all the cloud services are set to launch. To see what kind of parameters are available, read [`variables.tf`](https://github.com/aneoconsulting/ArmoniK/blob/main/infrastructure/quick-deploy/localhost/all/variables.tf)
::

You can specify a custom parameter file. When executing the `make` command, you may use the `PARAMETERS_FILE` option to set the path to your file.

```bash
make PARAMETERS_FILE=my-custom-parameters.tfvars
```

## Destroy

To destroy the deployment, type:

```bash
make destroy
```
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Verify Installation

After [installing ArmoniK](./1.installation.md), it is time to execute some simple tests to check that everything is working as expected. In order to do that, the ArmoniK team is providing three simple tests to verify that the deployment went well.
After [installing ArmoniK](./1.deployment.md), it is time to execute some simple tests to check that everything is working as expected. In order to do that, the ArmoniK team is providing three simple tests to verify that the deployment went well.

## Seq

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Hereafter, You have instructions to deploy ArmoniK on dev/test environment upon your local machine with a simple deploy
script [deploy-dev-test-infra.sh](https://github.com/aneoconsulting/ArmoniK/blob/main/infrastructure/utils/scripts/deploy-dev-test-infra.sh)

You can find [prerequisites here](./0.prerequisites.md) and [installation instructions here](./1.installation.md)
You can find [prerequisites here](./0.prerequisites.md) and [installation instructions here](./1.deployment.md)

# Script bash

Expand Down
59 changes: 59 additions & 0 deletions .docs/content/1.installation/3.aws/aws-all-in-one-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# AWS all in one deployment

Deploying on AWS is similar to deploying on localhost but with the necessity to deploy an S3 bucket first.

## Generate S3 bucket key

Execute the following command to generate a prefix key:

```bash
make bootstrap-deploy PREFIX=<PREFIX_KEY>
```

To deploy, simply execute the following command:

```bash
make deploy PREFIX=<PREFIX_KEY>
```

Note : after the deployment, you can retrieve the prefix key in the prefix file: `<PATH_TO_AWS_FOLDER>/generated/.prefix`

To destroy the deployment, execute the following command:

```bash
make destroy PREFIX=<PREFIX_KEY>
```

To destroy the AWS prefix key, execute the following command:

```bash
make bootstrap-destroy PREFIX=<PREFIX_KEY>
```

## Accessing Kubernetes cluster

To access your Kubernetes cluster, execute the following command after entering your settings in the 3 angle brackets:

```bash
aws --profile <AWS_PROFILE>​ eks update-kubeconfig --region <AWS_REGION> --name <NAME_AWS_EKS>
```

or simply enter the following command:

```bash
export KUBECONFIG=<PATH_TO_AWS_FOLDER>/generated/kubeconfig
```

## Configuration

All parameters are contained in [`parameters.tfvars`](https://github.com/aneoconsulting/ArmoniK/blob/main/infrastructure/quick-deploy/aws/all/parameters.tfvars)

::alert{type="info"}
By default, all the cloud services are set to launch. To see what kind of parameters are available, read [`variables.tf`](https://github.com/aneoconsulting/ArmoniK/blob/main/infrastructure/quick-deploy/aws/all/variables.tf)
::

You can specify a custom parameter file. When executing the `make` command, you may use the `PARAMETERS_FILE` option to set the path to your file.

```bash
make PARAMETERS_FILE=my-custom-parameters.tfvars
```
2 changes: 1 addition & 1 deletion .docs/content/2.guide/populate-database.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This guide is useful for the [Admin GUI](https://github.com/aneoconsulting/Armon

## Prerequisites

You need to have a running ArmoniK cluster. If you don't have one, please follow the [Getting Started](../1.installation/1.linux/1.installation.md) guide.
You need to have a running ArmoniK cluster. If you don't have one, please follow the [Getting Started](../1.installation/1.linux/1.deployment.md) guide.

## Functioning

Expand Down
Loading

0 comments on commit fa05629

Please sign in to comment.