Skip to content

Instantly share code, notes, and snippets.

@carlosgrillet
Created June 29, 2025 17:16
Show Gist options
  • Select an option

  • Save carlosgrillet/fda68751a9d070d73c5dffa44df9ee16 to your computer and use it in GitHub Desktop.

Select an option

Save carlosgrillet/fda68751a9d070d73c5dffa44df9ee16 to your computer and use it in GitHub Desktop.
These are the manual steps you can follow to create a kubernetes control-plane configuration manually using kubeadm.

1. Generate Certificates

# Generate all certificates at once  
kubeadm init phase certs all  
  
# Or generate them individually:  
kubeadm init phase certs ca                        # Root CA  
kubeadm init phase certs apiserver                 # API server certificate  
kubeadm init phase certs apiserver-kubelet-client  # API server to kubelet client cert  
kubeadm init phase certs front-proxy-ca            # Front proxy CA  
kubeadm init phase certs front-proxy-client        # Front proxy client cert  
kubeadm init phase certs etcd-ca                   # etcd CA (if using local etcd)  
kubeadm init phase certs etcd-server               # etcd server cert  
kubeadm init phase certs etcd-peer                 # etcd peer cert  
kubeadm init phase certs etcd-healthcheck-client   # etcd healthcheck client  
kubeadm init phase certs apiserver-etcd-client     # API server to etcd client cert  
kubeadm init phase certs sa                        # Service account key pair

External CA Mode Commands

For external CA scenarios, kubeadm provides CSR generation

kubeadm certs generate-csr --kubeconfig-dir /etc/kubernetes --cert-dir /etc/kubernetes/pki

2. Generate Kubeconfigs

# Generate all kubeconfig files  
kubeadm init phase kubeconfig all  
  
# Or generate them individually:  
kubeadm init phase kubeconfig admin               # Admin kubeconfig  
kubeadm init phase kubeconfig kubelet             # Kubelet kubeconfig    
kubeadm init phase kubeconfig controller-manager  # Controller manager kubeconfig  
kubeadm init phase kubeconfig scheduler           # Scheduler kubeconfig
Control Plane Component Commands

3. Generate All Static Pods Manifests

# Generate all at once
kubeadm init phase control-plane all  
  
# Or generate them individually:  
kubeadm init phase control-plane apiserver           # API server manifest  
kubeadm init phase control-plane controller-manager  # Controller manager manifest  
kubeadm init phase control-plane scheduler           # Scheduler manifest

4. etcd Setup Commands

# Generate etcd static pod manifest (for local etcd)  
kubeadm init phase etcd local

5. Node and Cluster Setup Commands

# Configure kubelet  
kubeadm init phase kubelet-start

6. Upload the kubeadm and kubelet configuration to a ConfigMap

# Upload all at once
kubeadm init phase upload-config all

# Or one by one
kubeadm init phase upload-config kubeadm      # Upload kubeadm config  
kubeadm init phase upload-config kubelet      # Upload kubelet config

7. Upload certificates (for HA clusters)

kubeadm init phase upload-certs

8. Create Bootstrap Tokens

kubeadm init phase bootstrap-token

9. Addon Installation Commands (optional)

# Install all addons  
kubeadm init phase addon all
  
# Or install them individually:  
kubeadm init phase addon coredns             # CoreDNS addon  
kubeadm init phase addon kube-proxy          # kube-proxy addon
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment