πŸ’€ KubeNidra
☸️ KubeNidra Helm Charts

Installation

This guide walks you through installing KubeNidra using Helm charts in your Kubernetes cluster.

Prerequisites

Before installing KubeNidra, ensure you have:

  • Kubernetes Cluster: Version 1.19+ with RBAC enabled
  • Helm: Version 3.0+ installed and configured
  • kubectl: Configured to communicate with your cluster
  • Ingress Controller: If you plan to use ingress (nginx, traefik, etc.)
  • Prometheus: For metrics collection (optional but recommended)

Quick Installation

1. Add the Helm Repository

helm repo add kubenidra https://kulbirsaini.github.io/kubenidra
helm repo update

2. Install with Default Values

helm install kubenidra kubenidra/kubenidra \
  --namespace kubenidra \
  --create-namespace

3. Verify Installation

# Check all resources
kubectl get all -n kubenidra

# Check pods status
kubectl get pods -n kubenidra

# Check services
kubectl get svc -n kubenidra

Custom Installation

1. Download and Customize Values

# Download the default values
helm show values kubenidra/kubenidra > my-values.yaml

# Edit the values file
vim my-values.yaml

2. Install with Custom Values

helm install kubenidra kubenidra/kubenidra \
  --namespace kubenidra \
  --create-namespace \
  -f my-values.yaml

Component-Specific Installation

Install Only Specific Components

You can enable/disable components by modifying the values:

# values.yaml
agent:
  enabled: true

api:
  enabled: true

cli:
  enabled: false # Disable CLI

manager:
  enabled: true

Install with Custom Images

# values.yaml
agent:
  image:
    repository: your-registry/kubenidra-agent
    tag: v1.0.0

api:
  image:
    repository: your-registry/kubenidra-api
    tag: v1.0.0

Post-Installation Steps

1. Configure Ingress (if enabled)

Ensure your ingress controller is properly configured and can reach the KubeNidra services.

2. Set Up Authentication

The API component will automatically generate JWT signing keys. For production, consider providing your own:

api:
  secret:
    enabled: true
    signingKey: "your-base64-encoded-key"

3. Configure Prometheus Integration

If using Prometheus, update the agent configuration:

agent:
  config:
    prometheus:
      endpoint: "http://your-prometheus:9090"

Verification

Check Component Status

# Check deployments
kubectl get deployments -n kubenidra

# Check services
kubectl get svc -n kubenidra

# Check ingress
kubectl get ingress -n kubenidra

# Check RBAC
kubectl get clusterrole,clusterrolebinding -l app.kubernetes.io/name=kubenidra

Test API Access

# Port forward to API service
kubectl port-forward -n kubenidra svc/kubenidra-api-svc 1881:1881

# Test API endpoint
curl http://localhost:1881/healthz

Test Manager UI

# Port forward to manager service
kubectl port-forward -n kubenidra svc/kubenidra-manager-svc 8080:80

# Open browser to http://localhost:8080

Troubleshooting

Common Issues

  1. Image Pull Errors: Ensure your cluster has access to the container registry
  2. RBAC Issues: Verify that RBAC is enabled and service accounts are created
  3. Ingress Not Working: Check ingress controller configuration and hostnames
  4. Resource Limits: Adjust resource requests/limits if pods are failing to start

Debug Commands

# Check pod logs
kubectl logs -n kubenidra deployment/kubenidra-agent
kubectl logs -n kubenidra deployment/kubenidra-api

# Check events
kubectl get events -n kubenidra --sort-by='.lastTimestamp'

# Check configmaps
kubectl describe configmap -n kubenidra

Uninstallation

To remove KubeNidra:

helm uninstall kubenidra -n kubenidra

# Remove the namespace (optional)
kubectl delete namespace kubenidra

Note: This will remove all KubeNidra resources. Workload hibernation states will be preserved in the cluster.