stackablectl stack

A stack is a collection of ready-to-use Stackable data products as well as required third-party services like Postgresql or MinIO. It is tied to a specific release of the Stackable data platform, which will provide the required operators for the stack.

General Usage

Interact with stacks, which are ready-to-use product combinations

Usage: stackablectl stack [OPTIONS] <COMMAND>

Commands:
  list      List available stacks
  describe  Describe a specific stack
  install   Install a specific stack
  help      Print this message or the help of the given subcommand(s)

Options:
  -l, --log-level <LOG_LEVEL>
          Log level this application uses

      --no-cache
          Do not cache the remote (default) demo, stack and release files

          Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually
          '$HOME/.cache/stackablectl' when not explicitly set.

      --release <RELEASE>
          Target a specific Stackable release

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

File options:
  -d, --demo-file <DEMO_FILE>
          Provide one or more additional (custom) demo file(s)

          Demos are loaded in the following order: Remote (default) demo file, custom
          demo files provided via the 'STACKABLE_DEMO_FILES' environment variable, and
          lastly demo files provided via the '-d/--demo-file' argument(s). If there are
          demos with the same name, the last demo definition will be used.

          Use "stackablectl [OPTIONS] <COMMAND> -d path/to/demos1.yaml -d path/to/demos2.yaml"
          to provide multiple additional demo files.

  -s, --stack-file <STACK_FILE>
          Provide one or more additional (custom) stack file(s)

          Stacks are loaded in the following order: Remote (default) stack file, custom
          stack files provided via the 'STACKABLE_STACK_FILES' environment variable, and
          lastly demo files provided via the '-s/--stack-file' argument(s). If there are
          stacks with the same name, the last stack definition will be used.

          Use "stackablectl [OPTIONS] <COMMAND> -s path/to/stacks1.yaml -s path/to/stacks2.yaml"
          to provide multiple additional stack files.

  -r, --release-file <RELEASE_FILE>
          Provide one or more additional (custom) release file(s)

          Releases are loaded in the following order: Remote (default) release file,
          custom release files provided via the 'STACKABLE_RELEASE_FILES' environment
          variable, and lastly release files provided via the '-r/--release-file'
          argument(s). If there are releases with the same name, the last release
          definition will be used.

          Use "stackablectl [OPTIONS] <COMMAND> -r path/to/releases1.yaml -r path/to/releases2.yaml"
          to provide multiple additional release files.

Helm repository options:
      --helm-repo-stable <URL>
          Provide a custom Helm stable repository URL

          [default: https://repo.stackable.tech/repository/helm-stable/]

      --helm-repo-test <URL>
          Provide a custom Helm test repository URL

          [default: https://repo.stackable.tech/repository/helm-test/]

      --helm-repo-dev <URL>
          Provide a custom Helm dev repository URL

          [default: https://repo.stackable.tech/repository/helm-dev/]

Listing Available Stacks

To list available stacks, use stackablectl stack list.

$ stackablectl stack list
┌────┬────────────────────────────────────┬─────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ #  ┆ STACK                              ┆ RELEASE ┆ DESCRIPTION                                                                                         │
╞════╪════════════════════════════════════╪═════════╪═════════════════════════════════════════════════════════════════════════════════════════════════════╡
│ 1  ┆ monitoring                         ┆ 23.7    ┆ Stack containing Prometheus and Grafana                                                             │
├╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2  ┆ ...                                ┆ ...     ┆ ...                                                                                                 │
├╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 13 ┆ openldap                           ┆ 23.7    ┆ An OpenLDAP instance with two users (alice:alice, bob:bob) and TLS enabled. The bind user           │
│    ┆                                    ┆         ┆ credentials are: ldapadmin:ldapadminpassword. The LDAP AuthenticationClass is called 'ldap' and the │
│    ┆                                    ┆         ┆ SecretClass for the bind credentials is called 'ldap-bind-credentials'. The stack already creates   │
│    ┆                                    ┆         ┆ an appropriate Secret, so referring to the 'ldap' AuthenticationClass in your ProductCluster should │
│    ┆                                    ┆         ┆ be enough.                                                                                          │
└────┴────────────────────────────────────┴─────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────┘

Detailed information of a stack can be queried with the stackableclt stack describe command.

$ stackablectl stack describe monitoring
 STACK        monitoring
 DESCRIPTION  Stack containing Prometheus and Grafana
 RELEASE      23.7
 OPERATORS    commons
 LABELS       monitoring, prometheus, grafana
 PARAMETERS   NAME                  DESCRIPTION                         DEFAULT VALUE
              grafanaAdminPassword  Password of the Grafana admin user  adminadmin

Installing a Stack

Using Existing Kubernetes Cluster

If you want to access a Kubernetes cluster, make sure your kubectl Kubernetes client is configured to interact with the Kubernetes cluster. After that run the following command:

$ stackablectl stack install logging
Installed stack logging

Use "stackablectl operator installed" to display the installed operators
Use "stackablectl stacklet list" to display the installed stacklets

Using Local Kind Cluster

If you don’t have a Kubernetes cluster available, stackablectl can spin up a kind Kubernetes cluster for you. Make sure you have kind installed and run the following command:

$ stackablectl stack install logging --cluster kind
Creating cluster "stackable-data-platform" ...
 ✓ Ensuring node image (kindest/node:v1.26.3) 🖼
 ✓ Preparing nodes 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-stackable-data-platform"
You can now use your cluster with:

kubectl cluster-info --context kind-stackable-data-platform

Have a nice day! 👋

Installed stack logging

Use "stackablectl operator installed" to display the installed operators
Use "stackablectl stacklet list" to display the installed stacklets