Bỏ qua

football-booking-gitops

GitOps source of truth for the Football Booking platform — manages Kubernetes deployments via ArgoCD + Helm.

Architecture

GitHub Repos (CI)                       This Repo (CD)                  K3s Cluster
─────────────────                       ──────────────                  ───────────
football-booking-backend      push ───▶ envs/production/backend/      ArgoCD sync ──▶ football-booking ns
football-booking-chatbot      push ───▶ envs/production/chatbot/      ArgoCD sync ──▶ football-booking ns
football-booking-go-service   push ───▶ envs/production/go-services/  ArgoCD sync ──▶ football-booking ns

Repository Structure

football-booking-gitops/
├── charts/
│   ├── backend-service/          # Shared Helm chart — NestJS microservices
│   │   ├── Chart.yaml
│   │   ├── values.yaml           # Default values
│   │   └── templates/
│   │       ├── deployment.yaml
│   │       ├── service.yaml
│   │       ├── ingress.yaml
│   │       └── hpa.yaml
│   ├── python-service/           # Shared Helm chart — Python services
│   │   ├── Chart.yaml
│   │   ├── values.yaml
│   │   └── templates/
│   │       ├── deployment.yaml
│   │       ├── service.yaml
│   │       └── hpa.yaml
│   └── go-service/               # Shared Helm chart — Go services
│       ├── Chart.yaml
│       ├── values.yaml
│       └── templates/
│           ├── deployment.yaml
│           ├── service.yaml
│           ├── ingress.yaml
│           └── hpa.yaml
├── envs/
│   └── production/
│       ├── backend/              # One file per NestJS service
│       │   ├── api-gateway.yaml
│       │   ├── user-service.yaml
│       │   ├── field-service.yaml
│       │   ├── booking-service.yaml
│       │   ├── payment-service.yaml
│       │   └── notification-service.yaml
│       ├── chatbot/
│       │   └── chatbot.yaml
│       └── go-services/          # One file per Go service
│           ├── document-worker.yaml
│           ├── availability-engine.yaml
│           ├── analytics-pipeline.yaml
│           └── webhook-receiver.yaml
├── argocd/
│   ├── namespace.yaml            # football-booking namespace
│   ├── applicationset-backend.yaml
│   ├── applicationset-chatbot.yaml
│   └── applicationset-go-services.yaml
└── docs/
    └── argocd-guide.md

Services Overview

Service Port Image Ingress
api-gateway 3000 ghcr.io/ORG/api-gateway ✓ api.football-booking.local
user-service 3001 ghcr.io/ORG/user-service
field-service 3002 ghcr.io/ORG/field-service
booking-service 3003 ghcr.io/ORG/booking-service
payment-service 3004 ghcr.io/ORG/payment-service
notification-service 3005 ghcr.io/ORG/notification-service
chatbot-service 3006 ghcr.io/ORG/chatbot-service ✓ chatbot.football-booking.local
go-document-worker 3010 ghcr.io/ORG/go-document-worker — (Kafka consumer nội bộ)
go-availability-engine 3011 ghcr.io/ORG/go-availability-engine ✓ ws.football-booking.local
go-analytics-pipeline 3012 ghcr.io/ORG/go-analytics-pipeline — (Kafka consumer nội bộ)
go-webhook-receiver 3013 ghcr.io/ORG/go-webhook-receiver ✓ webhooks.football-booking.local

How It Works

  1. Developer pushes code to a service repo (football-booking-backend or football-booking-chatbot)
  2. GitHub Actions CI builds a Docker image and pushes to GHCR with the git SHA as tag
  3. CI commits an image tag update to this repo (envs/production/<service>.yaml)
  4. ArgoCD detects the change and syncs the updated service to the K3s cluster automatically

Quick Reference

# Check ArgoCD sync status
kubectl get applications -n argocd

# Manually trigger sync for a service
argocd app sync api-gateway

# Rollback a service to previous version
git revert <commit>   # in this repo — ArgoCD will auto-sync
git push

# Get initial ArgoCD admin password
kubectl -n argocd get secret argocd-initial-admin-secret \
  -o jsonpath="{.data.password}" | base64 -d
Repo Role
football-booking-backend-k3s NestJS monorepo — 6 microservices
football-booking-chatbot-service-k3s Python chatbot service
football-booking-go-service-k3s Go monorepo — 4 services (document-worker, availability-engine, analytics-pipeline, webhook-receiver)
football-booking-infras Ansible — K3s cluster + stateful infra + ArgoCD provisioning
football-booking-gitops This repo — Helm charts + ArgoCD config