Skip to content

alkem-io/infrastructure

Alkemio Logo

Enabling society to collaborate. Building a better future, together.

Infrastructure

This repository is for managing the creation, deployment and operations of Alkemio instances.

NOTE: This repository is somewhat out of date, if you have particular questions the please contact us directly or raise an issue.

Alkemio is architected as a micro-services application, implying:

  • Docker images: all deployments are based on docker images
  • Containers onto Kubernetes: deploying containers based on those docker images onto a kubernetes cluster
  • Kubernetes via Terraform: the kubertnes cluster is created itself via Terraform

The core services that are running in a deployment of Alkemio include:

  • Alkemio Server: for core data model management and authorisation
  • Alkemio Client.Web: a sample web server that allows browser based navigation of the ecoverse
  • Identity Provider: based on Ory Oathkeeper and Ory Kratos
  • Traefik: A reverse proxy and incoming traffic management for the exposed web endpoints
  • Database: currently based on MySql, for storing the representation of the Alkemio instance

Note: this repository is about creating a production deployment of Alkemio. If you are simply looking for getting a test version up and running quickly then you might also want to consider the Demo repository which uses Docker-compose to pull together a simple working example.

Finally, worth mentioning that as with any automation there is a point of diminishing returns, so there are still some aspects of the Kubernetes cluster that are not fully generated from via Terraform.

Cluster Logical Design

Cluster

Current overview of the services that are running on AKS.

Cluster

Url mappings

Currently there is one publicly visible deployment environment at dev.alkem.io. This URL directs traffic to the external ip of our kubernetes cluster, where our ingress controller, Traefik, takes over and routes the incoming request to the correct service.

Currently there are two endpoints exposed:

  • dev.alkem.io: the web front end to allow browsing of the Alkemio instance.
  • dev.alkem.io/graphql: the graphql api exposed by the server. It can be both directly accessed and it is used by the client web server to obtain the data presented via the browser application. More can be found on the Alkemio Server repo.

Orchestration

For creating a production version of Alkemio the recommendation is to use a Kubernetes cluster. Currently there are two deployments supported:

  • K8s AKS (Azure Kubernetes Service) Cluster: Please look into the terraform-aks-k8s folder for steps on how to terraform a new cluster on Azure.
  • K8s AWS EKS (Elastic Kubernetes Service) Cluster: Please look into the terraform-eks-k8s folder for steps on how to terraform a new cluster on AWS.

Additional Information:

About

Creates deployments, managing infrastructure scripts, devops, monitoring, ...

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages