← Back to list

kcli-cluster-deployment
by karmab
Management tool for virtualization and kubernetes platforms
⭐ 610🍴 164📅 Jan 23, 2026
SKILL.md
name: kcli-cluster-deployment description: Guides deployment and management of Kubernetes clusters with kcli. Use when deploying OpenShift, k3s, kubeadm, or other Kubernetes distributions.
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 mycluster
OpenShift Deployment
Minimal Example
kcli create kube openshift -P pull_secret=~/pull-secret.json mycluster
Key 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 VIP
Disconnected/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 myk8s
Key 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 image
k3s Deployment
kcli create kube k3s -P ctlplanes=1 -P workers=2 myk3s
Key Parameters
ctlplanes: 1
workers: 2
version: latest # k3s version
domain: k3s.local
image: ubuntu2204
RKE2 Deployment
kcli create kube rke2 -P ctlplanes=1 -P workers=2 myrke2
Key Parameters
ctlplanes: 1
workers: 2
version: latest # RKE2 version
domain: rke2.local
image: ubuntu2204
HyperShift (Hosted Control Planes)
kcli create kube hypershift \
-P pull_secret=~/pull-secret.json \
-P nodepool_replicas=2 \
myhypershift
Key Parameters
pull_secret: ~/pull-secret.json
management_cluster: mgmt # Existing cluster name
nodepool_replicas: 2 # Worker node count
release_image: ... # Specific OCP release
MicroShift Deployment
kcli create kube microshift -P pull_secret=~/pull-secret.json mymicroshift
Key Parameters
pull_secret: ~/pull-secret.json
version: latest # MicroShift version
image: rhel9 # RHEL-based image required
Cluster 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 mycluster
Troubleshooting
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 -A
Common 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 output
Cloud 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: true
Score
Total Score
80/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
✓人気
GitHub Stars 500以上
+10
✓最近の活動
1ヶ月以内に更新
+10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
