first commit

This commit is contained in:
Sergey Antropoff
2026-04-17 08:37:27 +03:00
commit 095b276cb3
82 changed files with 5731 additions and 0 deletions

125
group_vars/all/main.yml Normal file
View File

@@ -0,0 +1,125 @@
---
# ─── K3S ──────────────────────────────────────────────────────────────────────
k3s_version: "v1.29.3+k3s1"
# Токен из vault (создай group_vars/all/vault.yml)
k3s_token: "{{ vault_k3s_token }}"
k3s_install_dir: /usr/local/bin
k3s_config_dir: /etc/rancher/k3s
k3s_data_dir: /var/lib/rancher/k3s
k3s_cluster_cidr: "10.42.0.0/16"
k3s_service_cidr: "10.43.0.0/16"
k3s_cluster_dns: "10.43.0.10"
k3s_flannel_backend: "vxlan"
# CNI плагин: flannel (встроен в k3s) | calico | cilium
# При calico/cilium — Flannel автоматически отключается в конфиге k3s
k3s_cni: "flannel"
# Traefik ДОЛЖЕН быть отключён если используется ingress-nginx
k3s_disable_traefik: true
k3s_disable_servicelb: false
k3s_disable_local_storage: false
k3s_node_labels: []
k3s_node_taints: []
k3s_extra_server_args: ""
k3s_extra_agent_args: ""
k3s_become: true
# ─── kube-vip ─────────────────────────────────────────────────────────────────
# ОБЯЗАТЕЛЬНО: задай свободный IP из твоей подсети, не занятый DHCP!
kube_vip_address: "192.168.1.100"
# Сетевой интерфейс на master-ноде.
# Оставь пустым — Ansible автоопределит через ansible_default_ipv4.interface.
# Переопредели если нужно принудительно: kube_vip_interface: "eth0"
kube_vip_interface: ""
kube_vip_version: "v0.8.3"
kube_vip_mode: "arp" # arp (L2) | bgp (L3)
kube_vip_services_enable: true # также обрабатывает LoadBalancer Services
# ─── NFS Server ───────────────────────────────────────────────────────────────
nfs_exports:
- path: /srv/nfs/k8s
options: "*(rw,sync,no_subtree_check,no_root_squash)"
nfs_allowed_network: "192.168.1.0/24"
nfs_create_export_dirs: true
nfs_export_dir_mode: "0777"
nfs_export_dir_owner: "nobody"
nfs_export_dir_group: "nogroup"
# ─── CSI NFS Driver ───────────────────────────────────────────────────────────
csi_nfs_version: "v4.8.0"
csi_nfs_namespace: "kube-system"
# IP NFS сервера — по умолчанию берётся master нода
# Если NFS на отдельном хосте: csi_nfs_server: "192.168.1.20"
csi_nfs_server: "{{ hostvars[groups['k3s_master'][0]]['ansible_host'] }}"
csi_nfs_share: "/srv/nfs/k8s"
# StorageClass именуется по hostname NFS сервера: nfs-master01, nfs-storage01, …
# Переопредели только если нужно другое имя.
csi_nfs_storageclass_default: true
csi_nfs_reclaim_policy: "Delete" # Delete | Retain
csi_nfs_on_delete: "delete" # delete | retain | archive
csi_nfs_install_client: true
# ─── ingress-nginx ────────────────────────────────────────────────────────────
ingress_nginx_version: "4.10.1"
ingress_nginx_namespace: "ingress-nginx"
# LoadBalancer получит IP от kube-vip
ingress_nginx_service_type: "LoadBalancer"
# Конкретный IP из пула kube-vip (оставь "" для автоматического)
ingress_nginx_load_balancer_ip: ""
ingress_nginx_replica_count: 1
ingress_nginx_use_daemonset: false
ingress_nginx_metrics_enabled: false
ingress_nginx_class_name: "nginx"
ingress_nginx_set_default_class: true
ingress_nginx_resources:
requests:
cpu: 100m
memory: 90Mi
limits:
cpu: 500m
memory: 256Mi
ingress_nginx_extra_args: {}
# ─── Istio (Service Mesh) ──────────────────────────────────────────────────────
# Установка по желанию: поменяй на true чтобы включить
istio_enabled: false
# istio_version: "1.22.2"
# istio_mtls_mode: "STRICT" # STRICT | PERMISSIVE | DISABLE
# istio_install_gateway: true
# Kiali (UI для Istio) — требует istio_enabled: true
# Токен задаётся в vault.yml:
# vault_kiali_token: "" # заполни после первой установки (токен выведет Ansible)
kiali_enabled: false
# ─── kube-prometheus-stack (Prometheus + Grafana + Alertmanager) ───────────────
# Установка по желанию: поменяй на true чтобы включить
prometheus_stack_enabled: false
# prometheus_stack_version: "60.3.0"
# prometheus_retention_days: 7
# prometheus_storage_size: "10Gi"
# Grafana: логин и пароль — задай в vault.yml:
# vault_grafana_user: "admin"
# vault_grafana_password: "ваш-пароль"
# grafana_admin_user: "{{ vault_grafana_user | default('admin') }}"
# prometheus_grafana_admin_password: "{{ vault_grafana_password | default('admin') }}"
# prometheus_grafana_ingress_enabled: false
# prometheus_grafana_ingress_host: "grafana.local"

View File

@@ -0,0 +1,14 @@
---
# Секретные переменные — шифруй через ansible-vault!
#
# Создание зашифрованного файла:
# ansible-vault create group_vars/all/vault.yml
#
# Редактирование:
# ansible-vault edit group_vars/all/vault.yml
#
# Запуск плейбука с vault:
# ansible-playbook site.yml --ask-vault-pass
# ansible-playbook site.yml --vault-password-file ~/.vault_pass
vault_k3s_token: "ЗАМЕНИ_НА_НАДЁЖНЫЙ_СЕКРЕТНЫЙ_ТОКЕН_МИН_32_СИМВОЛА"