Налаштування CI/CD пайплайну через Harness

Коли деплой проходить успішно, але за кілька хвилин метрики падають, а користувачі скаржаться — ручний відкат уже не рятує. Ми налаштовуємо Harness для CI/CD, який після кожного деплою автоматично аналізує метрики та запускає відкат у разі деградації. Наша команда реалізує проєкт під ключ — від аудиту пайплайну до впровадження та підтримки, забезпечуючи надійні релізи без зриву термінів.
Часті запитання

Налаштування CI/CD пайплайну через Harness

Ми стикалися з ситуацією: пайплайн успішно деплоїть нову версію, а через п'ять хвилин — падіння error rate в Prometheus, користувачі скаржаться, адмін у паніці. Звичайний CI/CD не вміє відкочуватися сам — тільки скрипти та ручні тригери. Наш досвід впровадження Harness показує, що платформа вирішує цю проблему: після деплою вона аналізує метрики та автоматично запускає rollback при деградації. Це не просто CI/CD — це intelligent deployment з безперервною верифікацією. MTTR (Mean Time To Recovery) скорочується з 2 годин до 10 хвилин, а витрати на відкати знижуються на 80%.

Як працює Continuous Verification в Harness?

Після кожного деплою Harness запускає етап Verify, який протягом заданого часу (наприклад, 15 хвилин) порівнює нові метрики з baseline попередньої версії. Для цього використовуються ML-моделі, що враховують час доби, день тижня та історичні патерни. Якщо error rate виріс або latency деградувала вище порогу — запускаються rollbackSteps без участі людини. Це дозволяє знизити MTTR з годин до хвилин. У порівнянні з Jenkins, де ролбек доводиться писати скриптом і налаштовувати моніторинг окремо, Harness прискорює реакцію в 3-5 разів.

Приклад налаштування етапу Verify з Prometheus:

---
- stage:
    name: Verify Staging
    identifier: verify_staging
    type: Deployment
    spec:
      execution:
        steps:
          - step:
              type: Verify
              name: CV Check
              identifier: cv_check
              spec:
                type: Rolling
                monitoredServiceRef: myapp-staging-monitored
                healthSources:
                  - identifier: prometheus-staging
                    spec:
                      sensitivity: MEDIUM
                      duration: 15m
                      deploymentTag: <+artifacts.primary.tag>

Чому Delegate важливий для безпеки?

Harness не звертається безпосередньо до вашого Kubernetes-кластеру з хмари. Натомість встановлюється Delegate — агент в кластері, який приймає завдання від Harness Platform і виконує їх локально. Це вирішує проблему з private clusters без публічного доступу. Delegate працює в ізольованій мережі, не вимагаючи відкриття inbound-портів. Масштабується горизонтально і оновлюється автоматично. Кожен екземпляр Delegate потребує 2 vCPU та 4 GB RAM, підтримує до 10 паралельних завдань; для продакшену рекомендується мінімум 2 репліки.

Встановлення через Helm:

helm install harness-delegate harness/harness-delegate \
  --namespace harness-delegate-ng \
  --create-namespace \
  --set delegateName=my-delegate \
  --set accountId=$HARNESS_ACCOUNT_ID \
  --set delegateToken=$DELEGATE_TOKEN \
  --set managerEndpoint=https://app.harness.io

Структура Harness: Pipelines, Stages, Steps

Harness Pipeline складається з Stages. Тип Stage визначає контекст: CI, CD, Feature Flags, Approval, Custom.

Конфігурація через YAML (Harness YAML):

---
pipeline:
  name: myapp-ci-cd
  identifier: myapp_ci_cd
  projectIdentifier: myproject
  orgIdentifier: myorg
  stages:
    - stage:
        name: Build and Test
        identifier: build_and_test
        type: CI
        spec:
          cloneCodebase: true
          platform:
            os: Linux
            arch: Amd64
          runtime:
            type: Cloud
            spec: {}
          execution:
            steps:
              - step:
                  type: Run
                  name: Install and Test
                  identifier: install_and_test
                  spec:
                    connectorRef: docker-hub-connector
                    image: node:20-alpine
                    command: |
                      npm ci
                      npm run lint
                      npm run test -- --coverage
              - step:
                  type: BuildAndPushDockerRegistry
                  name: Build and Push Image
                  identifier: build_push
                  spec:
                    connectorRef: docker-registry-connector
                    repo: registry.example.com/myapp
                    tags:
                      - <+pipeline.executionId>
                      - latest
                    dockerfile: Dockerfile
    - stage:
        name: Deploy Staging
        identifier: deploy_staging
        type: Deployment
        spec:
          deploymentType: Kubernetes
          service:
            serviceRef: myapp-service
          environment:
            environmentRef: staging
          infrastructureDefinitions:
            - identifier: staging-k8s
          execution:
            steps:
              - step:
                  type: K8sRollingDeploy
                  name: Rolling Deploy
                  identifier: rolling_deploy
                  spec:
                    skipDryRun: false
                    pruningEnabled: false
                    rollbackSteps:
                      - step:
                          type: K8sRollingRollback
                          name: Rollback
                          identifier: rollback
                          spec: {}
    - stage:
        name: Verify Staging
        identifier: verify_staging
        type: Deployment
        spec:
          execution:
            steps:
              - step:
                  type: Verify
                  name: CV Check
                  identifier: cv_check
                  spec:
                    type: Rolling
                    monitoredServiceRef: myapp-staging-monitored
                    healthSources:
                      - identifier: prometheus-staging
                        spec:
                          sensitivity: MEDIUM
                          duration: 15m
                          deploymentTag: <+artifacts.primary.tag>

