Continuous Integration
Автоматична збірка та тестування коду при кожному коміті. Забезпечує раннє виявлення проблем та швидкий feedback loop для розробників.
Комплексний посібник з DevOps: CI/CD pipelines, контейнеризація Docker, оркестрація Kubernetes, моніторинг та інфраструктура як код (IaC).
DevOps — культура, практики та інструменти, що об'єднують розробку (Development) та операції (Operations) для прискорення доставки програмного забезпечення. Cloud Native — підхід до побудови та запуску додатків, що використовує переваги хмарних обчислень.
Автоматична збірка та тестування коду при кожному коміті. Забезпечує раннє виявлення проблем та швидкий feedback loop для розробників.
Автоматична доставка коду в production-like середовища. Деплой стає рутинною, передбачуваною операцією, а не стресовою подією.
Управління інфраструктурою через конфігураційні файли. Terraform, Ansible, Pulumi дозволяють версіонувати та відтворювати інфраструктуру.
Типовий pipeline складається з кількох етапів, кожен з яких має чіткий контракт входу/виходу та автоматичні gates для якості.
Git як єдине джерело правди. Всі зміни в інфраструктурі йдуть через pull requests. ArgoCD або Flux автоматично синхронізують стан кластера з Git-репозиторієм. Це дає повну історію змін та можливість швидкого відкату.
Два ідентичні середовища: blue (поточне) та green (нове). Нову версію розгортають на green, тестують, потім перемикають трафік. При проблемах — миттєвий rollback перемиканням назад.
Розрахунок необхідних ресурсів для кластера K8s залежно від навантаження, реплік та резервування для відмовостійкості.
Декларативне описання інфраструктури. Маніфести YAML визначають бажаний стан, а Kubernetes controllers постійно прагнуть його досягти.
# deployment.yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: web-app
+ namespace: production
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ app: web-app
+ template:
+ metadata:
+ labels:
+ app: web-app
+ spec:
+ containers:
+ - name: app
+ image: registry/app:v1.2.3
+ ports:
+ - containerPort: 8080
+ resources:
+ requests:
+ memory: "256Mi"
+ cpu: "250m"
+ limits:
+ memory: "512Mi"
+ cpu: "500m"
+ livenessProbe:
+ httpGet:
+ path: /health
+ port: 8080
+ initialDelaySeconds: 10
+ periodSeconds: 5
# service-ingress.yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: web-app-service
+spec:
+ selector:
+ app: web-app
+ ports:
+ - port: 80
+ targetPort: 8080
+ type: ClusterIP
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: web-app-ingress
+ annotations:
+ cert-manager.io/cluster-issuer: "letsencrypt"
+spec:
+ tls:
+ - hosts:
+ - app.example.com
+ secretName: app-tls
+ rules:
+ - host: app.example.com
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: web-app-service
+ port:
+ number: 80
Control Plane керує станом кластера, Worker Nodes виконують контейнеризовані додатки. Розуміння компонентів критично для troubleshooting та оптимізації.
| Компонент | Роль | Висока доступність |
|---|---|---|
| API Server | Frontend для кластера, обробка REST запитів | Load balancer перед декількома інстансами |
| etcd | Розподілене сховище стану кластера | 3+ nodes, quorum (n/2)+1 |
| Scheduler | Призначення подів на вузли | Leader election, standby instances |
| Controller Manager | Підтримка бажаного стану (reconciliation loop) | Leader election |
| kubelet | Агент на кожному вузлі, управління подами | Самовідновлення через systemd |
Linux, Bash, Docker basics, CI/CD configuration. Розуміння cloud концепцій.
Kubernetes administration, Terraform, monitoring (Prometheus/Grafana). AWS/GCP/Azure certified.
Architecture design, cost optimization, security hardening. Custom operators, service mesh (Istio/Linkerd).
Стратегія, культура, SLO/SLI, chaos engineering, incident management.
Docker — технологія контейнеризації для упаковки та запуску додатків. Працює на одному хості.
Kubernetes — оркестратор, що управляє багатьма контейнерами на багатьох хостах:
Helm — package manager для Kubernetes. Дозволяє:
Chart — пакет, що містить всі ресурси K8s для додатку.
Infrastructure layer для управління service-to-service комунікаціями:
Sidecar proxy (Envoy) інжектується в кожен pod.
Метрики: Prometheus + Grafana для збору та візуалізації.
Логи: EFK (Elasticsearch, Fluentd, Kibana) або Loki + Grafana.
Трейсинг: Jaeger або Tempo для distributed tracing.
Alerts: Alertmanager для сповіщень (PagerDuty, Slack).
Golden signals: Latency, Traffic, Errors, Saturation.
CNCF сертифіковані дистрибутиви гарантують portability маніфестів.
Найменша розгортувана одиниця в K8s. Може містити декілька контейнерів, що ділять мережу та сховище. Зазвичай 1 контейнер = 1 pod.
Deployment декларативно управляє ReplicaSet, який гарантує задану кількість реплік pod. Забезпечує rolling updates та rollback.
Абстракція для доступу до групи pod. Types: ClusterIP (внутрішній), NodePort (зовнішній через порт вузла), LoadBalancer (cloud LB).
ConfigMap для неконфіденційних даних (налаштування). Secret для паролів, токенів (base64 encoded, але не encrypted за замовчуванням).
Абстракція сховища в K8s. PV — ресурс кластера, PVC — запит на використання. Підтримує NFS, cloud disks (EBS, GCE PD).
Віртуальний кластер всередині фізичного. Використовується для ізоляції середовищ (dev, staging, production) та multi-tenancy.