Add a stack

Motivation

If your company or clients have multiple similar setups or reference architectures, it could make sense to make them easily available to all employees or clients. In the custom defined stack all product versions are pinned as well, so you can easily spin up a stack containing the exact same versions as your production setup. You can use your defined stack to give it to colleagues or potential customers to show the overall architecture of the Data Platform you’re going to build.

Please keep in mind that a stack requires a release to run on. In the most cases the stackable provided release should work absolutely fine, but you can also have a look at the chapter Add a release on how to create your own release.

1. Create a stacks.yaml

For a custom stack you need to create a mycorp-stacks.yaml containing stacks according to the format defined by the Stackable provided stacks.

As of writing a stacks.yaml file could look as follows:

stacks:
   mycorp-warehouse:
    description: Internal stack we use to build our warehouses
    stackableRelease: 22.09 # or use your custom release mycorp-release1
    labels:
      - mycorp
      - warehouse
    manifests:
      # We have Superset in out Stack, which needs a postgressql instance
      # So let's install that first
      - helmChart: &template-postgresql-superset
        releaseName: postgresql-superset
        name: postgresql
        repo:
            name: bitnami
            url: https://charts.bitnami.com/bitnami/
        version: 11.0.0
        options:
            auth:
            username: superset
            password: superset
            database: superset
      - plainYaml: https://my.corp/stacks/mycorp-warehouse/trino.yaml
      - plainYaml: https://my.corp/stacks/mycorp-warehouse/superset.yaml

2. Add stacks.yaml to stackablectl invocation

After creating the mycorp-stacks.yaml file it can be added to the available stacks in stackablectl via the CLI argument --additional-stacks-file mycorp-stacks.yaml.

The argument to --additional-stacks-file can be either a path to a file on the local filesystem or an URL. By using an URL the stacks file can be put into a central Git repository and referenced by all teams or clients. Multiple --additional-stacks-file flags can be specified to include multiple stacks files.

Every additional stack will be added to the already existing stacks in stackablectl, so all the available stacks files will be merged.

Working with feature branches