Production-like DevOps sandbox project demonstrating modern infrastructure, GitOps delivery, Kubernetes operations, observability, and CI/CD practices.
Task Tracker is a microservice application deployed in Kubernetes using GitOps principles.
The project includes:
- FastAPI backend
- Kafka message queue
- PostgreSQL database
- Kafka consumer service
- Frontend UI
- OpenSearch logging stack
- Fluent Bit log collection
- ArgoCD GitOps delivery
- GitHub Actions CI/CD
- Terraform infrastructure provisioning
- Ansible configuration management
GitHub
│
▼
GitHub Actions
│
▼
Docker Hub
│
▼
ArgoCD
│
▼
Kubernetes Cluster
│
├── Frontend
├── Backend
├── PostgreSQL
├── Kafka
├── Consumer
├── OpenSearch
└── Fluent Bit
| Component | Technology |
|---|---|
| Backend | FastAPI |
| Frontend | HTML / JavaScript |
| Database | PostgreSQL |
| Message Broker | Kafka |
| Consumer | Python |
| Containerization | Docker |
| Orchestration | Kubernetes |
| GitOps | ArgoCD |
| CI/CD | GitHub Actions |
| Infrastructure | Terraform |
| Configuration | Ansible |
| Logging | Fluent Bit |
| Log Storage | OpenSearch |
| Monitoring | Grafana |
| Cloud | Yandex Cloud |
| Environment | Branch | Image Tag |
|---|---|---|
| TEST | develop | test-<commit_sha> |
| PROD | main | prod-<commit_sha> |
- Push to develop.
- Run tests.
- Build Docker images.
- Push images to Docker Hub.
- Update Kustomize image tags.
- ArgoCD detects Git changes.
- Automatic deployment to TEST.
Production deployment:
- Merge develop into main.
- Build production images.
- Push prod tags.
- Update production manifests.
- ArgoCD deploys to PROD.
Application logs are generated in JSON format.
Fluent Bit collects container logs and sends them to OpenSearch.
Logs can be searched using OpenSearch Dashboards.
Example flow:
Application
↓
Container stdout
↓
Fluent Bit
↓
OpenSearch
↓
Dashboards
All Kubernetes manifests are stored in Git.
ArgoCD continuously synchronizes cluster state with repository state.
No manual kubectl apply operations are required.
Infrastructure is provisioned using Terraform.
Server configuration is managed using Ansible.
Public VM IP address is static.
- Separate TEST and PROD environments
- Automatic deployments
- Commit-based image tags
- Centralized logging
- GitOps delivery
- Infrastructure as Code
- Kubernetes workloads
- Kafka event processing
- OpenSearch observability
apps/
ansible/
kustomize/
services/
terraform/
.github/
- Prometheus monitoring
- Grafana dashboards
- Helm charts
- Horizontal Pod Autoscaler
- Alertmanager integration
- Kubernetes autoscaling
Almaz Rakhmatullin