Запуск агента в Kubernetes
Внимание!
- kuber агент gitflic находится в стадии beta тестирования!
- Установка в k8s кластер доступна начиная с версии агента 3.5.2!
- В работе агента могут присутствовать баги или неточности!
- О найденных багах и/или предложениях сообщайте на support@gitflic.ru
Информация
- Для запуска агента в kubernetes вам потребуется установить kubectl.
- Для запуска агента в kubernetes вам потребуется установить helm.
- Для работы агентов внутри кластера потребуется создать Клаcтерную роль и пространство имен. Это необходимо сделать один раз, для каждого кластера, внутри которого вы хотите использовать агентов GitFlic Runner.
- В случае использования приватных репозиториев образов, потребуется создание Secret с типом kubernetes.io/dockerconfigjson
Подготовка кластера
-
Создайте пространство имен gitflic-runner, роль для полного доступа к пространству имен и кластерную роль с возможностью получения списка пространств имен внутри кластера. Скопируйте содержимое спойлера в файл static.yaml и выполните команду на установку:
static.yaml
apiVersion: v1 kind: Namespace metadata: name: gitflic-runner labels: name: gitflic-runner --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: gitflic-runner name: manager-role rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: gitflic-runner-read-only rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["get", "list"]
kubectl apply -f static.yaml
-
Для корректной работы с приватными репозиториями образов добавьте параметр
kubernetes.imagePullSecret
в конфигурационный файл агента в блокеadditional
. Параметр принимает в себя строковое значение - наименование объекта Secret в кластере. Данный секрет будет использоваться для авторизации в приватных репозиториях.Создание Secret в кластере
если будет использоваться только один репозиторий, то можно воспользоваться следующей командой:
kubectl create secret docker-registry my-registry-secret \ --namespace=gitflic-runner \ --docker-email=my-email@example.com \ --docker-username=my-username \ --docker-password=my-password \ --docker-server=registry.gitflic.ru
если репозиториев будет больше, то сперва понадобится создать *.json файл, например config.json
{ "auths": { "registry1.example.com": { "username": "user1", "password": "password1", "auth": "dXNlcjE6cGFzc3dvcmQx" }, "registry2.example.com": { "username": "user2", "password": "password2", "auth": "dXNlcjI6cGFzc3dvcmQy" } } }
значение в "auth" - строка "username:password" в base64
после чего выполнить команду
kubectl create secret generic my-multi-registry-secret \ --namespace=gitflic-runner \ --from-file=.dockerconfigjson=config.json \ --type=kubernetes.io/dockerconfigjson
Как следствие, в пространстве имен
gitflic-runner
(пространство имен по умолчанию, в котором разворачивается раннер) будет создан объект Secret (в первом случаеmy-registry-secret
, во второмmy-multi-registry-secret
), наименование которого и следует подставить в параметрkubernetes.imagePullSecret
В случае отсутствия в кластере указанного Secret, в ивентах пода (который поднимается при старте выполнения пайплайна, в неймспейсе
gitflic-runner
) можно будет увидеть что-то подобное:Unable to retrieve some image pull secrets (%kubernetes.imagePullSecret%); attempting to pull the image may not succeed Failed to pull image "registry.gitflic.ru/project/{username}/my-project/bash": Error response from daemon: unauthorized: This transport access gitflic token doesn't exist
Установка агента GitFlic Runner
-
Создайте файл values.yaml и заполните его необходимой информацией:
values.yaml
image: tag: <версия gitflic server> registerUrl: <Url для регистрации агента> registerToken: <Token для регистрации агента>
Список всех возможных настроек и значений по умолчанию
# Имя кластерной роли созданной в п.1 clusterRoleName: gitflic-runner-read-only # Имя роли в пространстве имен созданной в п.1 roleRefName: manager-role # Количество реплик агента ,которые необходимо установить replicaCount: 1 # Размер job volume создаваемый агентом при работе # Устанавливается из расчета "Максимальный размер репозитория + размер создаваемых артефактов +20%" jobVolumeSize: 4Gi # Задает выполнение скриптов в одном контексте inSession: true # Переопределения для образа image: # Репозиторий с образом агента repository: registry.gitflic.ru/company/gitflic/runner # Тег tag: latest # Политика скачивания образа pullPolicy: IfNotPresent # Дополнительные настройки приложения config: # Создание файла application.properties. Для предотвращения повторной регистрации агента. (Beta) static: null # Строка для указания стороннего источника образа helper image. helper: null # Строка для указания дополнительных настроек агента, если это необходимо additional: null # Контекст безопасности securityContext: privileged: true # Ссылка для регистрации агента registerUrl: "" # Токен для регистрации агента registerToken: "" # Имя агента, которое будет присвоено во время регистрации registerName: "" # Теги, которые будут присвоены во время регистрации registerTags: ""
-
Установите helm chart
Воспользуйтесь одной из следующих команд для установки на вашу ОС
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
brew install helm
choco install kubernetes-helm
-
Установите агента gitflic
helm install <Имя релиза> oci://registry.gitflic.ru/helm/company/gitflic/gitflic-runner-chart -f values.yaml