🧩 Instalador K3s

Un instalador de K3s Kubernetes inteligente y automatizado para sistemas Linux (probado con Ubuntu). Este script detecta automáticamente su entorno de red (VPN, IP pública, FQDN), instala K3s con configuraciones seguras y configura su kubeconfig para uso inmediato.


📥 Instalación

Opción 1 — Descarga manual y ejecución

curl -fsSL https://eliasmeireles.com.br/tools/k8s/k3s-install.sh -o k3s-install.sh
chmod +x k3s-install.sh
./k3s-install.sh [opciones]

Opción 2 — Ejecutar directamente con curl | bash

curl -fsSL https://eliasmeireles.com.br/tools/k8s/k3s-install.sh | bash -s -- --cn my-cluster

🚀 Uso

El script admite múltiples opciones de personalización, aunque intenta detectar automáticamente la mayoría de las configuraciones:

./k3s-install.sh [--cn <nombre>] [--cip <ip>] [--vpn-if <iface>] [--pubip <ip>] [--cleanup] [--continue]

Opciones Disponibles

OpciónDescripciónPredeterminado
--cnEstablece el nombre del clúster (usado en el contexto kubeconfig).k8s-local
--cipEstablece la IP del Clúster (IP Interna/VPN).Auto-detectado (VPN > Hostname IP)
--vpn-ifEstablece el nombre de la interfaz VPN (ej. wt0, wg0).Auto-detectado
--pubipEstablece la IP Pública (para acceso externo).Auto-detectado (Amazon CheckIP > Route)
--pathEstablece el directorio de datos./mnt/data
--cleanupDesinstala K3s y limpia los directorios de datos.Opcional
--continueUsado con --cleanup para reinstalar inmediatamente después de limpiar.Opcional
--helpMuestra información de ayuda y uso.

⚙️ Ejemplos

1. Instalación Inteligente (Auto-detectar todo)

./k3s-install.sh

2. Nombre de Clúster Personalizado e Interfaz VPN Explícita

./k3s-install.sh --cn dev-cluster --vpn-if wg0

3. Limpiar Instalación Existente

./k3s-install.sh --cleanup

4. Limpiar y Reinstalar (Inicio Fresco)

./k3s-install.sh --cleanup --continue

🧩 Características

  1. Detección de Red:

    • Encuentra automáticamente interfaces VPN (WireGuard, NetBird, etc.) para vincular tráfico interno.
    • Detecta IP Pública para configuración de acceso externo (node-external-ip).
    • Detecta FQDN (vía NetBird o hostname).
  2. Configuración Segura:

    • Vincula el API Server y el Advertiser a la IP del Clúster/VPN.
    • Añade FQDN, IP Pública y Localhost a los SANs de TLS para conectividad segura.
  3. Configuración de Kubeconfig:

    • Copia y ajusta permisos automáticamente de ~/.kube/config.
    • Actualiza la URL del servidor para usar el FQDN para acceso remoto.
    • Establece el nombre del contexto para que coincida con su Nombre de Clúster.
  4. Verificación:

    • Espera a que el API server esté listo.
    • Verifica el estado del nodo.
    • Proporciona comandos para verificar la validez del certificado.

📋 Verificaciones Post-Instalación

Después de la instalación, verifique su clúster:

# Verificar nodos
kubectl get nodes -o wide

# Verificar certificado (desde máquina remota)
openssl s_client -connect <FQDN>:6443 2>/dev/null | openssl x509 -noout -text | grep DNS: