kcli-cluster-deployment
Skill658 starsChanged 13 days agoApache-2.0View on GitHub
Guides deployment and management of Kubernetes clusters with kcli. Use when deploying OpenShift, k3s, kubeadm, or other Kubernetes distributions.
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 209
API IP not reachable: Ensure api_ip is in the correct subnet
- Distinctive: line 210
Pull secret invalid: Verify JSON format and Red Hat subscription
- Distinctive: line 211
Insufficient resources: Check VM memory/CPU against requirements
- Very specific: line 212
DNS resolution: Ensure domain resolves or use sslip: true
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
kcli Cluster Deployment
Supported Cluster Types
| Type | Description | Module |
openshift | Red Hat OpenShift (IPI/UPI) | kvirt/cluster/openshift/ |
okd | Community OpenShift | Same as openshift |
hypershift | OpenShift Hosted Control Planes | kvirt/cluster/hypershift/ |
microshift | Lightweight edge OpenShift | kvirt/cluster/microshift/ |
generic | Generic Kubernetes (alias: kubernetes) | kvirt/cluster/kubernetes/ |
kubeadm | Standard Kubernetes via kubeadm | kvirt/cluster/kubeadm/ |
k3s | Lightweight Kubernetes | kvirt/cluster/k3s/ |
rke2 | Rancher Kubernetes Engine 2 | kvirt/cluster/rke2/ |
aks | Azure Kubernetes Service | kvirt/cluster/aks/ |
eks | Amazon Elastic Kubernetes | kvirt/cluster/eks/ |
gke | Google Kubernetes Engine | kvirt/cluster/gke/ |
Basic Cluster Commands
# Create cluster
kcli create kube <type> <clustername>
# Create with parameters
kcli create kube openshift -P ctlplanes=3 -P workers=2 mycluster
# List clusters
kcli list kube
# Get cluster info
kcli info kube mycluster
# Delete cluster
kcli delete kube mycluster
# Scale cluster
kcli scale kube <type> -P workers=5 mycluster
# Get kubeconfig
kcli get kubeconfig myclusterOpenShift Deployment
Minimal Example
kcli create kube openshift -P pull_secret=~/pull-secret.json myclusterKey Parameters
# Required
pull_secret: ~/pull-secret.json # Red Hat pull secret
domain: example.com # Base domain
# Topology
ctlplanes: 3 # Control plane nodes
workers: 2 # Worker nodes
version: stable # OpenShift version (stable, 4.14, etc.)
# Resources
ctlplane_memory: 16384 # Control plane memory (MB)
ctlplane_numcpus: 8 # Control plane CPUs
worker_memory: 8192 # Worker memory
worker_numcpus: 4 # Worker CPUs
# Networking
network: default # Libvirt network
api_ip: 192.168.122.253 # API VIP (auto-detected if omitted)
ingress_ip: 192.168.122.252 # Ingress VIPDisconnected/Air-gapped
disconnected_url: registry.local:5000
disconnected_user: admin
disconnected_password: password
ca: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----kubeadm Deployment
kcli create kube kubeadm -P domain=k8s.local -P ctlplanes=1 -P workers=2 myk8sKey Parameters
domain: k8s.local # Required domain
version: 1.29 # Kubernetes version
ctlplanes: 1 # Control planes (odd number for HA)
workers: 2 # Worker count
network: default # Network name
api_ip: 192.168.122.250 # API endpoint (for multi-ctlplane)
image: centos9stream # Base OS imagek3s Deployment
kcli create kube k3s -P ctlplanes=1 -P workers=2 myk3sKey Parameters
ctlplanes: 1
workers: 2
version: latest # k3s version
domain: k3s.local
image: ubuntu2204RKE2 Deployment
kcli create kube rke2 -P ctlplanes=1 -P workers=2 myrke2Key Parameters
ctlplanes: 1
workers: 2
version: latest # RKE2 version
domain: rke2.local
image: ubuntu2204HyperShift (Hosted Control Planes)
kcli create kube hypershift \
-P pull_secret=~/pull-secret.json \
-P nodepool_replicas=2 \
myhypershiftKey Parameters
pull_secret: ~/pull-secret.json
management_cluster: mgmt # Existing cluster name
nodepool_replicas: 2 # Worker node count
release_image: ... # Specific OCP releaseMicroShift Deployment
kcli create kube microshift -P pull_secret=~/pull-secret.json mymicroshiftKey Parameters
pull_secret: ~/pull-secret.json
version: latest # MicroShift version
image: rhel9 # RHEL-based image requiredCluster Directory Structure
Clusters store state in ~/.kcli/clusters/<clustername>/:
~/.kcli/clusters/mycluster/
├── kcli_parameters.yml # Stored parameters
├── kubeconfig # Cluster kubeconfig
├── auth/ # Auth credentials (OpenShift)
│ ├── kubeadmin-password
│ └── kubeconfig
└── (other cluster-specific files)Scaling Operations
# Scale workers
kcli scale kube openshift -P workers=5 mycluster
# Scale control planes (careful!)
kcli scale kube kubeadm -P ctlplanes=3 mycluster
# Add nodes with specific parameters
kcli scale kube openshift -P workers=3 -P worker_memory=16384 myclusterTroubleshooting
Check Deployment Progress
# OpenShift: watch bootstrap
kcli ssh mycluster-bootstrap
journalctl -f -u bootkube
# kubeadm: check cluster status
export KUBECONFIG=~/.kcli/clusters/mycluster/kubeconfig
kubectl get nodes
kubectl get pods -ACommon Issues
- API IP not reachable: Ensure
api_ipis in the correct subnet - Pull secret invalid: Verify JSON format and Red Hat subscription
- Insufficient resources: Check VM memory/CPU against requirements
- DNS resolution: Ensure domain resolves or use
sslip: true
Debug Mode
kcli -d create kube openshift mycluster # Verbose outputCloud Provider Notes
For cloud providers (AWS, GCP, Azure), kcli can:
- Auto-create load balancers (
cloud_lb: true) - Configure cloud DNS (
cloud_dns: true) - Set up cloud storage (
cloud_storage: true)
cloud_lb: true
cloud_dns: true
cloud_storage: trueIn this repository7 other files it gives its agents.
- kcli-configurationSkill
- kcli-ksushySkill
- kcli-plan-authoringSkill
- kcli-provider-developmentSkill
- kcliSkill
- kcli-testingSkill
- kcli-vm-operationsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

