Использование скрипта talos-bootstrap для инициализации кластера Cozystack
talos-bootstrap — CLI для пошаговой инициализации кластера, созданный разработчиками Cozystack.Рекомендуется для первых развертываний.
talos-bootstrap — интерактивный скрипт для инициализации кластеров Kubernetes на Talos OS.
Он был создан разработчиками Cozystack, чтобы упростить установку Talos Linux на bare-metal узлы и сделать ее удобнее.
1. Установка зависимостей
Установите следующие зависимости:
talosctldialognmap
Скачайте последнюю версию talos-bootstrap со
страницы релизов или напрямую из trunk:
curl -fsSL -o /usr/local/bin/talos-bootstrap \
https://github.com/cozystack/talos-bootstrap/raw/master/talos-bootstrap
chmod +x /usr/local/bin/talos-bootstrap
talos-bootstrap --help
2. Подготовка конфигурационных файлов
Начните с создания каталога конфигурации для нового кластера:
mkdir -p cluster1 cd cluster1Создайте файл конфигурационного patch
patch.yamlс общими настройками узлов, используя следующий пример:machine: kubelet: nodeIP: validSubnets: - 192.168.100.0/24 extraConfig: maxPods: 512 sysctls: net.ipv4.neigh.default.gc_thresh1: "4096" net.ipv4.neigh.default.gc_thresh2: "8192" net.ipv4.neigh.default.gc_thresh3: "16384" kernel: modules: - name: openvswitch - name: drbd parameters: - usermode_helper=disabled - name: zfs - name: spl - name: vfio_pci - name: vfio_iommu_type1 install: image: ghcr.io/cozystack/cozystack/talos:v1.13.0 registries: mirrors: docker.io: endpoints: - https://mirror.gcr.io files: - content: | [plugins] [plugins."io.containerd.grpc.v1.cri"] device_ownership_from_security_context = true [plugins."io.containerd.cri.v1.runtime"] device_ownership_from_security_context = true path: /etc/cri/conf.d/20-customization.part op: create - op: overwrite path: /etc/lvm/lvm.conf permissions: 0o644 content: | backup { backup = 0 archive = 0 } devices { global_filter = [ "r|^/dev/drbd.*|", "r|^/dev/dm-.*|", "r|^/dev/zd.*|" ] } cluster: network: cni: name: none dnsDomain: cozy.local podSubnets: - 10.244.0.0/16 serviceSubnets: - 10.96.0.0/16Создайте еще один файл конфигурационного patch
patch-controlplane.yamlс настройками, которые относятся только к узлам control plane:machine: nodeLabels: node.kubernetes.io/exclude-from-external-load-balancers: $patch: delete cluster: allowSchedulingOnControlPlanes: true controllerManager: extraArgs: bind-address: 0.0.0.0 scheduler: extraArgs: bind-address: 0.0.0.0 apiServer: certSANs: - 127.0.0.1 proxy: disabled: true discovery: enabled: false etcd: advertisedSubnets: - 192.168.100.0/24Чтобы настроить Keycloak как OIDC-провайдера, добавьте следующий раздел в
patch-controlplane.yaml, заменивexample.comна свой домен:cluster: apiServer: extraArgs: oidc-issuer-url: "https://keycloak.example.com/realms/cozy" oidc-client-id: "kubernetes" oidc-username-claim: "preferred_username" oidc-groups-claim: "groups"
3. Инициализация и доступ к кластеру
Когда конфигурационные файлы будут готовы, запустите talos-bootstrap на каждом узле кластера:
# в каталоге конфигурации кластера
talos-bootstrap install
⚠️ Если узлы работают во внешней сети, каждый узел нужно явно указать в аргументе:
talos-bootstrap install -n 1.2.3.4
Где 1.2.3.4 — IP-адрес удаленного узла.
talos-bootstrap включит bootstrap на первом настроенном узле кластера.
Если нужно повторно выполнить bootstrap кластера etcd, удалите строку BOOTSTRAP_ETCD=false из файла cluster.conf.Повторите этот шаг для остальных узлов кластера.
После завершения команды install talos-bootstrap сохранит конфигурацию кластера как ./kubeconfig.
Настройте kubectl на использование новой конфигурации, экспортировав переменную KUBECONFIG:
export KUBECONFIG=$PWD/kubeconfig
kubeconfig постоянно доступным, можно сделать его конфигурацией по умолчанию (~/.kube/config),
использовать kubectl config use-context или применить другие методы.
См.
документацию Kubernetes о доступе к кластеру.Проверьте, что кластер доступен с новым kubeconfig:
kubectl get ns
Пример вывода:
NAME STATUS AGE
default Active 7m56s
kube-node-lease Active 7m56s
kube-public Active 7m56s
kube-system Active 7m56s
READY: False, и на этом этапе это нормально.
Так происходит потому, что на предыдущем шаге стандартный CNI-плагин был отключен, чтобы Cozystack мог установить собственный CNI-плагин.Следующие шаги
Теперь у вас есть инициализированный кластер Kubernetes, готовый к установке Cozystack. Чтобы завершить установку, следуйте руководству по развертыванию, начиная с раздела Установка Cozystack.