一键导入
kcli-cluster-deployment
// Guides deployment and management of Kubernetes clusters with kcli. Use when deploying OpenShift, k3s, kubeadm, or other Kubernetes distributions.
// Guides deployment and management of Kubernetes clusters with kcli. Use when deploying OpenShift, k3s, kubeadm, or other Kubernetes distributions.
Guides kcli configuration and provider setup. Use when setting up ~/.kcli/config.yml, configuring providers (KVM, AWS, GCP, Azure, etc.), or managing profiles.
Guides creation of kcli plan files for deploying VMs, networks, and infrastructure. Use when writing YAML plans with Jinja2 templating or debugging plan execution issues.
Guides implementation of new virtualization providers for kcli. Use when adding support for a new cloud platform, hypervisor, or infrastructure provider.
Comprehensive guide for kcli usage. Use when creating VMs, deploying plans, managing clusters, or performing any kcli operations. Covers all common user workflows.
Guides testing and code quality for kcli. Use when writing tests, running linting, or validating changes before committing.
Guides VM lifecycle operations with kcli. Use when creating, managing, or troubleshooting virtual machines across providers.
| name | kcli-cluster-deployment |
| description | Guides deployment and management of Kubernetes clusters with kcli. Use when deploying OpenShift, k3s, kubeadm, or other Kubernetes distributions. |
| 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/ |
# 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
kcli create kube openshift -P pull_secret=~/pull-secret.json mycluster
# 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_url: registry.local:5000
disconnected_user: admin
disconnected_password: password
ca: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
kcli create kube kubeadm -P domain=k8s.local -P ctlplanes=1 -P workers=2 myk8s
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
kcli create kube k3s -P ctlplanes=1 -P workers=2 myk3s
ctlplanes: 1
workers: 2
version: latest # k3s version
domain: k3s.local
image: ubuntu2204
kcli create kube rke2 -P ctlplanes=1 -P workers=2 myrke2
ctlplanes: 1
workers: 2
version: latest # RKE2 version
domain: rke2.local
image: ubuntu2204
kcli create kube hypershift \
-P pull_secret=~/pull-secret.json \
-P nodepool_replicas=2 \
myhypershift
pull_secret: ~/pull-secret.json
management_cluster: mgmt # Existing cluster name
nodepool_replicas: 2 # Worker node count
release_image: ... # Specific OCP release
kcli create kube microshift -P pull_secret=~/pull-secret.json mymicroshift
pull_secret: ~/pull-secret.json
version: latest # MicroShift version
image: rhel9 # RHEL-based image required
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)
# 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
# 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
api_ip is in the correct subnetsslip: truekcli -d create kube openshift mycluster # Verbose output
For cloud providers (AWS, GCP, Azure), kcli can:
cloud_lb: true)cloud_dns: true)cloud_storage: true)cloud_lb: true
cloud_dns: true
cloud_storage: true