Updated by Rick Richardson
Components, Templates and Stacks (oh my!)
Agile Stacks aims to drastically optimize infrastructure provisioning, as well as everyday developer workflows, with the concept of a Stack. Stacks are defined by Templates and bundle up any number of Components for deployment. In this article, we'll cover each in detail, then show you where to find find tutorials and in-depth information regarding each.
A component is any package that is deploy-able into Kubernetes or surrounding ecosystem that has be specially adapted to work with the Agile Stacks SuperHub.
Components come in two broad categories: There are Standard Components are 3rd party packages that have been curated and configured by Agile Stacks' engineers. In addition, we also support Custom Components, which are created by you, the customer, and are private to your organization (unless you opt to publish the component to everyone)
When creating a Stack Template, you can select from the menu offered in the SuperHub UI.
A Stack Template represents the raison d'etre of Agile Stacks. In our view of infrastructure management, it is the primary unit of deployment. A Stack Template is a bundling of all chosen components that can be deployed in a reproducible manner.
A Stack template can be created either in the SuperHub UI (as pictured above), or in a POSIX shell using the hub CLI tool.
Stack Templates come in two flavors: Platform and Overlay. Platform stacks form the basis of the Kubernetes implementation. In general, to deploy a Platform stack is to deploy an entirely new kubernetes cluster in your environment of choice. An Overlay stack is similar, but it is meant to deploy onto an existing Cluster, instead of constructing a new one.
An example of an overlay stack might be a "Caching" stack, which bundles up Nginx and Memcached and configures them to integrate with each other and the other services that are already provided in your environment.
An example of a Platform stack might be the Integration Test environment for your product. It is meant to be spun up from scratch, and it contains everything your applications need to run. After completing the tests, the cluster could be destroyed. The power of platform stacks is that help fully eliminate pets in an infrastructure. Create clusters when you need them, destroy them when you're done.
Stack (or Cluster)
A Stack, or cluster, is an instantiation of a Stack Template is a Stack Instance. If the Stack Template was a platform stack, then the instance will be a wholly new cluster. If the Stack Template was an Overlay, then it will live within an existing cluster. This is reflected in the UI: