alphagov / govuk-kubernetes-discovery

Discovery spike into creating a Kubernetes cluster for GOV.UK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

govuk-kubernetes-discovery

This repository contains the results of a discovery into hosting/kubernetes as a container orchestration solution for GOV.UK.

This repository is a clean-clone of another (private) that contained various pieces of sensitive data which have been removed from this copy.

By the end of the discovery several approaches had been tested so not all of this repository is in a working state.

History

This project went through several stages:

  1. Initial discovery on Google Container Engine (GKE) using a manually deployed cluster. Used government-frontend as a test app.
  2. Work on templating kubernetes manifests (/govuk-k8s-deployment).
  3. GKE HTTP Load Balancer for ingress.
  4. Terraformed GKE cluster deployment.
  5. Database creation in Cloud SQL for the release app.
  6. Persistent Volume work for hosting Mongo in cluster to run content-store.
  7. Changed Terraform to build in AWS.
  8. Introduced kube-aws to build the cluster.
  9. AWS Application Load Balancer for ingress (with echoserver).

Documentation

ADR

We use Architecture Decision Records to keep a track of decisions we make across the course of this alpha. These can be found here.

Components

There is some information regarding different components of our architecture. These can be found here.

Google Cloud

The first part of our alpha we explored Google Cloud Platform. Some notes can be found here, and we also retain some Terraform files to build a fresh cluster.

Terraform

We are using Terraform to provision our infrastructure.

Please see the documentation for further details.

Kubernetes

A large part of our discovery is working with Kubernetes to deploy our applications as containers. Kubernetes provides the networking and deployment model for our container based environment.

Please see the documentation for more details.

We store our manifests here.

Kubernetes in AWS

We are using CoreOS for our deployment of a Kubernetes cluster.

To create and interact with a Kubernetes cluster provisioned in AWS, please see the documentation regarding kube-aws.

About

Discovery spike into creating a Kubernetes cluster for GOV.UK

License:MIT License


Languages

Language:HCL 72.7%Language:Ruby 21.5%Language:Shell 2.9%Language:HTML 2.8%