# k8s-pulse Helm Chart This Helm chart provides a production-ready Kubernetes deployment for **k8s-pulse**, a Python web application that visualizes cluster metrics and resource usage. ## Prerequisites - A running Kubernetes cluster (v1.19+ recommended). - [Helm v3](https://helm.sh/) installed. - (Optional) Metrics Server installed in your cluster for detailed container CPU & memory usage. ## Quick Start ### 1. Install the Chart To install the chart with default release name `k8s-pulse`: ```bash helm install k8s-pulse ./helm-chart ``` ### 2. Custom Configuration You can override default settings by passing a custom `values.yaml` file or using `--set`: ```bash helm install k8s-pulse ./helm-chart -f custom-values.yaml ``` Example: Enable Ingress and change image tag: ```bash helm install k8s-pulse ./helm-chart \ --set image.tag="1.0.0" \ --set ingress.enabled=true \ --set ingress.hosts[0].host="k8s-pulse.example.com" ``` ### 3. Upgrade the Release ```bash helm upgrade k8s-pulse ./helm-chart ``` ### 4. Uninstall ```bash helm uninstall k8s-pulse ``` ## Configuration Parameters | Parameter | Description | Default | |-----------|-------------|---------| | `replicaCount` | Number of application replicas | `1` | | `image.repository` | Docker image repository | `k8s-pulse` | | `image.tag` | Docker image tag | `latest` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `service.type` | Kubernetes service type | `ClusterIP` | | `service.port` | Service port exposed | `80` | | `service.targetPort` | Container application port | `5000` | | `rbac.create` | Create ClusterRole & ClusterRoleBinding for K8s API access | `true` | | `serviceAccount.create` | Create ServiceAccount for the deployment | `true` | | `serviceAccount.name` | Explicit ServiceAccount name | `""` | | `ingress.enabled` | Enable Ingress resource | `false` | | `resources` | Pod CPU/Memory resource limits & requests | `{ limits: { cpu: 200m, memory: 256Mi }, requests: { cpu: 100m, memory: 128Mi } }` | | `persistence.enabled` | Enable optional PersistentVolumeClaim | `false` | ## RBAC Requirements `k8s-pulse` requires read access to cluster nodes, pods, and `metrics.k8s.io` custom objects. By default, `rbac.create: true` creates a `ClusterRole` and `ClusterRoleBinding` bound to the pod's `ServiceAccount`. ## Verification Check the deployment status: ```bash kubectl get pods -l app.kubernetes.io/name=k8s-pulse kubectl get svc -l app.kubernetes.io/name=k8s-pulse ```