{{ template "chart.header" . }} {{ template "chart.description" . }} {{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }} ## 🚀 Overview The Dynamo Platform Helm chart deploys the complete Dynamo Kubernetes Platform infrastructure on Kubernetes, including: - **Dynamo Operator**: Kubernetes operator for managing Dynamo deployments - **NATS**: High-performance messaging system for component communication - **etcd**: Distributed key-value store for operator state management - **Grove**: Multi-node inference orchestration (optional) - **Kai Scheduler**: Advanced workload scheduling (optional) ## 📋 Prerequisites - Kubernetes cluster (v1.20+) - Helm 3.8+ - Sufficient cluster resources for your deployment scale - Container registry access (if using private images) ## ⚠️ Important: Cluster-Wide vs Namespace-Scoped Deployment ### Single Cluster-Wide Operator (Recommended) **By default, the Dynamo operator runs with cluster-wide permissions and should only be deployed ONCE per cluster.** - ✅ **Recommended**: Deploy one cluster-wide operator per cluster - ❌ **Not Recommended**: Multiple cluster-wide operators in the same cluster ### Multiple Namespace-Scoped Operators (Advanced) If you need multiple operator instances (e.g., for multi-tenancy), use namespace-scoped deployment: ```yaml # values.yaml dynamo-operator: namespaceRestriction: enabled: true targetNamespace: "my-tenant-namespace" # Optional, defaults to release namespace ``` ### Validation and Safety The chart includes built-in validation to prevent all operator conflicts: - **Automatic Detection**: Scans for existing operators (both cluster-wide and namespace-restricted) during installation - **Prevents Multiple Cluster-Wide**: Installation will fail if another cluster-wide operator exists - **Prevents Mixed Deployments (Type 1)**: Installation will fail if trying to install namespace-restricted operator when cluster-wide exists - **Prevents Mixed Deployments (Type 2)**: Installation will fail if trying to install cluster-wide operator when namespace-restricted operators exist - **Safe Defaults**: Leader election uses shared ID for proper coordination #### 🚫 **Blocked Conflict Scenarios** | Existing Operator | New Operator | Status | Reason | |-------------------|--------------|---------|--------| | None | Cluster-wide | ✅ **Allowed** | No conflicts | | None | Namespace-restricted | ✅ **Allowed** | No conflicts | | Cluster-wide | Cluster-wide | ❌ **Blocked** | Multiple cluster managers | | Cluster-wide | Namespace-restricted | ❌ **Blocked** | Cluster-wide already manages target namespace | | Namespace-restricted | Cluster-wide | ❌ **Blocked** | Would conflict with existing namespace operators | | Namespace-restricted A | Namespace-restricted B (diff ns) | ✅ **Allowed** | Different scopes | ## 🔧 Configuration {{ template "chart.requirementsSection" . }} {{ template "chart.valuesSection" . }} ### NATS Configuration For detailed NATS configuration options beyond `nats.enabled`, please refer to the official NATS Helm chart documentation: **[NATS Helm Chart Documentation](https://github.com/nats-io/k8s/tree/main/helm/charts/nats)** ### etcd Configuration For detailed etcd configuration options beyond `etcd.enabled`, please refer to the official Bitnami etcd Helm chart documentation: **[etcd Helm Chart Documentation](https://github.com/bitnami/charts/tree/main/bitnami/etcd)** ## 📚 Additional Resources - [Dynamo Cloud Deployment Installation Guide](../../../../docs/pages/kubernetes/installation-guide.md) - [NATS Documentation](https://docs.nats.io/) - [etcd Documentation](https://etcd.io/docs/) - [Kubernetes Operator Pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) {{ template "helm-docs.versionFooter" . }}