Установка и регистрация агента для Kubernetes
Функицонал доступен в Self-Hosted версиях. На данный момент интеграция с Kubernetes-кластером не доступна на gitflic.ru
Внимание!
- Интеграция с kubernetes-кластером находится в стадии beta тестирования!
- В работе интеграции могут присутствовать баги или неточности!
- О найденых багах и/или предложениях сообщайте на support@gitflic.ru
Чтобы подключить кластер Kubernetes к GitFlic, необходимо установить агент в кластере.
Предварительные требования
Перед установкой агента в кластере, необходимо:
- Администратор Self-Hosted инсталяции должен настроить Kubernetes agent proxy.
Регистрация агента
Регистрация агента происходит в проекте GitFlic. После регистрации и установки агента возможно настроить его подключение к другим проектам. Для регистрации агента рекомендовано создать конфигурационный файл config.yaml
по следующему пути:
.gitflic/agents/<agent-name>/config.yaml
<agent-name>
- название агента. Может содержать латинские буквы, цифры и тире.
Подключение к агенту происходит в интерфейса Gitflic - Настройки проекта -> Агенты кластера
Файл конфигурации:
В файле конфигурации, можно указать как конкретные проекты так и команды, проектам которых будет доступен агент.
- Конкретные проекты указываются в формате
{ownerAlias}/{projectAlias}
- Команды указываются полным путем, относительно местоположения конфигурационного файла. Например,
company-1/team-1/subteam-1
.
Параметр пути | Опсиание |
---|---|
{ownerAlias} |
Псевдоним владельца проекта |
{projectAlias} |
Псевдоним проекта |
Допустим необходимо выдать доступ агенту:
- конкретному проекту
project-1
, который находится во владении компанииexample-сompany
- конкретному проекту
project-2
, который находится во владении пользователяexample-user
- всем проектам, которые находятся во владении команды
team-1
- всем проектам команды
team-2
, которая находится во владенииcompany-1
Тогда конфигурационный файл будет выглядит следующим образом:
user_access:
projects:
- id: example-сompany/project-1
- id: example-user/project-2
teams:
- id: team-1
- id: company-1/team-2
Примечание:
Проекты и команды можно указывать, только для дочерних сущностей репозитория где объявлен конфигурационный файл. Остальные будут проигнорированы.
В зависимосте от владельца репозитория с конфигурационным файлом можно указывать:
-
Репозиторий принадлежит компании:
- Проекты, которые находятся в данной компании или командах, корневым родителем которых является компания
- Команды, корневым родителем которых является компания.
-
Репозиторий принадлежит команде:
- Проекты, которые находятся в данной команде, или командах, наследуемых от текущей.
- Команды, родителем которых является текущая команда.
Установка kubernetes-агента в кластере
Для установки агента в Kubernetes кластере рекомендуется использовать Helm .
Для установки агента на кластер с помощью Helm необходимо:
- Установить Helm CLI
- Открыть терминал и подключитесь к кластеру kubernetes
- Запустить команду, которую отображается при регистрации kubernetes-агента в GitFlic. Команда имеет следующий вид:
helm install <agent-name> oci://registry.gitflic.ru/helm/company/gitflic/kuber-agent-helm --version <gitflic-version> \
--namespace gitflic-agent-<agent-name> \
--create-namespace \
--set image.repository="registry.gitflic.ru/company/gitflic/kuber-agent"\
--set env.kuber_proxy_host=<kuber-proxy-host> \
--set env.kuber_proxy_port=<kuber-proxy-port> \
--set env.kuber_registration_token=<access_token>
Дополнительные настройки для установки kubernetes-агента с помощью Helm
Для простоты конфигурация Helm по умолчанию устанавливает учетную запись службы для агента с cluster-admin правами. Не следует использовать это в производственных системах.
-
Вы можете: Пропустите создание учетной записи службы путем добавления
--set serviceAccount.create=false
к командеhelm install
. В этом случае необходимо установитьserviceAccount.name
существующую учетную запись службы. -
Настройте роль, назначенную учетной записи службы, добавив
--set rbac.useExistingRole <your role name>
ее вhelm install
команду. В этом случае у вас должна быть предварительно созданная роль с ограниченными разрешениями, которую может использовать учетная запись службы. Пропустите назначение ролей вообще, добавив--set rbac.create=false
в своюhelm install
команду. В этом случае вам придется создатьClusterRoleBinding
вручную.
Взаимодействие с кластером
После того как все предыдущие шаги были успешно выполнены вы сможете взаимодействовать с вашим kubernetes кластером в своих CI/CD процессах.
Пример использования в задаче get_pods
в вашем gitflic-ci.yaml:
get_pods:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [ '' ]
scripts:
#Проверяем namespaces в кластере
- kubectl get namespaces
#Проверяем pods в рамках namespaces подключенного kubernetes-агента
- kubectl get pods