CyVerse-Ansible.ansible_k3s

CyVerse Ansible k3s

Este rol creará un k3s independiente o un clúster.

Requisitos

Si se utiliza Docker con k3s, este rol dependerá de que Docker ya esté instalado o de un rol que lo proporcione.

Este rol configurará un firewall (ufw) y, por defecto, permitirá que todos los nodos dentro del clúster k3s se comuniquen entre sí.

Este rol hace suposiciones en sus archivos de hosts. A continuación se muestra un ejemplo de archivo de inventario con k3s_masters, k3s_agents y k3s_cluster definidos, que es la declaración mínima.

Nota: En este momento, solo se admite 1 maestro.

En formato .ini

[k3s_masters]
  w.x.y.z

[k3s_agents]
  a.b.c.d
  e.f.g.h

[k3s_cluster:children]
  k3s_masters
  k3s_agents

En formato yaml

all:
  hosts:
    k1:
      ansible_host: w.x.y.z
      ansible_user: root
    k2:
      ansible_host: a.b.c.d
      ansible_user: root
    k3:
      ansible_host: e.f.g.h
      ansible_user: root
  children:
    k3s_masters:
      hosts:
        k1:
    k3s_agents:
      hosts:
        k2:
        k3:
    k3s_cluster:
      children:
        k3s_masters:
        k3s_agents:

Variables del Rol

La siguiente tabla lista variables opcionales de ansible junto con los valores por defecto si no están definidas.

Nombre de la Variable Valor por defecto si no está definido Descripción
K3S_DOCKER_ENABLE version_dependent activa el motor de docker; si no se establece, será verdadero a menos que la versión del sistema operativo sea ubuntu2204 o más reciente
K3S_GPU_ENABLE false activa el controlador de gpu nvidia
K3S_GPU_TIMESLICE_ENABLE false si se habilita la gpu, esta configuración permitirá la división del tiempo
K3S_GPU_TIMESLICE_NUM 2 el valor por defecto para la división del tiempo es dos, si K3S_GPU_TIMESLICE_ENABLE
K3S_NVIDIA_USE_GPU_OPERATOR true por defecto se usa el operador de gpu de nvidia (si la gpu está habilitada)
K3S_NVIDIA_GPU_OPERATOR_DRIVER false usa el controlador en el contenedor (ver https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html)
K3S_NVIDIA_GPU_OPERATOR_TOOLKIT false usa el toolkit en el contenedor (ver https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html)
K3S_TRAEFIK_ENABLE false desactiva el ingreso traefik
K3s_FLANNEL_BACKEND none si se establece, pasará el valor a --flannel-backend=
K3S_CALICO_ENABLE (no funciona) false habilita calico
K3S_CLUSTER_TOKEN none si se establece, el clúster se inicializará con este token, en lugar de uno generado aleatoriamente
K3S_CLUSTER_CIDR none si se establece, CIDR para el clúster por ejemplo 192.168.0.0/16
K3S_VERSION none si se establece, intentará configurar la versión de k3s
K3S_IS_MULTINODE false si es verdadero, realizará una configuración adicional para preparar los hosts para multinodos (como el reenvío de IP)
K3S_MASTER_INSTALL true reinstalar nodo(s) maestro(s)
K3S_MASTER_IP none establece la IP de los maestros de k3s cuando ansible_default_ipv4 obtiene un valor incorrecto
K3S_MASTER_PORT 6443 puerto del nodo maestro
K3S_POSTGRESQL_ENABLE false habilita el uso de postgresql
K3S_POSTGRESQL_INSTALL false habilita la instalación de postgresql en el primer maestro de k3s; K3S_POSTGRESQL_ENABLE debe ser verdadero
K3S_POSTGRESQL_HOST 127.0.0.1 nombre de host o configuración de ip para la base de datos postgresql, desde la configuración del maestro de k3s
K3S_POSTGRESQL_PORT 5432 puerto para la base de datos postgresql
K3S_POSTGRESQL_DB kubernetes nombre de la base de datos postgres
K3S_POSTGRESQL_USER k3suser nombre de usuario de la base de datos K3S_POSTGRESQL_DB
K3S_POSTGRESQL_PASS generado aleatoriamente contraseña para usar con K3S_POSTGRESQL_USER para acceder a K3S_POSTGRESQL_DB; almacenada en /opt/k3s después de ser generada
K3S_FIREWALL_MANAGE false habilita la gestión del firewall a través de este rol
K3S_FIREWALL_ADD_PORTS none Esta es una matriz de diccionarios (ver ejemplo de playbook para ejemplos); cada elemento debe tener port, rule, proto y src
K3S_REGISTRIES_MIRRORS none Si se define, colocará todo bajo el "mirrors:" en /etc/rancher/k3s/registries.yaml; asegúrese de que el yaml incluido contenga "mirrors:"

Ejemplo de Playbook

Este es un ejemplo de playbook:

- hosts: k3s_cluster
  become: true
  roles:
    - k3s
  vars:
    K3S_FORCE_UNINSTALL: true
    K3S_POSTGRESQL_ENABLE: true
    K3S_POSTGRESQL_INSTALL: true
    K3S_FIREWALL_ADD_PORTS:
      - port: "8888"
        rule: "allow"
        proto: "tcp"
        src:   "1.2.3.0/24"
      - port: "443"
        rule: "deny"
        proto: "tcp"
        src:   "any"

Información del Autor

Edwin Skidmore (edwin@cyverse.org)

Acerca del proyecto

This role will install a single or multi-cluster k3s, with the option of installing with postgresql. At this time, this is not suppose to be a comprehensive k3s, but rather a role sufficient for CyVerse's needs

Instalar
ansible-galaxy install CyVerse-Ansible.ansible_k3s
Licencia
other
Descargas
2.2k