From 3071c7b38a499ec90d70bfaa1c286c8c6e34a723 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 19:49:19 +0300 Subject: [PATCH] Talos (#22) Co-authored-by: Fedor Batonogov --- .gitignore | 2 + talos/README.md | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 talos/README.md diff --git a/.gitignore b/.gitignore index 7f86c4f..d2dd82d 100644 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,5 @@ go.work .DS_Store ansible/secrets main +talos/*.yaml +talosconfig diff --git a/talos/README.md b/talos/README.md new file mode 100644 index 0000000..9ddac7a --- /dev/null +++ b/talos/README.md @@ -0,0 +1,114 @@ +# Talos + +## Что такое Талос? + +Talos - это дистрибутив Linux, оптимизированный для контейнеров; +переосмысление Linux для распределенных систем, таких как Kubernetes. +Разработанный, чтобы быть максимально минимальным, сохраняя при этом практичность. +По этим причинам Talos имеет ряд уникальных для него особенностей: + +- неизменяесый +- атомарный +- эфимерный +- минималистичный +- по умолчанию он безопасен +- управляется с помощью одного декларативного файла конфигурации и gRPC API +- Talos может быть развернут в контейнерных, облачных, виртуализированных и голых металлических платформах. + +## Почему Талос + +Имея меньше, Талос предлагает больше. Безопасность. Эффективность. Устойчивость. Последовательность. + +Все эти области улучшаются просто за счет того, что у них меньше. + +## Загрузка Talos на голом металле с ISO + +Talos не устанавливается на диск при загрузке из ISO до тех пор, пока не будет применена конфигурация машины. + +## Настройка Talos Linux + +Определяем переменную с IP адресом Control Plane узла: + +```sh +export TALOS_CONTROL_PLANE_IP=192.168.1.48 +``` + +Вот так можно посмотреть список дисков на узле: + +```sh +talosctl -n $TALOS_CONTROL_PLANE_IP disks --insecure +``` + +Генерируем конфиг + +```sh +talosctl gen config --kubernetes-version 1.31.1 talos https://$TALOS_CONTROL_PLANE_IP:6443 --config-patch @patch.yaml +``` + +Применяем конфигурацию + +```sh +talosctl apply-config --insecure -n $TALOS_CONTROL_PLANE_IP --file ./controlplane.yaml +``` + +После перезапуска Controls Plane узла необходимо инициализировать etcd: + +```sh +talosctl bootstrap --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig=./talosconfig +``` + +Получаем kube config: + +```sh +talosctl kubeconfig ~/.kube/config --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig ./talosconfig +``` + +Добавляем рабочий узел: + +```sh +export TALOS_WORKER_1_IP=192.168.1.142 +talosctl apply-config --insecure -n $TALOS_WORKER_1_IP --file ./worker.yaml +``` + +## Настройка Cilium + +Добавляем репозиторий: + +```sh +helm repo add cilium https://helm.cilium.io/ +helm repo update +``` + +Устанавливаем Cilium: + +```sh +helm upgrade \ + --install \ + cilium \ + cilium/cilium \ + --version 1.16.3 \ + --namespace kube-system \ + --set ipam.mode=kubernetes \ + --set kubeProxyReplacement=true \ + --set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \ + --set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \ + --set cgroup.autoMount.enabled=false \ + --set cgroup.hostRoot=/sys/fs/cgroup \ + --set k8sServiceHost=localhost \ + --set k8sServicePort=7445 +``` + +## Metrics Server + +Устанавливаем Metrics Server + +```sh +helm upgrade \ + --namespace kube-system \ + --install metrics-server metrics-server/metrics-server \ + --set args={--kubelet-insecure-tls} +``` + +```sh +talosctl upgrade-k8s --nodes $TALOS_CONTROL_PLANE_IP --to 1.31.2 +```