Flux2: различия между версиями
Kaf (обсуждение | вклад) |
Kaf (обсуждение | вклад) |
||
Строка 58: | Строка 58: | ||
==== Загрузка flux-манифестов в git-репозиторий и разворачиние flux-манифестов в kubernetes-кластере ==== | ==== Загрузка flux-манифестов в git-репозиторий и разворачиние flux-манифестов в kubernetes-кластере ==== | ||
Для загрузки flux-манифестов в git-репозиторий и разворачиние flux-манифестов в kubernetes-кластере создайте скрипт <code>bootstrapRepo.sh</code>: | |||
<pre> | |||
flux bootstrap git \ | |||
--url=ssh://gitea@gitea.basealt.ru/alt/alt_fluxtest \ | |||
--branch=main \ | |||
--private-key-file=$HOME/.ssh/id_ed25519 \ | |||
--password=<password> \ | |||
--path=clusters/my-cluster | |||
</pre> | |||
и запустите его: | |||
<pre> | |||
flux bootstrap git \ | |||
--url=ssh://gitea@gitea.basealt.ru/alt/fluxtest \ | |||
--branch=main \ | |||
--private-key-file=$HOME/.ssh/id_ed25519 \ | |||
--password=<passwd> \ | |||
--path=clusters/my-cluster | |||
</pre> | |||
Ответьте 'y' на вопрос о доступе к открытому ключу Вашего репозитория: | |||
<pre> | |||
► cloning branch "main" from Git repository "ssh://gitea@gitea.basealt.ru/alt/fluxtest" | |||
✔ cloned repository | |||
► generating component manifests | |||
✔ generated component manifests | |||
✔ committed component manifests to "main" ("a5b764515ef2dc06931e215ba56a3ec10487af96") | |||
► pushing component manifests to "ssh://gitea@gitea.basealt.ru/alt/fluxtest" | |||
► installing components in "flux-system" namespace | |||
✔ installed components | |||
✔ reconciled components | |||
► determining if source secret "flux-system/flux-system" exists | |||
► generating source secret | |||
✔ public key: ssh-ed25519 AAAAC3NzaC1l... | |||
Please give the key access to your repository: y | |||
► applying source secret "flux-system/flux-system" | |||
✔ reconciled source secret | |||
► generating sync manifests | |||
✔ generated sync manifests | |||
✔ committed sync manifests to "main" ("42da02d6087f1ec3f16c2664a22781907514aaab") | |||
► pushing sync manifests to "ssh://gitea@gitea.basealt.ru/alt/fluxtest" | |||
► applying sync manifests | |||
✔ reconciled sync configuration | |||
◎ waiting for GitRepository "flux-system/flux-system" to be reconciled | |||
✔ GitRepository reconciled successfully | |||
◎ waiting for Kustomization "flux-system/flux-system" to be reconciled | |||
✔ Kustomization reconciled successfully | |||
► confirming components are healthy | |||
✔ helm-controller: deployment ready | |||
✔ kustomize-controller: deployment ready | |||
✔ notification-controller: deployment ready | |||
✔ source-controller: deployment ready | |||
✔ all components are healthy | |||
</pre> | |||
=== Разворачивание podinfo deployment === | === Разворачивание podinfo deployment === |
Версия от 09:27, 31 июля 2024
Установка и настройка flux2
Flux2 — это инструмент для синхронизации кластеров Kubernetes с источниками конфигурации (такими как репозитории Git и артефакты OCI), а также для автоматизации обновлений конфигурации при необходимости развертывания нового кода.
Flux2 для бранча sisyphus включает в себя следующие компоненты (с версиями на 30.07.2024):
- команда flux пакета flux2 (версия 2.3.0);
- образ registry.altlinux.org/sisyphus/flux2/source-controller:v1.3.0;
- образ registry.altlinux.org/sisyphus/flux2/notification-controller:v1.3.0;
- образ registry.altlinux.org/sisyphus/flux2/kustomize-controller:v1.3.0;
- образ registry.altlinux.org/sisyphus/flux2/helm-controller:v1.0.1;
- образ registry.altlinux.org/sisyphus/flux2/image-automation-controller:v0.38.0;
- образ registry.altlinux.org/sisyphus/flux2/image-reflector-controller:v0.32.0.
(Выделенные жирным шрифтом являются обязательными).
Разворачивание flux с хранением манифестов в git-репозиториях
В данном разделе описан способ универсальный способ хранения манифестов в любом git-репозитории, поддерживающий доступ по SSH Private Key. В этом случае необходимо наличие (возможно пустого) репозитория. Для git-репозиториев различных типов существуют специализированные способы работы с git-репозиториями (см. Flux bootstrap). В этих случаях flux сам создает необходимый указанный git-репозиторий.
Команда
flux bootstrap git ...
развертывает Flux-контроллеры
в кластере Kubernetes и настраивает контроллеры для синхронизации состояния кластера из git-репозитория . Помимо установки контроллеров, команда flux bootstrap
отправляет flux-манифесты
в git-репозиторий
и настраивает flux
для обновления из git-репозитория
.
После запуска команды
flux bootstrap git ...
в дальнейшем любую операцию в кластере (включая обновления flux
) можно выполнить с помощью
git push
без необходимости подключения к кластеру Kubernetes
.
Создание (если еще не создан) ssh-ключа
Если ssh-ключ типа ed25519
еще не сформирован вызовите клманду:
ssh-keygen -t ed25519
Скопируйте открытый ключ из файла ~/.ssh/id_ed25519.pub
и добавьте его на странице добавления SSH-ключей.
Создание git-репозитория
В данном примере создадим git-репозиторий alt/fluxtest в git-репозитории gitea.basealt.ru
Загрузка flux-манифестов в git-репозиторий и разворачиние flux-манифестов в kubernetes-кластере
Для загрузки flux-манифестов в git-репозиторий и разворачиние flux-манифестов в kubernetes-кластере создайте скрипт bootstrapRepo.sh
:
flux bootstrap git \ --url=ssh://gitea@gitea.basealt.ru/alt/alt_fluxtest \ --branch=main \ --private-key-file=$HOME/.ssh/id_ed25519 \ --password=<password> \ --path=clusters/my-cluster
и запустите его:
flux bootstrap git \ --url=ssh://gitea@gitea.basealt.ru/alt/fluxtest \ --branch=main \ --private-key-file=$HOME/.ssh/id_ed25519 \ --password=<passwd> \ --path=clusters/my-cluster
Ответьте 'y' на вопрос о доступе к открытому ключу Вашего репозитория:
► cloning branch "main" from Git repository "ssh://gitea@gitea.basealt.ru/alt/fluxtest" ✔ cloned repository ► generating component manifests ✔ generated component manifests ✔ committed component manifests to "main" ("a5b764515ef2dc06931e215ba56a3ec10487af96") ► pushing component manifests to "ssh://gitea@gitea.basealt.ru/alt/fluxtest" ► installing components in "flux-system" namespace ✔ installed components ✔ reconciled components ► determining if source secret "flux-system/flux-system" exists ► generating source secret ✔ public key: ssh-ed25519 AAAAC3NzaC1l... Please give the key access to your repository: y ► applying source secret "flux-system/flux-system" ✔ reconciled source secret ► generating sync manifests ✔ generated sync manifests ✔ committed sync manifests to "main" ("42da02d6087f1ec3f16c2664a22781907514aaab") ► pushing sync manifests to "ssh://gitea@gitea.basealt.ru/alt/fluxtest" ► applying sync manifests ✔ reconciled sync configuration ◎ waiting for GitRepository "flux-system/flux-system" to be reconciled ✔ GitRepository reconciled successfully ◎ waiting for Kustomization "flux-system/flux-system" to be reconciled ✔ Kustomization reconciled successfully ► confirming components are healthy ✔ helm-controller: deployment ready ✔ kustomize-controller: deployment ready ✔ notification-controller: deployment ready ✔ source-controller: deployment ready ✔ all components are healthy
Разворачивание podinfo deployment
Рассмотрим разворачивание решения podinfo, используемый в CNCF-проектах для доступа к информации POD'ов и тестирования.
В общем случае любой git-репозиторий поддерживаемый flux должен содержать каталог с файлом kustomization.yaml
, который и обеспечивает генерацию манифестов для конкретного deployments.