Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Початок роботи з ArgoCD

Якщо у вашому кластері постійно з’являються рандомні правки, зроблені через kubectl edit, а ви вже не пам’ятаєте, чим відрізняється конфігурація на проді від того, що лежить у репозиторії — вам потрібен ArgoCD.

Простими словами: це розумний контролер, який робить ваш Kubernetes-кластер дзеркалом вашого репозиторію. Якщо в Git написано «має бути 3 репліки», а в кластері їх 2 — ArgoCD це виправить.

В основі лежить концепція GitOps. Це підхід, де ви не запускаєте команди в консолі вручну, а описуєте бажаний стан інфраструктури в коді (YAML, Helm, Kustomize). Git стає єдиним джерелом істини, а будь-яка зміна в кластері починається з git commit.

Чому всі обирають ArgoCD?

Важливий момент: не плутайте ArgoCD з CI-інструментами (як-от GitHub Actions). ArgoCD не збирає ваш код і не створює Docker-образи. Його робота починається тоді, коли образ уже лежить у реєстрі, а оновлений маніфест — у Git. Це інструмент доставки (Continuous Delivery).

Швидкий старт в ArgoCD: встановлення та налаштування

Перш ніж ми перейдемо до команд, переконайтеся, що ваш фундамент готовий. Вам знадобляться:

1. Інсталяція ArgoCD

Ми рекомендуємо створювати виділений namespace (ізольований простір). Це дозволяє тримати всі системні ресурси ArgoCD в одному місці й не змішувати їх з вашими бізнес-застосунками.

kubectl create namespace argocd 
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

2. Налаштування доступу

Після встановлення сервіс argocd-server має внутрішній тип ClusterIP. Щоб відкрити панель керування у браузері, оберіть один із наступних варіантів залежно від вашого середовища:

Найшвидший спосіб, який не потребує змін у конфігурації кластера. Ви створюєте прямий тунель зі свого комп’ютера до сервісу ArgoCD.

Команда для запуску:

kubectl port-forward svc/argocd-server -n argocd 8080:443

Адмінка стане доступною за адресою: https://localhost:8080.

Примітка: цей метод працює лише поки запущена команда в терміналі.

Якщо ви використовуєте керований Kubernetes у хмарі або локальний кластер із підтримкою балансувальників (наприклад, MetalLB), ви можете призначити ArgoCD зовнішню IP-адресу.

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

Як дізнатися адресу:

Зачекайте декілька хвилин, поки провайдер виділить IP, і перевірте статус:

kubectl get svc argocd-server -n argocd

Шукайте адресу в колонці EXTERNAL-IP.

Цей метод використовується у продакшені. Він дозволяє налаштувати доступ через зрозуміле ім’я (наприклад, argo.itedu.com) з використанням SSL-сертифікатів.

Приклад маніфесту для Ingress ↓

Створіть файл argocd-ingress.yaml та застосуйте його:

YAML
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
rules:
- host: argocd.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 443

Команда для застосування:

kubectl apply -f argocd-ingress.yaml

3. Авторизація: де взяти пароль?

ArgoCD при першому запуску сам генерує пароль для логіна admin. Це робиться для того, щоб ваш щойно встановлений інструмент не стояв відкритим для всіх.

Дістати пароль можна однією командою:

argocd admin initial-password -n argocd

Майте на увазі: цей пароль лише тимчасовий. Як тільки ви залогінилися, змініть його через команду:

argocd account update-password

Потім видаліть старий:

argocd-initial-admin-secret

Деплой першого застосунку

Для прикладу ми використаємо стандартний застосунок Guestbook із репозиторію розробників ArgoCD. Це допоможе зрозуміти механіку без необхідності писати власні маніфести на старті.

Крок 1. Створення об’єкта Application

Application — це кастомний ресурс Kubernetes (CRD), який каже ArgoCD: «Стеж за цією папкою в цьому репозиторії та синхронізуй її з цим кластером».

Виконайте команду для створення:

argocd app create guestbook \
--repo https://github.com/argoproj/argocd-example-apps.git \
--path guestbook \
--dest-server https://kubernetes.default.svc \
--dest-namespace default

Крок 2. Перевірка статусу

Відразу після створення застосунок матиме статус OutOfSync. Це абсолютно нормальна ситуація для першого запуску.

Що це означає: ArgoCD успішно прочитав маніфести в Git, але побачив, що в кластері Kubernetes ще немає відповідних об’єктів. Тобто бажаний стан (Git) не збігається з реальним (кластер).

Перевірити статус можна командою:

argocd app get guestbook

Крок 3. Синхронізація

Щоб ArgoCD нарешті створив усі ресурси в кластері, потрібно виконати синхронізацію:

argocd app sync guestbook

Що відбудеться після натискання Enter?

Коли процес завершиться, статус зміниться на Synced (конфігурації збігаються) та Healthy (всі поди успішно запустилися і пройшли перевірки). Тепер ваш перший застосунок працює під повним контролем GitOps.

Замість висновків

ArgoCD значно спрощує життя, але на реальних проєктах ви обов’язково зіткнетеся з кількома нюансами, до яких краще підготуватися заздалегідь:

  1. Відсутність вбудованих ролбеків за метриками: ArgoCD синхронізує маніфести. Якщо ви задеплоїли кривий код, який успішно запустився (стан Running), але при цьому кладе базу або видає 500-ті помилки — ArgoCD сам його не відкотить. Для автоматичних ролбеків на основі SLO вам знадобиться додатковий інструмент, наприклад Argo Rollouts.
  2. Масштабування та мультикластерність: коли кількість кластерів зростає до десятків, керування ними через один екземпляр ArgoCD стає складним. Виникає навантаження на repo-server та питання до безпеки доступів.
  3. Початкове розгортання інфраструктури: хто деплоїть сам ArgoCD? Зазвичай для цього використовують окремі скрипти або Helm, щоб підняти базову інфраструктуру, яка вже потім почне тягнути все інше через GitOps.
  4. Дисципліна в Git: тепер ваш репозиторій — це «червона кнопка». Будь-який випадковий комміт у гілку, яку моніторить ArgoCD, миттєво полетить у кластер. Це вимагає суворого процесу рев’ю та тестування маніфестів.

Бажаємо успіхів!

Exit mobile version