Cluster Sizing:
- Base Minimal Services:
- 50+ Services
- Core, Dashboard, PGR, PT, TL, Billing, Reports, HRMS, etc.
- Telemetry, Infra, Kafka, ES, ZooKeeper, Zuul, nginx, etc.
- 100+ Pods (egov, monitoring, logging, es-cluster, Kafka, backbone)
- K8s Cluster Requirement
- 1 Bastion- t2micro (Gateway) 2GB RAM 1vCore CPU
- 2 k8s Master- t2medium 4 GB RAM 2 vCore CPU
- 6 k8s Nodes with each 16GB RAM and 4 vCore CPUs
OR
- AKS/EKS/GKE Managed Kubernetes Cluster Engine from AWS or Azure or GCP
- 6 k8s Nodes- m4large with each 16GB RAM and 4 vCore CPUs
...
Python based Deployment script that reads the value from the Jinja 2 template and deploys into the cluster.
Each env will have one Jinja Template that will have the definition of services to be deployed, their dependancies like Config, Env, Secrets, DB Credentials, Persistent Volumes, Manifest, Routing Rules, etc..
Cluster/Service Monitoring
- Monitoring
- Prometheus / CloudWatch for node monitoring
- Prometheus for pod level monitoring
- Logging
- Logs are tagged with correlation-id
- Fluent-bit for log scraping
- Kafka for temporary log storage and processing
- Kafka connect to push logs to various sinks
- Elasticsearch [sink] / Kibana for visualizations
- Tracing
- Jaeger for distributed tracing
- Traces are tagged with correlation-id
Mutistate Cluster Orchestration and Management