4.9 KiB
k8s-pulse Helm Chart Installation Guide
This guide provides instructions on installing k8s-pulse using Helm and configuring the kubeconfig secret to match the container setup in docker-compose.yml.
Prerequisites
- A running Kubernetes cluster (v1.19+ recommended).
- Helm v3+ installed.
- (Optional) Metrics Server installed in your cluster for detailed container CPU & memory usage.
Kubeconfig & Secret Setup
To mirror the docker-compose.yml setup where KUBECONFIG=/root/.kube/config is mounted into the container, the Helm chart mounts a Kubernetes Secret containing your kubeconfig file to /root/.kube/config and sets the KUBECONFIG environment variable.
You can configure and set up the kubeconfig secret using one of the following methods:
Method 1: Create a Kubernetes Secret manually with kubectl (Recommended)
-
Create a secret containing your
.kube/configfile:kubectl create secret generic k8s-pulse-kubeconfig --from-file=config=$HOME/.kube/config -
Install or upgrade the Helm chart specifying the existing secret:
helm install k8s-pulse ./helm-chart \ --set kubeconfig.enabled=true \ --set kubeconfig.secretName=k8s-pulse-kubeconfig
Method 2: Create the Secret via Helm using --set-file
You can have Helm create the Secret resource directly from your local kubeconfig file during installation:
helm install k8s-pulse ./helm-chart \
--set kubeconfig.enabled=true \
--set kubeconfig.createSecret=true \
--set-file kubeconfig.content=$HOME/.kube/config
Method 3: Use a custom values.yaml file
Create a custom values file (e.g. my-values.yaml):
kubeconfig:
enabled: true
createSecret: true
secretName: "k8s-pulse-kubeconfig"
secretKey: "config"
mountPath: "/root/.kube/config"
content: |
apiVersion: v1
clusters:
- cluster:
server: https://127.0.0.1:6443
name: my-cluster
...
Then install the chart using:
helm install k8s-pulse ./helm-chart -f my-values.yaml
Quick Start
1. Install the Chart
Default installation (uses kubeconfig.enabled=true with secret <release-name>-kubeconfig):
# 1. Create the secret
kubectl create secret generic k8s-pulse-kubeconfig --from-file=config=$HOME/.kube/config
# 2. Install the chart
helm install k8s-pulse ./helm-chart --set kubeconfig.secretName=k8s-pulse-kubeconfig
2. Custom Configuration
You can override default settings by passing a custom values.yaml file or using --set:
helm install k8s-pulse ./helm-chart -f custom-values.yaml
Example: Enable Ingress and change image tag:
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
helm upgrade k8s-pulse ./helm-chart
4. Uninstall
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 |
kubeconfig.enabled |
Enable mounting kubeconfig Secret and KUBECONFIG env var |
true |
kubeconfig.secretName |
Name of existing Secret containing kubeconfig file | "" (defaults to <release-fullname>-kubeconfig) |
kubeconfig.createSecret |
Create Secret resource via Helm from kubeconfig.content |
false |
kubeconfig.content |
Raw kubeconfig content when createSecret is true |
"" |
kubeconfig.secretKey |
Secret data key containing kubeconfig file content | "config" |
kubeconfig.mountPath |
Container path to mount kubeconfig file and set KUBECONFIG env |
"/root/.kube/config" |
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:
kubectl get pods -l app.kubernetes.io/name=k8s-pulse
kubectl get svc -l app.kubernetes.io/name=k8s-pulse