Kubernetes operator for managing WEKA clusters on Kubernetes.
The weka-operator automates the deployment and management of WEKA distributed storage clusters on Kubernetes. It provides:
- Automated WEKA cluster provisioning and lifecycle management
- Node discovery and container orchestration
- Drive management and cluster scaling
- CSI driver integration for persistent volumes
- Kubernetes cluster (v1.26+)
- Helm 3.x
- Container registry access (Quay.io or your own registry)
- WEKA license and credentials
Set image pull secret name if needed
export QUAY_USERNAME=<quay username>
export QUAY_PASSWORD=<quay password>
kubectl create namespace weka-operator-system
kubectl create secret docker-registry quay-io-robot-secret \
--docker-server=quay.io \
--docker-username=$QUAY_USERNAME \
--docker-password=$QUAY_PASSWORD \
--docker-email=$QUAY_USERNAME \
--namespace=weka-operator-system # operator will be scheduling some containers in own namespace
kubectl create secret docker-registry quay-io-robot-secret \
--docker-server=quay.io \
--docker-username=$QUAY_USERNAME \
--docker-password=$QUAY_PASSWORD \
--docker-email=$QUAY_USERNAME \
--namespace=default # wekacluster/wekaclient namespaces, that can be different from operator itself, each namespace needs a copy of secrethelm pull oci://quay.io/weka.io/helm/weka-operator --untar --version v1.9.1
kubectl apply -f weka-operator/crds
helm upgrade \
--install weka-operator oci://quay.io/weka.io/helm/weka-operator \
--namespace weka-operator-system \
--create-namespace --version v1.9.1Key configuration options in charts/weka-operator/values.yaml:
| Parameter | Description | Default |
|---|---|---|
imagePullSecret |
Image pull secret name | quay-io-robot-secret |
csi.installationEnabled |
Enable CSI driver | false |
See values for all configuration options.
See dagger for deploying the operator with Dagger.
go test ./...See doc/examples for YAML configurations including clusters, clients, drive sharing, and policies.
The operator api is defined in a separate api repository.
Any changes to the api requires updating the api submodule.
See LICENSE for details.