Deploying Cells in minikube
A Practical Guide for Testing and Evaluation using the new helm chart 1.0.0-beta
Introduction¶
This article walks you through deploying Pydio Cells v5 on a local Minikube cluster for testing or evaluation purposes.
Version 5 is accompanied by the new Helm chart 1.0.0-beta, which significantly improves modularity and flexibility.
Why a New Helm Chart?¶
Old Chart: 0.1.3¶
- Dependencies (MariaDB, MinIO, Redis, MongoDB...) were tightly coupled inside the chart.
- It relied heavily on Bitnami sub-charts.
- Hard to replace components, upgrade versions, or adapt to production environments.
New Chart: 1.0.0-beta¶
In the new helm chart, the integrated dependencies are still supported. However, in this tutorial, we focus to the deployment using external helm charts for dependencies.
| Service | Purpose | Deployment |
|---|---|---|
| MariaDB | Main SQL database | Bitnami chart |
| Redis | Cache / KV | Bitnami chart |
| MinIO | S3-compatible object storage | MinIO official chart |
| MongoDB | Metadata NoSQL store | MongoDB Community Operator |
| etcd | Service discovery | Official value file |
| NATS | Message broker | NATS official chart |
| Vault | Secret store | HashiCorp chart |
| cert-manager | Issue TLS certs for all components | Jetstack chart |
Prerequisites¶
- Helm – https://helm.sh/docs/intro/install/
- kubectl – https://kubernetes.io/docs/tasks/tools/
- Minikube – https://minikube.sigs.k8s.io/docs/start/
Repository Structure¶
Source: https://github.com/pydio/cells/tree/v5-dev/tools/kubernetes/examples/minikube
In the minikube/cells repository, the main values.yaml file of the Cells Helm chart is split into several smaller files. This approach simplifies maintenance, makes configuration easier to understand, and avoids dealing with one excessively large values.yaml file.
NOTICE: Following commands will be run from minikube directory
Installation Steps¶
Start minikube¶
CAUTION: The deployment may fail due to insufficient system resources, particularly when memory is limited.
Add Helm repositories¶
Create namespace¶
Install cert-manager (optional)¶
Shared secrets between cells and dependencies¶
Deploy dependencies¶
Deploy Pydio Cells v5¶
Access Cells¶
Then open: http://localhost:8080
Reset cells deployment¶
Some resources won't be deleted after helm uninstall cells -n cells. You should remove them manually before starting a new deployment
Removing old config persisted in etcd
We should purge the databases in sql, no-sql before starting a new cells deployment
Caveat¶
- Vault data is not peristed. The master key is lost after a k8s restart. In production, the deployment requires KMS service for vault unsealing process.
- 10 minutes session timeout/upload failure issue. You may have this issue when browsing the web page through a URL different from
ReverseProxyURLwhich is set incells/cells.yaml. - All dependencies run in "standalone" mode
- Cells operates with a single pod
- Connections between cells and dependencies are not using TLS
- Mariadb, Redis are deployed using bitnami helm chart with rolling-tag images.
- minio helm chart doesn't create standard users correctly. Currently, cells uses root account to connect to minio.
- minio storage size: 15GB