59 lines
No EOL
1.9 KiB
Bash
Executable file
59 lines
No EOL
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# Deploy a 3-node Kubernetes cluster on Proxmox using Debian 12
|
|
|
|
set -e
|
|
|
|
echo "=== Kubernetes Cluster Deployment Script ==="
|
|
echo "This will create a 3-node K8s cluster on your Proxmox servers"
|
|
echo
|
|
|
|
# Check if proxmox password is set
|
|
if [ -z "$PROXMOX_PASSWORD" ]; then
|
|
echo "Please set PROXMOX_PASSWORD environment variable"
|
|
echo "export PROXMOX_PASSWORD='your-proxmox-password'"
|
|
exit 1
|
|
fi
|
|
|
|
# Install required collections
|
|
echo "Installing Ansible collections..."
|
|
ansible-galaxy collection install -r requirements.yml
|
|
echo "Fixing deprecated imports in collections..."
|
|
./scripts/fix-deprecated-imports.sh
|
|
echo "Fixing deprecated imports in collections..."
|
|
./scripts/fix-deprecated-imports.sh
|
|
|
|
# Step 1: Create VM template
|
|
echo "Step 1: Creating Debian 12 cloud-init template on Proxmox..."
|
|
read -p "Do you want to create the VM template? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
ansible-playbook create-vm-template.yml -e proxmox_password="$PROXMOX_PASSWORD"
|
|
fi
|
|
|
|
# Step 2: Deploy K8s cluster
|
|
echo "Step 2: Deploying Kubernetes cluster..."
|
|
echo "This will:"
|
|
echo " - Create 3 VMs from the template"
|
|
echo " - Install containerd and Kubernetes"
|
|
echo " - Initialize the master node"
|
|
echo " - Join worker nodes to the cluster"
|
|
echo " - Install Flannel CNI and dashboard"
|
|
echo
|
|
|
|
read -p "Continue with deployment? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
ansible-playbook -i inventories/k8s-cluster/hosts k8s-cluster.yml \
|
|
-e proxmox_password="$PROXMOX_PASSWORD" \
|
|
-e vm_password="${K8S_VM_PASSWORD:-changeme}"
|
|
fi
|
|
|
|
echo
|
|
echo "=== Deployment Complete ==="
|
|
echo "To access your cluster from the master node:"
|
|
echo " ssh debian@10.0.19.200"
|
|
echo " kubectl get nodes"
|
|
echo
|
|
echo "To copy kubeconfig to your local machine:"
|
|
echo " scp debian@10.0.19.200:~/.kube/config ~/.kube/config-k8s"
|
|
echo " export KUBECONFIG=~/.kube/config-k8s" |