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