Перейти к содержанию

Установка и регистрация агента для 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 необходимо:

  1. Установить Helm CLI
  2. Открыть терминал и подключитесь к кластеру kubernetes
  3. Запустить команду, которую отображается при регистрации 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