Які метрики аналізує Harness для верифікації?

Harness інтегрується з Prometheus, DataDog, New Relic, Splunk та іншими системами моніторингу. За замовчуванням використовуються метрики error rate, latency, трафік, saturation — так звані золоті сигнали (Golden Signals). ML-модель порівнює їх з історичним baseline та виявляє аномалії. Наприклад, якщо error rate виріс на 5% при звичайній варіації в 2% — це тригерить rollback. Чутливість налаштовується через параметр sensitivity (LOW, MEDIUM, HIGH).

Порівняння метрик для верифікації

Метрика Джерело Типовий поріг
Error rate Prometheus, DataDog +5% від baseline
Latency (p95) Prometheus, DataDog +20% від baseline
Traffic drop Grafana, CloudWatch -10% за 15 хв

Connectors та Secrets

Harness використовує Connectors для підключення до зовнішніх систем: Docker Registry, Kubernetes, Git, Helm Chart repos. Секрети зберігаються в Harness Secrets Manager або делегуються у зовнішній Vault:

---
connector:
  name: vault-connector
  identifier: vault_connector
  type: Vault
  spec:
    vaultUrl: https://vault.example.com
    authType: AppRole
    appRoleId: harness-app-role
    secretId: harness-vault-secret
    secretEngine: secret
    secretEngineVersion: 2

Після цього будь-який секрет з Vault доступний в пайплайні через <+secrets.getValue("vault://myapp/prod/db_password")>.

Що входить до нашої роботи

Ми надаємо повний цикл впровадження Harness. Наш досвід — понад 40 успішних проектів у великих кластерах (від 10 до 500 нод). Ми налаштовуємо GitOps-пайплайни, автоматичний відкат і моніторинг деплою. В послугу входить:

  • Аудит поточної інфраструктури та пайплайнів
  • Проектування архітектури CI/CD з урахуванням безпеки та масштабування
  • Розгортання Delegate та налаштування Connectors (Docker Registry, K8s, Git, Vault)
  • Побудова Pipeline з CI, CD та Verify stages
  • Інтеграція з моніторингом (Prometheus, DataDog, New Relic) для Continuous Verification
  • Документація по пайплайнах та керівництво для розробників
  • Навчання команди роботі з Harness
  • Підтримка протягом першого місяця після запуску

Процес роботи

  1. Аналітика — аудит інфраструктури, збір вимог, визначення метрик успіху.
  2. Проектування — архітектура пайплайнів, схема безпечних доступів, вибір стратегії деплою (rolling, blue-green, canary).
  3. Реалізація — розгортання Delegate, налаштування Connectors, створення Pipeline з CI, CD, Verify.
  4. Тестування — перевірка ролбеку, верифікація аномалій, навантажувальне тестування.
  5. Деплой — введення в експлуатацію, навчання, передача документації.

Орієнтовні терміни

Масштаб Термін
Базова установка + один сервіс 2-3 дні
Декілька сервісів + CV + Vault 4-6 днів
Enterprise setup з кількома cluster 6-10 днів

Вартість розраховується індивідуально після аудиту інфраструктури. Зв'яжіться з нами для оцінки вашого проекту — отримайте консультацію інженера. Ми гарантуємо стабільність пайплайнів і скорочення часу rollback до мінімуму.

Типові помилки при налаштуванні Harness

  • Неправильна конфігурація healthSources — метрики не приходять, верифікація не спрацьовує.
  • Занадто низька чутливість (sensitivity) — аномалії пропускаються.
  • Відсутність rollbackSteps в CD-стадії — при помилці деплой не відкочується.
  • Delegate без достатніх прав — не може виконувати операції в кластері.
  • Ігнорування baseline — якщо baseline побудований на нерепрезентативних даних, ML помилково спрацьовує.

Замовте впровадження Harness у нашої команди. Отримайте консультацію інженера та розрахунок термінів для вашого проекту.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139