Skip to content

Latest commit

 

History

History
127 lines (100 loc) · 7.63 KB

File metadata and controls

127 lines (100 loc) · 7.63 KB

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

management:stackablectl:partial$commands/stack.adoc

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

Uninstalling a Stack

To uninstall a stack, you can run the following command, specifying the namespace the stack was installed in.

$ stackablectl stack uninstall logging -n <NAMESPACE>
Note

The uninstall command deletes the namespace the stack was installed in. Therefore it is not possible to uninstall stacks in the default namespace.

Warning

Currently, some resources deployed by the stack are either still lingering after the deletion process or need to be deleted before running the uninstall command.

  • All stacks

    • MutatingWebhookConfiguration restarter-sts-enricher.stackable.tech is not deleted

  • argo-cd-git-ops, hdfs-hbase, jupyterhub-pyspark-hdfs

    • ClusterroleBinding hdfs-clusterrolebinding-nodes is not deleted

  • argo-cd-git-ops

    • Delete the ArgoCD Applications airflow, airflow-postgres, minio, and sealed-secrets

    • Then you can delete the namespaces stackable-airflow, minio, and sealed-secrets

    • Delete the ArgoCD ApplicationSet stackable-operators and wait for ArgoCD to delete the Applications of that ApplicationSet

    • Only after deleting the above, run the stackablectl stack uninstall command, otherwise the deletion might get stuck

    • *.argoproj.io CRDs and sealedsecrets.bitnami.com CRD are not deleted

  • monitoring

    • *.monitoring.coreos.com CRDs are not deleted

  • observability

    • Delete OpenTelemetryCollector otel-collector-grpc-external and otel-collector-grpc

    • Only after deleting the above, run the stackablectl stack uninstall command, otherwise the deletion might get stuck