πŸ’€ KubeNidra
πŸ’» KubeNidra CLI

Configuration

The KubeNidra CLI uses Kubernetes configuration and supports various connection options. This guide covers all configuration aspects including kubeconfig setup, authentication, and command-line options.

Kubeconfig Configuration

The CLI uses the standard Kubernetes client configuration system.

Default Kubeconfig Location

# Default locations (in order of precedence)
~/.kube/config
$KUBECONFIG environment variable
--kubeconfig flag

Setting Kubeconfig

# Use specific kubeconfig file
kubenidra --kubeconfig /path/to/kubeconfig enable deployment my-app -n test

# Set via environment variable
export KUBECONFIG=/path/to/kubeconfig
kubenidra enable deployment my-app -n test

# Use short flag
kubenidra -k /path/to/kubeconfig enable deployment my-app -n test

Namespace Configuration

Explicit Namespace

# Specify namespace for each command
kubenidra -n development enable deployment my-app
kubenidra --namespace production status deployment my-app

Cross-Namespace Operations

# Work across multiple namespaces
kubenidra -n development enable deployment dev-app
kubenidra -n staging enable deployment staging-app
kubenidra -n production enable deployment prod-app

RBAC Requirements

The CLI requires specific permissions to manage workloads:

Minimum Required Permissions

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kubenidra-cli
rules:
  # Read workloads
  - apiGroups: ["apps"]
    resources: ["deployments", "statefulsets", "daemonsets", "replicasets"]
    verbs: ["get", "list", "watch"]

  # Update workloads (for annotations)
  - apiGroups: ["apps"]
    resources: ["deployments", "statefulsets", "daemonsets", "replicasets"]
    verbs: ["update", "patch"]

  # Read namespaces
  - apiGroups: [""]
    resources: ["namespaces"]
    verbs: ["get", "list"]

Testing Permissions

# Test if you can update deployments
kubectl auth can-i update deployments --namespace development

# Test if you can patch deployments
kubectl auth can-i patch deployments --namespace development

# Test if you can list deployments
kubectl auth can-i list deployments --namespace development

Command-Line Options

Global Flags

FlagShortTypeDefaultDescription
--kubeconfig-kstring~/.kube/configPath to kubeconfig file
--namespace-nstringKubernetes namespace

Command-Specific Flags

Enable Command

kubenidra enable <workload-type> <workload-name> -n <namespace>

Flags:
  -s, --schedule string   Wake schedule (e.g., '9:00-17:00,mon-fri')

Override Command

kubenidra override <workload-type> <workload-name> -n <namespace>

Flags:
  -d, --duration string   Override duration (e.g., '2h', '30m'). Permanent if not specified.

Schedule Command

kubenidra schedule <workload-type> <workload-name> -n <namespace>

Flags:
  -s, --schedule string   Wake schedule (e.g., '9:00-17:00,mon-fri') (required)