Deploying Infrastructure

This section is only for System Administrators and Superheros

Note that only a single backend can be deployed from the same directory. Destroying the current backend or switching directories is required to build a second backend.

Requirements

kaos is cloud agnostic, meaning it can be deployed in all major cloud providers. The following sections highlight the required ENV by cloud.

export KAOS_HOME="<path/to/local/cloned/kaos>"

Note that ENVKAOS_HOME is required irrespective of cloud provider.

Infrastructure Backends

The current version of kaos supports both Local and Cloud deployments.

Deploying infrastructure (regardless of location) is completed with the same command - kaos build deploy. All available options are shown below.

Usage: kaos build deploy [OPTIONS]
Options:
-c, --cloud [DOCKER|MINIKUBE|AWS|GCP]
selected provider provider [required]
-e, --env [prod|stage|dev] selected infrastructure environment
-f, --force force building infrastructure
-v, --verbose verbose output
-y, --yes answer yes to any prompt
-l, --local_backend terraform will store backend locally, only
relevant for clouds
--help Show this message and exit.

Note that building the backend can be done in any folder assuming export of KAOS_HOME.

A successfully created running endpoint can be shared with Data Scientists for use in kaos init. See here for detailed instructions on how to share the endpoint.

Infrastructure Environments

kaos provides the ability to build multiple unique environments within a single infrastructure. The approach allows for independent cluster settings within the same infrastructure (i.e. to preserve data locality). For instance, it enables the System Admin or Superhero to build two different clusters for handling different computational needs (i.e. cpu vs. gpu). kaos supports the following three distinct environments:

  • Development (--env dev)

  • Staging (--env stage)

  • Production (--env prod)

There is no actual difference between deploying a prod vs. a dev cluster within kaos unless inputs are properly defined (via ENVs). They simply allow the creation of multiple unique environments within a single infrastructure.

Local infrastructure backends do not support environments!