[Book] [OK!] GitOps Cookbook: 08. Advanced Topics: 8.3 Trigger the Deployment of an Application Automatically (Argo CD Webhooks)
Задача:
Немедленный деплой приложения при изменении в git
Делаю:
2025.12.10
Установка gitea в minikube
Import the Pac-Man manifests repo into Gitea.
GetTea -> New Migration -> GitHub
https://github.com/gitops-cookbook/pacman-kikd-manifests
$ argocd app create pacman-webhook \
--repo http://gitea.192.168.49.2.nip.io/gitea_admin/pacman-kikd-manifests.git \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--path k8s \
--sync-policy auto
REPO -> Settings -> Webhooks -> Add Webhook -> GitTea
// В книге опечатка, д.б. webhook
// Обращаюсь по ingress
• Payload URL: http://argocd.192.168.49.2.nip.io/api/webhook
• Content type: application/json
$ kubectl logs -n argocd -l app.kubernetes.io/name=argocd-server --tail=50 -f
time="2025-12-10T00:03:55Z" level=info msg="Received push event repo: http://gitea.192.168.49.2.nip.io/gitea_admin/pacman-kikd-manifests, revision: main, touchedHead: true"
time="2025-12-10T00:03:55Z" level=info msg="Requested app 'pacman-webhook' refresh"
failed to create fsnotify watcher: too many open files
// FIX: failed to create fsnotify watcher: too many open files
$ sudo sysctl fs.inotify.max_user_instances=8192
$ sudo sysctl fs.inotify.max_user_watches=524288
$ argocd app get pacman-webhook
Name: argocd/pacman-webhook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: https://argocd.example.com/applications/pacman-webhook
Source:
- Repo: http://gitea.192.168.49.2.nip.io/gitea_admin/pacman-kikd-manifests.git
Target:
Path: k8s
SyncWindow: Sync Allowed
Sync Policy: Automated
Sync Status: Synced to (298574a)
Health Status: Healthy
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Namespace default pacman Running Synced namespace/pacman created
Service pacman pacman-kikd Synced Healthy service/pacman-kikd created
apps Deployment default pacman-kikd Synced Healthy deployment.apps/pacman-kikd created
Namespace pacman Synced
$ argocd app diff pacman-webhook
// Заметил неправильный URL для argocd
$ kubectl patch cm argocd-cm -n argocd --type merge -p '{"data":{"url":"http://argocd.192.168.49.2.nip.io"}}'
$ argocd app get pacman-webhook
Name: argocd/pacman-webhook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: http://argocd.192.168.49.2.nip.io/applications/pacman-webhook
Source:
- Repo: http://gitea.192.168.49.2.nip.io/gitea_admin/pacman-kikd-manifests.git
Target:
Path: k8s
SyncWindow: Sync Allowed
Sync Policy: Automated
Sync Status: Synced to (298574a)
Health Status: Healthy
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Namespace default pacman Running Synced namespace/pacman created
Service pacman pacman-kikd Synced Healthy service/pacman-kikd created
apps Deployment default pacman-kikd Synced Healthy deployment.apps/pacman-kikd created
Namespace pacman Synced
В репо в k8s/pacman-deployment.yaml меняю на:
image: quay.io/gitops-cookbook/pacman-kikd:1.2.0
И сразу запускается обновление pod.
$ argocd app delete pacman-webhook