Skip to content

Compute

Containers and Serverless

Overview

In order to serve Client application workloads we propose to implement Kubernetes, and proceed to containerize all application stacks whenever it’s the best solution (we’ll also consider AWS Lambda for a Serverless approach when it fits better). Kubernetes is an open source container orchestration platform that eases the process of running containers across many different machines, scaling up or down by adding or removing containers when demand changes and provides high availability features. Also, it serves as an abstraction layer that will give Client the possibility, with minimal effort, to move the apps to other Kubernetes clusters running elsewhere, or a managed Kubernetes service such as AWS EKS, GCP GKE or others.

Clusters will be provisioned with Kops and/or AWS EKS, which are solutions meant to orchestrate this compute engine in AWS. Whenever possible the initial version deployed will be the latest stable release.

leverage-k8s-architecture

Figure: Kubernetes high level components architecture. (Source: Andrew Martin, "11 Ways (Not) to Get Hacked", Kubernetes.io Blog post, accessed November 18th 2020).

Kubernetes addons

Some possible K8s addons could be

Security

  • IAM Authenticator

Networking

  • Kubernetes Nginx Ingress Controller
  • Linked2 (Service Mesh)

Monitoring & Logs

  • fluentd daemonset for elasticsearch logs
  • kube-state-metrics
  • prometheus node-exporter

Distributed Tracing

  • jaeger
  • opencensus

UI Dashboard

  • kube-ops-view
  • kubernetes-dashboard
  • weave-scope

Availability & Reliability

  • autoscaler
  • Velero (Backups)

Utilities

  • onetimesecret