Desplegar una máquina en Azure con Terraform e instalar k3s

  • Imagen de redactor Daniel J. Saldaña
  • 21 de julio de 2024
Desplegar una máquina en Azure con Terraform e instalar k3s

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:

Terminal window
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:

  1. 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).

  2. variables.tf: Define las variables necesarias para personalizar el despliegue (nombres, ubicaciones, tamaños, claves SSH, etc.).

  3. outputs.tf: Define los outputs que Terraform mostrará al finalizar la ejecución (dirección IP pública de la máquina virtual).

  4. 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:

  1. Inicializa Terraform:

    Terminal window
    terraform init
  2. Previsualiza el plan de ejecución:

    Terminal window
    terraform plan
  3. Aplica 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:

Terminal window
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: v1
clusters:
- 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:

Terminal window
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:

  1. Detener k3s:

    Terminal window
    sudo systemctl stop k3s
  2. Editar 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>'
  3. 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!

¡Suscríbete y recibe actualizaciones sobre tecnología, diseño, productividad, programación y mucho más!
0
0