Skip to content

Nebulous Installation

kubefirst/nebulous is our container that installs the kubefirst platform. It's source code is here. This section will walk you through the installation and teardown proess. It's a really awesome platform to work in. We hope you love it and contribute.

AWS Prerequesites

For your AWS cloud resources to provision we have a few hard requirements:

  1. an AWS account with billing enabled

  2. an established publicly routable hosted zone with dns (docs)

  3. a supporting region for Amazon EKS (docs)

  4. AWS access keys with AdministratorAccess for interaction with your aws account (docs)

Step 1 - Create a nebulous execution directory

The nebulous provisioning process will produce state files and git content.

When we run the nebulous container we'll be mounting a volume to share this stateful content with your localhost so you don't lose it.

The following will make a nebulous directory in your home, with a git subdirectory for the volume mount.

mkdir -p ~/nebulous/git
cd ~/nebulous

This folder doesn't have to be in your home directory, but our docs will refer to it being there, adjust your commands accordingly.

This nebulous directory that we cd into will be your terminal's working directory for the rest of these instructions.

Step 2 - Establish An Env File

In the nebulous directory, we need to establish a kubefirst.env configuration file with the following content:

###############################
# Access settings
# The AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are your credentials to 
# log into your AWS account, you can often find these in ~/.aws/credentials
# The AWS_DEFAULT_REGION is the aws region that your new infrastructure will provision in - 
# The AWS_HOSTED_ZONE_NAME is the domain name associated with your prerequesite hosted zone in route53 - it should look similar to yourdomain.com with no www. prefix and no . suffix

AWS_ACCESS_KEY_ID=YOUR_ADMIN_AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=YOUR_ADMIN_AWS_SECRET_ACCESS_KEY
AWS_HOSTED_ZONE_NAME=yourdomain.com
AWS_DEFAULT_REGION=us-east-2


###############################
# Users:
# The BUCKET_RAND needs to be set and uncommented before destroy, see the teardown 
# docs for details.
# 
# Contributors: 
# The BUCKET_RAND has implications on bucket reuse when iterating
# once you successfully get past base terraform apply, 
# take the random suffix that was generated, apply it to the 
# next line, and start reusing the bucket for subsequent runs.
# if you don't set this value on subsequent runs, it will keep 
# generating new buckets for you. You can find this value in the 
# nebulous execution output.

# BUCKET_RAND=abc123


###################
# Admin settings
# The EMAIL_ADDRESS is used for the ssh key that's generated and for certificate expiration notifications
# The GITLAB_BOT_ROOT_PASSWORD is the password to use for the gitlab root user, change this to a value only you know
EMAIL_ADDRESS=YOUR_EMAIL_ADDRESS@yourdomain.com
GITLAB_BOT_ROOT_PASSWORD=123456ABCDEF!

Step 3 - Reality Check

# your nebulous working directory should be similar to this 
nebulous
├── git
├── kubefirst.env

Step 4 - Provision All The Things!!!

While in the nebulous directory we are going to execute the following comand:

docker run -it --env-file=kubefirst.env -v $PWD/git:/git --entrypoint /scripts/nebulous/init.sh kubefirst/nebulous:1.6.2