{{ 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 service discovery (optional, disabled by default) - **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) - TLS certificate infrastructure for admission webhooks (auto-generated via Helm hooks by default, or [cert-manager](https://cert-manager.io/), or externally managed) ## 🔄 Upgrading Notes ### Webhooks are now mandatory (v1.0.0+) The `webhook.enabled` Helm value has been removed. Admission webhooks are now a required component of the operator and cannot be disabled. This change aligns with the upcoming addition of CRD conversion webhooks, which are mandatory for multi-version API support. No action is required for most upgrades — Helm hooks automatically generate TLS certificates and inject the CA bundle during `helm upgrade`. If you use cert-manager or externally managed certificates, ensure your existing configuration is correct before upgrading. --- ## ⚠️ 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 etcd is **no longer required** for the Dynamo platform. The operator uses Kubernetes-native service discovery by default, and the bundled etcd subchart is **disabled by default**. To enable the bundled etcd subchart (e.g., for etcd-based service discovery): ```yaml global: etcd: install: true ``` To use an external etcd instance instead: ```yaml dynamo-operator: etcdAddr: "http://my-external-etcd:2379" ``` For detailed etcd configuration options, 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/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" . }}