Skip to content

CLI Commands Reference

Common command-line operations for kMetal.

Platform Management

Helm

# Install
helm install kmetal-operator oci://ghcr.io/clastix/charts/kmetal-operator \
  --namespace kmetal-operator-system --create-namespace --values values.yaml

# Upgrade
helm upgrade kmetal-operator oci://ghcr.io/clastix/charts/kmetal-operator \
  --namespace kmetal-operator-system --values values.yaml

# Status
helm status kmetal-operator -n kmetal-operator-system
helm history kmetal-operator -n kmetal-operator-system
helm get values kmetal-operator -n kmetal-operator-system
helm get manifest kmetal-operator -n kmetal-operator-system

# Rollback to a previous revision
helm rollback kmetal-operator <revision> -n kmetal-operator-system

Registry

helm registry login ghcr.io -u <username> -p <token>

kubectl create secret docker-registry clastix-ghcr \
  --docker-server=ghcr.io \
  --docker-username=<username> \
  --docker-password=<token> \
  --namespace=kmetal-operator-system

Component Operations

Kamaji

# List tenant control planes
kubectl get tenantcontrolplane -A

# Status
kubectl describe tenantcontrolplane <name> -n <tenant-namespace>

# Pods belonging to a specific TCP
kubectl get pods -n kmetal-kamaji -l kamaji.clastix.io/name=<name>

# Controller logs
kubectl logs -n kmetal-kamaji -l app.kubernetes.io/name=kamaji --tail=200

Cert-manager

kubectl get certificates -A
kubectl describe certificate <name> -n <namespace>

# Force renewal of a specific certificate (cmctl)
cmctl renew <name> -n <namespace>

MetalLB

kubectl get pods -n kmetal-metallb
kubectl get ipaddresspool -n kmetal-metallb
kubectl get l2advertisement -n kmetal-metallb
kubectl get svc -A --field-selector spec.type=LoadBalancer

KubeVirt / CDI

kubectl get kubevirt -n system-kubevirt
kubectl get pods -n system-kubevirt
kubectl get pods -n system-cdi
kubectl get datavolumes -A

Cluster API

kubectl get clusters -A
kubectl get machines -A
kubectl get machinedeployments -A
kubectl scale machinedeployment <name> -n <namespace> --replicas=5

# Provider pods
kubectl get pods -n kmetal-capi-providers
kubectl logs -n kmetal-capi-providers -l control-plane=controller-manager --tail=200

Troubleshooting

# Anything not Running / Completed
kubectl get pods -A | grep -v Running | grep -v Completed

# Recent warning events
kubectl get events -A --field-selector type=Warning --sort-by='.lastTimestamp' | tail -20

# Resource usage
kubectl top nodes
kubectl top pods -A --sort-by=cpu | head -20

Diagnostics dump

helm status kmetal-operator -n kmetal-operator-system > helm-status.txt
helm history kmetal-operator -n kmetal-operator-system > helm-history.txt
helm get manifest kmetal-operator -n kmetal-operator-system > rendered.yaml

kubectl get pods -A > all-pods.txt
kubectl get events -A --sort-by='.lastTimestamp' > events.txt

kubectl logs -n kmetal-kamaji -l app.kubernetes.io/name=kamaji --tail=500 > kamaji.log
kubectl logs -n kmetal-capi-providers -l control-plane=controller-manager --tail=500 > capi.log