Skip to content

CLI Commands Reference

Common command-line operations for kMetal.

Platform Management

Helm

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

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

# Status
helm status kmetal -n kmetal-flux
helm history kmetal -n kmetal-flux
helm get values kmetal -n kmetal-flux
helm get manifest kmetal -n kmetal-flux

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

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-flux

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 -n kmetal-flux > helm-status.txt
helm history kmetal -n kmetal-flux > helm-history.txt
helm get manifest kmetal -n kmetal-flux > 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