Design Platform

Overview

In this first part of the Kubestack tutorial you will:

  1. Decide on platform architecture and base configuration
  2. Scaffold your Terraform repository including a first cluster

Choose your architecture and base configuration

When scaffolding your platform there are two main decisions to take. First, what base_domain and name_prefix to use. And second, how many environments to bootstrap.

  1. base_domain and name_prefix

    • base_domain

      First, you have to select the base_domain to use for your platform. It will be part of the fully qualified domain name (FQDN) for each cluster. For the tutorial we use kubestack.example.com. You must replace example.com with a domain you control. The base_domain is a good option to brand your platform.

    • name_prefix

      You also have to choose a name_prefix for the first cluster. You can use the name prefix to designate a cluster to a specific type of workload, a single tenant or add some creativity to the names. Below examples, use gc0 as the name prefix. Where gc stands for general compute and 0 is there so you can add gc1 if you outgrow the capacity of a single cluster in a region.

  2. Environments

    By default kbst scaffolds a repository with two environments named ops and apps. Each environment will be a complete, separate copy of your entire platform and all its components.

    The ops environment is internal to the platform team, and is used to preview proposed changes and to validate them before they are promoted to apps. All platform users would run both non-prod and prod application enviroments in the external apps enviroment.

    If you prefer non-prod and prod application environments to be separated, the two most common approaches are to:

    • either have separate node pools for non-prod and prod attached to the cluster,
    • or add a third environment, e.g. named apps-prod, to run prod workloads on an entire third copy of your platform

    To have three environments add --environment-names apps-prod,apps,ops to the example commands below. Should you want to customize the environment names, order them from mission critial external environment, to internal environment.

Kubestack supports a large number of different platform architectures using different combinations of name prefixes and environments. The platform architecture documentation page explains use-cases and provides examples.

Initialize your repository

Now, use the CLI to initialize your Terraform code and repository. Select the tab for the cloud you want to start with.

You can easily add more clusters in different regions, on different cloud providers or both later. But for now pick one cloud and let's get started.

AmazonAzureGoogle

Alongside the base domain and name prefix, select a region to use for your fist EKS cluster.

# kbst init eks <base-domain> <name-prefix> <region>
kbst init eks kubestack.example.com gc0 eu-west-1
# Change into the starter directory
cd kubestack-starter-eks

Next

Let's continue the tutorial and provision the cloud infrastructure.