📘 Проект GitOps с ArgoCD и Helm

Описание проекта: Этот репозиторий содержит инфраструктуру как код (Infrastructure as Code) и конфигурации приложения, необходимые для автоматического развертывания в Kubernetes с использованием GitOps подхода через ArgoCD и Helm чартов.

📌 Обзор

ПараметрЗначение
Тип проектаGitOps
ОркестраторKubernetes
Инструмент GitOpsArgoCD
Метод управления манифестамиHelm
ЦельАвтоматическое развертывание и синхронизация состояния кластера из Git репозитория

🧩 Структура проекта


my-app/                # Пример Helm-чарта
  ├── Chart.yaml         # Описание чарта
  ├── values.yaml        # Конфигурационные параметры
  └── templates/         # Шаблоны Kubernetes манифестов
      ├── deployment.yaml
      └── service.yaml

🚀 Как использовать

1. Установка Minikube (локальный кластер)

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker

2. Установка ArgoCD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.8.4/manifests/install.yaml
kubectl port-forward svc/argocd-server -n argocd 8080:https

3. Авторизация в ArgoCD

argocd login localhost:8080 --insecure
# Используйте логин "admin" и пароль из:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

4. Создание приложения в ArgoCD (через CLI)

argocd app create my-app \
  --repo https://github.com/<ваш-логин>/gitops-demo-repo.git  \
  --path charts/my-app \
  --dest-server https://kubernetes.default.svc  \
  --dest-namespace default \
  --helm-chart my-app \
  --auto-prune \
  --sync-policy automated

5. Через UI ArgoCD

  1. Перейдите по ссылке: https://localhost:8080
  2. Нажмите + New App
  3. Укажите:
  4. Нажмите Create → Sync

🔁 Автоматическая синхронизация

Любые изменения в репозитории будут автоматически применены в кластере:

git add .
git commit -m "Update config"
git push origin main

ArgoCD обнаружит изменения и выполнит синхронизацию.

🛡️ Self-healing

Если состояние кластера будет изменено вручную, например:

kubectl scale deployment my-app --replicas=5

ArgoCD восстановит исходное состояние, соответствующее описанию в репозитории.

🔐 Безопасность

📊 Мониторинг и устранение ошибок

Полезные команды:

argocd app list
argocd app get my-app
argocd app sync my-app
argocd app history my-app
kubectl logs -n argocd 

Возможные ошибки:

ОшибкаПричинаРешение
repository not accessibleНет доступа к репозиториюПроверьте права и тип репозитория
comparison errorКонфликт между кластером и GitВыполните синхронизацию или проверьте манифесты
invalid chart pathНеверный путь до Helm чартаУбедитесь, что структура корректна и есть Chart.yaml

✅ Что вы получаете

🙌 Автор

🪪 dmplastun

📧 dmitrij.plastun@gmail.com

🔗Проект GitOps с ArgoCD и Helm