CyVerse-Ansible.ansible_k3s
CyVerse Ansible k3s
Diese Rolle erstellt einen k3s Standalone oder Cluster.
Anforderungen
Wenn Docker mit k3s verwendet wird, muss Docker bereits installiert sein oder eine Rolle bereitgestellt werden, die es zur Verfügung stellt.
Diese Rolle richtet eine Firewall (ufw) ein und erlaubt standardmäßig, dass alle Knoten innerhalb des k3s Clusters miteinander kommunizieren.
Diese Rolle geht von Annahmen in deinen Host-Dateien aus. Im Folgenden ist ein Beispiel für eine Inventardatei mit k3s_masters, k3s_agents und k3s_cluster angegeben, was die minimale Deklaration darstellt.
Hinweis: Aktuell wird nur 1 Master unterstützt.
Im .ini-Format
[k3s_masters]
w.x.y.z
[k3s_agents]
a.b.c.d
e.f.g.h
[k3s_cluster:children]
k3s_masters
k3s_agents
Im yaml-Format
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:
Rollenvariablen
Die folgende Tabelle listet optionale Ansible-Variablen sowie die Standardwerte auf, falls sie nicht definiert sind.
Variablenname | Standardwert, wenn nicht definiert | Beschreibung |
---|---|---|
K3S_DOCKER_ENABLE | versionsabhängig | aktiviert die Docker-Engine, wenn nicht gesetzt, ist es wahr, es sei denn, die OS-Version ist ubuntu2204 oder neuer |
K3S_GPU_ENABLE | falsch | aktiviert den Nvidia GPU-Treiber |
K3S_GPU_TIMESLICE_ENABLE | falsch | wenn GPU aktiviert ist, aktiviert diese Einstellung Time-Slicing |
K3S_GPU_TIMESLICE_NUM | 2 | Standard-Zeit-Slices sind zwei, wenn K3S_GPU_TIMESLICE_ENABLE |
K3S_NVIDIA_USE_GPU_OPERATOR | wahr | standardmäßig wird der Nvidia-GPU-Operator verwendet (wenn GPU aktiviert) |
K3S_NVIDIA_GPU_OPERATOR_DRIVER | falsch | Treiber im Container verwenden (siehe https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html) |
K3S_NVIDIA_GPU_OPERATOR_TOOLKIT | falsch | Toolkit im Container verwenden (siehe https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html) |
K3S_TRAEFIK_ENABLE | falsch | deaktiviert Traefik Ingress |
K3s_FLANNEL_BACKEND | none | wenn gesetzt, wird der Wert an --flannel-backend= übergeben |
K3S_CALICO_ENABLE (nicht working) | falsch | aktiviert Calico |
K3S_CLUSTER_TOKEN | none | wenn gesetzt, wird der Cluster auf dieses Token initialisiert, anstatt zufällig erzeugt zu werden |
K3S_CLUSTER_CIDR | none | wenn gesetzt, CIDR für den Cluster z.B. 192.168.0.0/16 |
K3S_VERSION | none | wenn gesetzt, wird versucht, die k3s-Version festzulegen |
K3S_IS_MULTINODE | falsch | wenn wahr, wird eine zusätzliche Einrichtung durchgeführt, um Hosts für Multiknoten vorzubereiten (wie IP-Weiterleitung) |
K3S_MASTER_INSTALL | wahr | Master-Knoten neu installieren |
K3S_MASTER_IP | none | setzt die k3s Masters IP, wenn ansible_default_ipv4 einen falschen Wert erhält |
K3S_MASTER_PORT | 6443 | Port des Master-Knotens |
K3S_POSTGRESQL_ENABLE | falsch | aktiviert die Nutzung von PostgreSQL |
K3S_POSTGRESQL_INSTALL | falsch | aktiviert die Installation von PostgreSQL auf dem ersten k3s Master; K3S_POSTGRESQL_ENABLE muss wahr sein |
K3S_POSTGRESQL_HOST | 127.0.0.1 | Hostname oder IP-Einstellung für die PostgreSQL-Datenbank, aus der k3s Master-Konfiguration |
K3S_POSTGRESQL_PORT | 5432 | Port für die PostgreSQL-Datenbank |
K3S_POSTGRESQL_DB | kubernetes | PostgreSQL-Datenbankname |
K3S_POSTGRESQL_USER | k3suser | Benutzername für die K3S_POSTGRESQL_DB |
K3S_POSTGRESQL_PASS | zufällig generiert | Passwort für K3S_POSTGRESQL_USER zum Zugriff auf K3S_POSTGRESQL_DB; gespeichert in /opt/k3s nach der Generierung |
K3S_FIREWALL_MANAGE | falsch | aktiviert die Firewall-Verwaltung durch diese Rolle |
K3S_FIREWALL_ADD_PORTS | none | Dies ist ein Array von Dictionaries (siehe Beispiel-Playbook für Beispiele); jedes Element sollte Port, Regel, Proto und Src haben |
K3S_REGISTRIES_MIRRORS | none | Wenn definiert, wird alles unter "mirrors:" in /etc/rancher/k3s/registries.yaml platziert; stelle sicher, dass die enthaltenen YAML-Container "mirrors:" haben |
Beispiel-Playbook
Dies ist ein Beispiel-Playbook:
- hosts: k3s_cluster
become: true
roles:
- k3s
vars:
K3S_FORCE_UNINSTALL: wahr
K3S_POSTGRESQL_ENABLE: wahr
K3S_POSTGRESQL_INSTALL: wahr
K3S_FIREWALL_ADD_PORTS:
- port: "8888"
rule: "allow"
proto: "tcp"
src: "1.2.3.0/24"
- port: "443"
rule: "deny"
proto: "tcp"
src: "any"
Autoreninformationen
Edwin Skidmore (edwin@cyverse.org)
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
ansible-galaxy install CyVerse-Ansible.ansible_k3s