Skip to main content

SleakOps resources overview

Here you can check the main resources that SleakOps uses by default to allow you to easily deploy a highly scalable application hosted on the cloud in just some hours. Here we will not talk about the details of how all these are connected, how the permissions policies work, roles or all the things that make everything works correctly.

The initial and main thing SleakOps uses to organize everything is the Reference Architecture so you will need to understand this structure, most of this stuff is created on the Provider step of the Onboarding.

Main Structure and Networking

  • AWS Organization: We will create an organization on your root account in case you don't have one.
  • AWS Account: Following the architecture, at this moment we create three, 'management', 'development' and 'production'.
  • Virtual Private Cloud (VPC): Each Account will have its own VPC where SleakOps deploy all the cloud resources, we do not only create the VPC but also all the Networking needs for the resources to work correctly.
  • ec2.Instance: The installation of the Pritunl VPN server is done inside a 't3.medium' instance with all the networking rules it requires.
  • Route53: Route53 is the DNS service we use to make your applications visible to everyone on the internet, for that we require you to delegate your domain to us on AWS and we handle all the subdomains.

Cluster

The Cluster on its own can't do anything, we give it the required permissions and install inside it some utilities we take advantage of to deploy the application. The most crucial pieces here are:

  • EKS Cluster (Kubernetes): Clusters are deployed only in the Accounts you define when you create them.
  • Cluster nodes: These are also defined by you when you create a cluster, nodes are an EC2 instance that uses its resources following Kubernetes management.
  • Cluster Plugins: A Cluster has many plugins that facilitate infrastructure management.

The Cluster Namespaces are a good way to separate different environments of the infrastructure so we also exploit its benefits by creating them to differentiate what we call 'ProjectEnv' which is just an object that combines a Project and an Environment. As individuals, we create an ECR repository inside the 'management account' for every Project and every Environment will be a subdomain of your deployed domain which is a Route53 HostedZone.

Dependencies and Services

A Dependency is a cloud resource your application needs to work correctly, for example, a MySql or Postgresql database (RDS Instance), an S3 bucket where to stores static files and so on. Every time you create a Dependency, a cloud resource is created on Aws and a Secret on the Cluster containing useful variables. Each of the dependencies requires many configurations, for that, at this moment, via SleakOps, we let you specify some of its most important configurations.

Every Service is installed inside the Cluster and on its corresponding Namespace depending on its ProjectEnv, they are deployed from a template we create taking the configurations you set on its creation, like the Command it executes, the resources of the nodes it uses, etc.

Releases, Deployments and VariableGroup

These three objects are part of the final deployment of your application and are installed inside the Cluster, on its own they do not set up any cloud resource:

  • Releases: Creates the Chart and every template of the services you will deploy. It's a Helm release that contains a Chart with every template of the services you will deploy.
  • Deployment: It is the actual deployment of the Helm release created before. These steps also use the values of the VariableGroup objects of the ProjectEnv (Namespace) to apply them to the services or the application
  • VariableGroup: They are sets of key-value pairs that are used to configure a service or the applications as a whole. On SleakOps we consider three types of VariableGroups: Globals, Service VarGroups and Dependency VarGroups which are created at the same time a Dependency is created.