Skip to content

Commit

Permalink
(root) what-is-aletheia page (#3)
Browse files Browse the repository at this point in the history
#### Features

- Add a `what-is-aletheia.md` page
- Create a high level architecture diagram
- Merge consumer and provider into single server page
  • Loading branch information
grandwizard28 authored Feb 25, 2024
2 parents 8feec76 + 9fbfeed commit b3da777
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 80 deletions.
14 changes: 1 addition & 13 deletions content/en/docs/components/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,4 @@ description: >
An overview of Aletheia's components
---

The document outlines all the components you need to run a working Aletheia cluster.

## Components
Aletheia has been built on the cobra command line cli. The following commands (each translating to one or components) are available: -

* `server`([docs](/docs/components/server/)), runs the OpenLDAP server in various modes. Currently, `provider` and `consumer` modes are avaiable.
* `api` ([docs](/docs/components/api/)), exposes REST endpoints for administrating or simply interacting with the OpenLDAP database. It is particularly useful for facilitating password operations such as checking and changing passwords.
* `worker` ([docs](/docs/components/worker/)), is responsible for polling the OpenLDAP database and sending notifications to accounts for password expiry.
* `proxy` ([docs](/docs/components/proxy/)), is responsible for providing auto failover between the active and standby provider nodes.
* `manage` ([docs](/docs/components/manager/)), manages a variety of admin operations via any CLI tool.

## What's Next?
Read about the various components of Aletheia in depth
The document outlines all the components of an Aletheia cluster.
17 changes: 17 additions & 0 deletions content/en/docs/components/server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Server
weight: 20
description: >
An overview of Aletheia's server component
---


1. A client/application connects to a load balancer.
2. The load balancer forwards this request to a bunch of consumer nodes.
3. The consumers will return read responses and will forward write requests to aletheia's proxy component.
4. The proxy forwards the write request to the active provider node. A standby node is present for automatic failover in case the active provider goes down.

Consumers are read nodes of OpenLDAP which replicate from a provider. Consumers need ephemeral storage since they always replicate from the provider to be fully consistent. They are horizontally scalable.


An Aletheia provider is a read-write node of OpenLDAP. It is responsible for storing the state of the directory. All write operations take place at this node.
6 changes: 0 additions & 6 deletions content/en/docs/components/server/_index.md

This file was deleted.

8 changes: 0 additions & 8 deletions content/en/docs/components/server/consumer.md

This file was deleted.

8 changes: 0 additions & 8 deletions content/en/docs/components/server/provider.md

This file was deleted.

58 changes: 51 additions & 7 deletions content/en/docs/concepts/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,60 @@ description: >
An overview of Aletheia's architecture
---

The document outlines the high level architecture of a complete Aletheia cluster.
The document outlines the high level architecture of a complete Aletheia cluster. Aletheia is a set of components with distinct and decoupled purposes. The components can be categorized as follows:

{{< figure src="/images/docs/architecture/overall.svg" alt="Overall Architecture" class="diagram-large d-flex justify-content-center" >}}
- Server
- API
- Worker

```
┌−−−−−−−−−−−−−−−┐
╎ api ╎
╎ ╎
╎ ┌───────────┐ ╎
╎ │ rest │ ╎
╎ └───────────┘ ╎
╎ ╎
└−−−−−−−−−−−−−−−┘
┌−−−−−−−−−−−−−−┐ ┌−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−┐
╎ worker ╎ ╎ server ╎
╎ ╎ ╎ ╎
╎ ┌──────────┐ ╎ ╎ ┌───────────┐ ┌───────┐ ┌───────────┐ ╎
╎ │ listener │ ╎ ──▶ ╎ │ consumers │ ────▶ │ proxy │ ──▶ │ providers │ ╎
╎ └──────────┘ ╎ ╎ └───────────┘ └───────┘ └───────────┘ ╎
╎ ╎ ╎ ╎
└−−−−−−−−−−−−−−┘ └−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−┘
┌−−−−−−−−−−−−−−−┐
╎ worker ╎
╎ ╎
╎ ┌───────────┐ ╎
╎ │ notifier │ ╎
╎ └───────────┘ ╎
╎ ╎
└−−−−−−−−−−−−−−−┘
```

## Request Flow
1. A client/application connects to a load balancer.
2. The load balancer forwards this request to a bunch of consumer nodes.
3. The consumers will return read responses and will forward write requests to aletheia's proxy component.
4. The proxy forwards the write request to the active provider node. A standby node is present for automatic failover in case the active provider goes down.
### Server
A Server is the heart of Aletheia, running an LDAP database.

Aletheia provides OpenLDAP as the database.

### API
The API provides an interface to communicate with the backing datastore apart from the LDAP protocol.

Aletheia supports a REST API.


### Workers
Workers perform asynchoronous operations on the server. Listening on change events or periodically polling to check whether the user's password is going to expire or not are all part of the worker's responsibility.

Aletheia has 2 workers - listener and notifier.

## What's Next?

Expand Down
38 changes: 0 additions & 38 deletions content/en/docs/concepts/overview.md

This file was deleted.

38 changes: 38 additions & 0 deletions content/en/docs/what-is-aletheia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: What is Aletheia?
linkTitle: What is Aletheia?
weight: -1
description: >
An overview of Aletheia and its ecosystem
---

{{% pageinfo color="primary" %}}
The name Aletheia originates from Greek mythology where Aletheia was the personified spirit of **truth**.
{{% /pageinfo %}}

## What is Aletheia?
Aletheia provides a comprehensive solution that utilizes OpenLDAP for cloud-native deployment and management of directory services. While Microsoft's Active Directory has dominated the directory service landscape, there are also open-source projects like OpenLDAP and 389 Directory Server. However, these lack a cloud-native approach for deployment and management.

The main aim of Aletheia is tobring directory services onto the cloud and to establish a single source of truth for all identities such as user accounts, access control groups, and password policies.

## Features
Aletheia, built on top of OpenLDAP, serves to solve these cross-cutting concerns. Aletheia provides a comprehensive set of features and benefits:

- Cloud Native: All components of Aletheia have been packaged as containers. This means that you can run Aletheia on a container orchestration engine of your choice.
- High Availability: Aletehia ensures high availability by running OpenLDAP servers in an active-passive mode for disaster recovery and continuous directory service availability
- Horizontal Scaling: Leveraging OpenLDAP's replication feature, Aletheia allows horizontal scaling with multiple consumers handling read load efficiently
- Notification & Change Management: End users will be notified about password expiry dates through notifications provided by Alteheis. An intuitive UI enables them to change their passwords seamlessly.
- Extensible API: Aletheia provides a REST-based API for interacting with the directory information tree.

## Components
The Aletheia system offers a range of components, each serving a specific and distinct purpose:
- [server](/docs/components/server/) runs the database server.
- [api](/docs/components/api/) provides REST endpoints for managing or interacting with the OpenLDAP database.
- [worker](/docs/components/worker/) is responsible for monitoring the OpenLDAP database and sending notifications/alerts.
- [proxy](/docs/components/proxy+), manages a HAproxy server to enable automatic failover between active and standby server nodes.

## What's Next?

* Take a look at the [Aletheia Architecture](/docs/architecture/)
* Take a look at the [Aletheia Components](/docs/components/)
* Ready to [Get Started](/docs/setup/)?

0 comments on commit b3da777

Please sign in to comment.