Desplegar una máquina en Azure con Terraform e instalar k3s
Daniel J. Saldaña
- 21 de julio de 2024
- Puntuación de feedback
![Desplegar una máquina en Azure con Terraform e instalar k3s](/_vercel/image?url=%2Fimages%2Fposts%2Fdesplegar-una-maquina-en-azure-con-terraform-e-instalar-k3s.png&w=932&q=100)
En este post, te guiaremos paso a paso sobre cómo desplegar una máquina virtual en Azure utilizando Terraform y cómo instalar k3s en ella. Además, explicaremos cómo generar una clave RSA y actualizar el archivo terraform.tfvars
con esta información.
Generar la clave RSA
Para permitir la autenticación SSH en la máquina virtual, es necesario generar un par de claves RSA. Puedes hacerlo con el siguiente comando en tu terminal:
ssh-keygen -t rsa -b 4096 -C "tu-email@dominio.com"
Esto generará dos archivos:
~/.ssh/id_rsa
: la clave privada~/.ssh/id_rsa.pub
: la clave pública
Abre el archivo ~/.ssh/id_rsa.pub
y copia su contenido. Luego, pega esta clave pública en el archivo terraform.tfvars
bajo la variable ssh_public_key
.
Estructura de los archivos Terraform
A continuación, listamos los archivos necesarios para desplegar la infraestructura en Azure:
main.tf: Contiene la definición del proveedor de Azure y los recursos necesarios (grupo de recursos, red virtual, subred, grupo de seguridad, IP pública, interfaz de red, máquina virtual, cuenta de almacenamiento y extensión de máquina virtual).
variables.tf: Define las variables necesarias para personalizar el despliegue (nombres, ubicaciones, tamaños, claves SSH, etc.).
outputs.tf: Define los outputs que Terraform mostrará al finalizar la ejecución (dirección IP pública de la máquina virtual).
terraform.tfvars: Archivo donde se asignan los valores a las variables definidas en
variables.tf
.
Puedes encontrar estos archivos y la configuración completa en el siguiente repositorio de GitHub: Repositorio de código Terraform para k3s en Azure
Ejecución de Terraform
Una vez que hayas definido todos los archivos necesarios, sigue estos pasos para desplegar la infraestructura:
Inicializa Terraform:
Terminal window terraform initPrevisualiza el plan de ejecución:
Terminal window terraform planAplica el plan para crear la infraestructura:
Terminal window terraform apply
Conexión a la máquina virtual por SSH
Después de desplegar la máquina virtual, puedes conectarte a ella mediante SSH usando la dirección IP pública que se muestra al finalizar el proceso de Terraform.
Por ejemplo, si la dirección IP pública es 20.50.30.10
, utiliza el siguiente comando para conectarte:
ssh k3s@20.50.30.10 -i ~/.ssh/id_rsa
Archivo de configuración del cluster k3s
Una vez conectado, puedes encontrar el archivo de configuración del cluster en la siguiente ruta: /etc/rancher/k3s/k3s.yaml
. Este archivo contiene la configuración necesaria para interactuar con tu cluster k3s. Para asegurarte de que la configuración apunte correctamente a tu servidor, debes editar este archivo.
Abre el archivo y busca la línea que contiene server: https://127.0.0.1:6443
. Reemplaza 127.0.0.1
con la dirección IP pública de tu servidor. El resultado debería ser algo como:
apiVersion: v1clusters: - cluster: server: https://20.50.30.10:6443 certificate-authority-data: ...
Guarda los cambios y cierra el archivo. Ahora tu configuración del cluster estará actualizada con la dirección IP pública del servidor.
Copiar el archivo de configuración a tu máquina local
Para interactuar con el cluster k3s desde tu máquina local, necesitarás copiar el archivo de configuración k3s.yaml
a tu máquina. Puedes hacerlo usando scp
. Por ejemplo:
scp k3s@20.50.30.10:/etc/rancher/k3s/k3s.yaml ~/.kube/config
Este comando copiará el archivo de configuración del cluster a ~/.kube/config
en tu máquina local. Asegúrate de que el directorio .kube
exista en tu home directory.
Confirmación e instalación de k3s
Una vez que la máquina virtual esté desplegada, deberás instalar k3s. La configuración inicial de k3s se realizará utilizando una extensión de máquina virtual en el archivo main.tf
.
Opciones de configuración posterior
Opción 1: Regenerar certificados con IP pública
En algunos casos, puede que necesites regenerar los certificados de k3s para incluir la IP pública. Para ello, sigue estos pasos:
Detener k3s:
Terminal window sudo systemctl stop k3sEditar el archivo de configuración: Abre (o crea) el archivo
/etc/rancher/k3s/config.yaml
y añade lo siguiente:tls-san:- '10.0.0.4'- '10.43.0.1'- '127.0.0.1'- '::1'- '<tu-direccion-ip-publica>'Reiniciar k3s:
Terminal window sudo systemctl start k3s
Siguiendo estos pasos, habrás desplegado una máquina virtual en Azure con Terraform e instalado k3s en ella. La capacidad de regenerar certificados con la IP pública te permitirá asegurar que k3s funcione correctamente en diversas configuraciones de red. ¡Esperamos que esta guía te haya sido útil!