# Репозиторий деплоя кластеров K8s Репозиторий в себе содержит все необходимые конфигурации, инструменты и дополнительные механизмы, необходимые для развёртывания кластеров K8s в различных окружениях. ## Получение репозитория ```bash git clone ssh://git@git.avroid.tech:2222/K8s/k8s-deploy.git cd k8s-deploy git submodule update --init --recursive ``` ## Структура каталогов ```text . |-- env - директория содержащая подкаталоги соответствующие различным окружениям | |-- <ОКРУЖЕНИЕ_01> - директория окружения, название директории совпадает с названием окружения | | |-- <КЛАСТЕР_01> - директория кластера, название директории совпадает с именем кластера | | |-- inventory - каталог содержит Ansible inventory к Kubespray для деплоя кластера | | | | | |-- kubespray - каталог является Git Submodules на определённый тег Kubespray | | | | | |-- patches - кастомные доработки для отдельных сервисов кластера | | | |-- <ИМЯ_СЕРВИСА_01> - директория, содержащая файлы патчей (без подкаталогов) | | | | |-- file_XX.yaml - файл с кастомными доработками | | | | |-- ... | | | | | | | |-- ... | | | | | | | |-- <ИМЯ_СЕРВИСА_XX> | | | |-- file_XX.yaml | | | |-- ... | | | | | |-- README.md - файл содержит подробное описание конфигурации и порядок деплоя | | | |-- ... | | | |-- <ОКРУЖЕНИЕ_XX> | |-- <КЛАСТЕР_01> | | |-- inventory | | |-- kubespray | | |-- patches | | | |-- <ИМЯ_СЕРВИСА_01> | | | | |-- file_XX.yaml | | | | |-- ... | | | | | | | |-- ... | | | | | | | |-- <ИМЯ_СЕРВИСА_XX> | | | |-- file_XX.yaml | | | |-- ... | | | | | |-- README.md | | | |-- ... | | | |-- <КЛАСТЕР_XX> | |-- inventory | |-- kubespray | |-- patches | | |-- <ИМЯ_СЕРВИСА_01> | | | |-- file_XX.yaml | | | |-- ... | | | | | |-- ... | | | | | |-- <ИМЯ_СЕРВИСА_XX> | | |-- file_XX.yaml | | |-- ... | | | |-- README.md | |-- .gitignore |-- README.md ``` ## Порядок создания Git Submodule kubespray в каталоге окружения Сначала создаём Git Submodule: ```bash cd env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX> git submodule add ssh://git@git.avroid.tech:2222/Mirrors/kubespray.git kubespray ``` После чего принудительно переключаем Git Submodule на нужный тэг (релиз) Kubespray: ```bash cd env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX>/kubespray git checkout v2.26.0 cd ../../../.. git add env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX>/kubespray ``` После чего правим файл `.gitmodules` и явно в нём прописываем необходимый тэг, который необходимо использовать для этого подмодуля. Пример записи: ```text [submodule "env/<ОКРУЖЕНИЕ_ХХ>/<КЛАСТЕР_XX>/kubespray"] path = env/<ОКРУЖЕНИЕ_ХХ>/<КЛАСТЕР_XX>/kubespray url = ssh://git@git.avroid.tech:2222/Mirrors/kubespray.git branch = v2.26.0 ``` После чего фиксируем новое состояние: ```bash git commit -m "[DO-XXXX] Checked out tag v2.26.0 kubespray for env XXX" ```