В данный момент поддерживает:
- Установку одной или несколько control nodes.
- HA доступ к API kubernetes.
- containerd.
- calico.
- В KubeProxyConfiguration установлены параметры для работы Metallb.
- nodelocaldns - кеширующий DNS сервер на каждой ноде кластера.
Не оттестировано на дистрибутивах Debian.
Так получилось, что у меня в WSL2 стоит Ubuntu:
apt install python3.10-venv
python3 -m venv venv
. ~/venv/bin/activate
python3 -m pip install ansible
Генерируем ssh ключ:
ssh-keygen
Копируем ключики в виртуальные машины из hosts.yaml:
ssh-copy-id root@control1.kryukov.local
ssh-copy-id root@control2.kryukov.local
ssh-copy-id root@control3.kryukov.local
ssh-copy-id root@worker1.kryukov.local
ssh-copy-id root@worker2.kryukov.local
ssh-copy-id root@worker3.kryukov.local
ssh-copy-id root@db1.kryukov.local
В инвентори в группе k8s_masters
необходимо указать только один хост.
ansible-playbook install-cluster.yaml
В инвентори в группе k8s_masters
необходимо указать нечётное количество
control nodes.
ansible-playbook install-cluster.yaml
Используются haproxy и keepalived.
В конфигурационном файле определите параметры доступа к API :
ha_cluster_virtual_ip
- виртуальный IP адрес.ha_cluster_virtual_port
- порт. Не должен быть равен 6443.
ansible-playbook reset.yaml
Внимание!!! Скрипт удаляет все нестандартные цепочки и чистит все стандартные цепочки.
Изменяете версию кластера в group_vars\k8s_cluster
и запускаете апдейт.
ansible-playbook upgrade.yaml
Сервисные функции находятся в директории services