okctl
is a CLI for creating a production environment on Amazon Web Services (AWS) using Elastic Kubernetes Service (EKS) as its foundation, we aim to be:
- Specialised: by tightly integrating with the services provided by Oslo kommune
- Highly opinionated: you will get something that works well that may not be exactly what you want
- Modern: base our decisions on best-practise methodologies for a modern development lifecycle
- Sensible: provide a set of sensible default integrations
Compare and contrast
With okctl
we are attempting to solve the production environment setup problem. What we include within the definition of a production environment, we can see below.
Functionality | okctl | eksctl | kubectl | serverless.tf |
---|---|---|---|---|
Provide authentication and authorisation | ✓ | ? | ||
Define a continuous integration pipeline | ? | |||
Assist with creating a deployment pipeline | ✓ | ✓ | ||
Create a Kubernetes cluster (run-time environment) | ✓ | ✓ | ||
Facilitate with application setup and integration | ✓ | ✓ | ✓ | |
Provide integrations with version control system | ✓ | |||
Setup monitoring with metrics, logs and traces | ✓ |
Functionality
The core cluster is up and running, and we are currently working on building a seamless experience on top of this cluster with integrations for common functionality:
Core cluster
- ExternalSecrets for storing secrets securely
- AWS Load Balancer Controller creates load balancers for incoming traffic
- ExternalDNS ensures humane DNS hostnames
- Autoscaler for adjusting the size of pods and nodes
- Argo CD gives us continuous delivery
- Kubernetes Prometheus for prometheus and grafana
- Amazon Elastic Block Store (EBS) CSI driver for block storage
- Loki for processing logs
- Tempo for processing traces
- Promtail for collecting logs
Application lifecycle
- Postgres for creating and integrating a postgres database with your application
- Amazon Elastic Container Registry for creating and assisting with the publication of container images for use in the cluster
- Reference application that demonstrates how to use the cluster and its integrations
Inspiration
We stand on the shoulders of giants, we have begged, borrowed and stolen from the following great products and teams: