Skip to main content

Elastic Kubernetes Service (EKS)

Rationale#

AWS EKS is the service we use for hosting our Kubernetes cluster in the cloud. It allows us to completely manage the system using a IaaS approach.

The main reasons why we chose it over other alternatives are:

  1. It seamlessly integrates with other AWS services, allowing us to easily integrate with EC2 for automatic worker provisioning, IAM for in-cluster authentication and authorization, Redis for In-VPC cache, and Elastic Load Balancing for serving applications.
  2. As all its infrastructure is cloud based, administering it becomes a much simpler task.
  3. It complies with several certifications from ISO and CSA. Many of these certifications are focused on granting that the entity follows best practices regarding secure cloud-based environments and information security.
  4. It is supported by almost all Kubernetes SIGs utilities.
  5. Clusters can be fully managed using Terraform.
  6. It is constantly updated to support new Kubernetes versions.
  7. It supports OIDC, allowing our Kubernetes cluster to perform actions within AWS like automatically creating load balancers when applications are deployed.

Alternatives#

  1. Google Kubernetes Engine (GKE): We tested it a few years ago. Google engineers are the creators of Kubernetes, and that is one of the main reasons why GCP offers a more complete service. Overall speaking, its GUI offered a lot more insights regarding nodes and pods, It also supported Terraform, configuring it was easier, and support for new versions was faster. The reason why we did not chose it was simple: We needed it to integrate with other cloud solutions that were already hosted in AWS. This is a clear example of cloud dependency.
  2. Azure Kubernetes Service (AKS): Pending to review.

Usage#

We use EKS for:

  1. Providing Networking infrastructure for our Kubernetes cluster.
  2. Automatically deploying worker groups.
  3. Connecting to IAM for in-cluster authentication and authorization.
  4. Connecting to EC2 for automatic worker provisioning.
  5. Connecting to Redis for In-VPC cache.

Guidelines#

  1. Follow the Kubernetes Guidelines if you want to use the cluster.
  2. Any changes to EKS infrastructure must be done via Merge Requests.
  3. To learn how to test and apply infrastructure via Terraform, visit the Terraform Guidelines.