tf4k8s icon indicating copy to clipboard operation
tf4k8s copied to clipboard

Random experiments with Terraform and Kubernetes

Terraform for Kubernetes

An exploration into the use of Terraform to provision Kubernetes clusters on popular IaaS.

Vision

Launch a relatively comprehensive end-to-end demo environment for discussion purposes and/or hands-on workshops in under an hour.

Getting Started

Choose your own adventure on one of the following cloud providers

  • [x] Google Cloud Platform (GKE)
  • [x] Microsoft Azure (AKS)
  • [x] Amazon Web Service (EKS)
  • [x] VMWare Tanzu Kubernetes Grid
    • on AWS management and workload clusters
    • on Azure management and workload clusters
  • [x] VMWare Tanzu Kubernetes Grid Integrated

Or provision new / attach existing Kubernetes clusters via

  • [ ] VMWare Tanzu Mission Control

Current experiments

  • [x] Identity management
  • [x] Add DNS Zone management
  • [x] Add Certificate management
  • [x] Add Ingress and External DNS
  • [x] Install Sealed Secrets
  • [x] Install a registry like ACR, GCR, Harbor or JCR
  • [x] Install VMWare Tanzu Build Service
  • [x] Install cf-for-k8s
  • [x] Install VMWare Tanzu Application Service for Kubernetes
  • [x] Install Tanzu Services Manager
  • [x] Install Cloud Service Broker
  • [x] Install Kubeapps
  • [x] Install Stratos
  • [x] Install Loki Stack
  • [x] Install EFK Stack
  • [x] Integrate a cloud provider's blobstore or install Minio
  • [x] Integrate VMware Tanzu Observability
  • [x] Provision a distributed version control system with Gitea
  • [x] Enable continuous integration (and deployment) with Concourse or Jenkins
  • [x] Enable continuous deployment with Argo CD or Tekton
  • [x] Install edukates a set of custom resources used to deploy workshop training portals

Organization

Sub-directories of this repository contain

  • bom
    • Bill of materials; what do you need to get started?
  • experiments
    • Progressively build out a platform to deliver software delivery agility underpinned by Kubernetes
  • modules
    • Building blocks to be composed as you see fit
  • ytt-libs
    • YAML-based templates consumed by ytt then deployed with kapp

Roadmap

Above-mentioned experiments will evolve to include automating base configuration and installation of an additional complement of capabilities/components aimed at modeling a modern enterprise software factory / product delivery supply chain.

Cloud Foundry

Administration

  • [x] Stratos

Open Service Broker-compatible API servers

Provision your own collection of services

Provision managed services in a public cloud and bind them to applications

Service catalog

Deploy and manage application and services with ease through an administrative interface

Distributed Version Control

  • [x] Gitea
  • [ ] Gitlab

CI/CD

  • [x] Argo CD
  • [x] Jenkins
  • [ ] Gitlab
  • [x] VMWare Tanzu Build Service
  • [x] Concourse
  • [x] Tekton

Reference Pipelines

Logging/Monitoring/Metrics

  • [x] FluentBit
  • [x] Elasticsearch, Kibana
  • [x] Prometheus
  • [x] Grafana
  • [x] VMWare Tanzu Observability

Cluster/Policy Management

  • [ ] VMWare Tanzu Mission Control

Additional "building blocks" and maintenance

Services

Blob stores

  • [x] Minio
  • [x] Amazon S3
  • [x] Google Cloud Storage Bucket
  • [x] Azure Blob Storage

Stream Processing

  • [ ] Kafka
  • [x] RabbitMQ

Caching

  • [x] Gemfire
  • [ ] Redis

Databases

  • [ ] Mongo
  • [x] MySQL
  • [x] Postgres
Spring Cloud
  • [x] Gateway
  • [x] Configuration Service
  • [ ] Spring Cloud Dataflow