🚀 FreeLeaps DevOps Learning Path for Junior Engineers
Production-Ready Kubernetes & DevOps Documentation
Your gateway to understanding our actual infrastructure and becoming a DevOps expert
📋 Table of Contents
- 🎯 Quick Start Guide
- 🏗️ Your Production Infrastructure
- 📚 Core Learning Materials
- 🔧 Practical Exercises
- ⚡ Essential Commands
- 🎓 Learning Path
- 🔍 Production Troubleshooting
- 📖 Additional Resources
🎯 Quick Start Guide
🚀 First Day Checklist
- Access your production cluster:
kubectl config use-context your-cluster - Explore the management UI: RabbitMQ Management UI
- Check ArgoCD: Visit
https://argo.mathmast.com - Review monitoring: Access Grafana dashboards
- Understand your apps: Check
freeleaps-devops-reconcilerstatus
🔑 Essential Access Points
# Your production cluster access
kubectl config get-contexts
kubectl get nodes -o wide
# Your actual services
kubectl get svc -A | grep -E "(rabbitmq|argocd|jenkins|gitea)"
# Your actual namespaces
kubectl get namespaces | grep freeleaps
🏗️ Your Production Infrastructure
🌐 Production Domains & Services
| Service | Production URL | Purpose | Access |
|---|---|---|---|
| ArgoCD | https://argo.mathmast.com |
GitOps deployment | Web UI |
| Gitea | https://gitea.freeleaps.mathmast.com |
Git repository | Web UI |
| Jenkins | http://jenkins.freeleaps.mathmast.com |
CI/CD pipelines | Web UI (Internal access only) |
| RabbitMQ | http://rabbitmq:15672 |
Message broker | Management UI |
| Grafana | https://grafana.mathmast.com |
Monitoring | Dashboards |
🔧 Production Architecture
┌─────────────────────────────────────────────────────────────┐
│ PRODUCTION INFRASTRUCTURE │
├─────────────────────────────────────────────────────────────┤
│ Azure Load Balancer (4.155.160.32) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Ingress-NGINX │ │ cert-manager │ │ ArgoCD │ │
│ │ Controller │ │ (Let's Encrypt)│ │ (GitOps) │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ RabbitMQ │ │ Jenkins │ │ Gitea │ │
│ │ (Message Q) │ │ (CI/CD) │ │ (Git Repo) │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ freeleaps- │ │ freeleaps- │ │ freeleaps- │ │
│ │ devops- │ │ apps │ │ monitoring │ │
│ │ reconciler │ │ (Your Apps) │ │ (Metrics) │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
📊 Production Namespaces
# Your actual namespaces
freeleaps-alpha # Alpha environment
freeleaps-prod # Production environment
freeleaps-devops-system # DevOps tools
freeleaps-controls-system # Control plane
freeleaps-monitoring-system # Monitoring stack
📚 Core Learning Materials
🎓 Phase 1: Kubernetes Fundamentals
-
Kubernetes Core Concepts Guide - Start here!
- Production Connection: Your actual pods, services, and deployments
- Real Examples: Based on your
freeleaps-devops-reconcilerdeployment - Hands-on: Practice with your actual cluster
-
PVC Deep Dive Guide - Storage fundamentals
- Production Connection: Your Azure disk storage classes
- Real Examples: How your apps use persistent storage
- Troubleshooting: Common storage issues in your environment
🔧 Phase 2: DevOps Infrastructure
-
Custom Resources & Operators Guide - Advanced concepts
- Production Connection: Your
freeleaps-devops-reconcileroperator - Real Examples: How your CRDs work in production
- Architecture: Understanding your operator pattern
- Production Connection: Your
-
Reconciler Architecture Deep Dive - Your core system
- Production Connection: Your actual reconciler deployment
- Real Examples: How your DevOps automation works
- Troubleshooting: Common reconciler issues
-
Reconciler Framework Analysis - Technical deep dive
- Production Connection: Your Python/Kopf operator framework
- Real Examples: Code analysis from your actual implementation
- Best Practices: How to improve your reconciler
🌐 Phase 3: Networking & Ingress
-
Ingress Setup & Redirects Guide - Web traffic management
- Production Connection: Your actual ingress controllers
- Real Examples: How your domains are configured
- Troubleshooting: Common ingress issues
-
Current Ingress Analysis - Your actual setup
- Production Connection: Your real ingress configurations
- Real Examples: Your actual domain routing
- Monitoring: How to check ingress health
📨 Phase 4: Messaging & Communication
- RabbitMQ Management Analysis - Message broker
- Production Connection: Your actual RabbitMQ deployment
- Real Examples: Your message queues and exchanges
- Management UI: How to use the built-in management interface
🗄️ Phase 4.5: Database Management
- PostgreSQL & Gitea Integration Guide - Database operations
- Production Connection: Your actual PostgreSQL deployments (Alpha vs Production)
- Real Examples: How Gitea connects to PostgreSQL in your environments
- Data Access: How to access and manage your Gitea database
- Monitoring: Database health checks and performance monitoring
🚀 Phase 5: Operations & Deployment
-
Kubernetes Bootstrap Guide - Cluster setup
- Production Connection: How your cluster was built
- Real Examples: Your actual bootstrap process
- Maintenance: How to maintain your cluster
-
Azure K8s Node Addition Runbook - Scaling
- Production Connection: How to add nodes to your cluster
- Real Examples: Your actual node addition process
- Automation: Scripts for node management
🔧 Practical Exercises
🎯 Exercise 1: Explore Your Production Cluster
# 1. Connect to your cluster
kubectl config use-context your-production-cluster
# 2. Explore your namespaces
kubectl get namespaces | grep freeleaps
# 3. Check your actual deployments
kubectl get deployments -A | grep freeleaps
# 4. Monitor your reconciler
kubectl logs -f deployment/freeleaps-devops-reconciler -n freeleaps-devops-system
🎯 Exercise 2: RabbitMQ Management UI
# 1. Port forward to RabbitMQ management UI
kubectl port-forward svc/rabbitmq-headless -n freeleaps-alpha 15672:15672
# 2. Access the UI: http://localhost:15672
# Username: user
# Password: NjlhHFvnDuC7K0ir
# 3. Explore your queues:
# - freeleaps.devops.reconciler.queue
# - freeleaps.devops.reconciler.input
🎯 Exercise 3: ArgoCD GitOps
# 1. Access ArgoCD: https://argo.mathmast.com
# 2. Explore your applications:
# - freeleaps-devops-reconciler
# - freeleaps-apps
# - monitoring stack
# 3. Check deployment status
kubectl get applications -n argocd
🎯 Exercise 4: Monitor Your Infrastructure
# 1. Check cluster health
kubectl get nodes -o wide
# 2. Monitor resource usage
kubectl top nodes
kubectl top pods -A
# 3. Check ingress status
kubectl get ingress -A
⚡ Essential Commands
🔍 Production Monitoring
# Your cluster health
kubectl get nodes -o wide
kubectl get pods -A --field-selector=status.phase!=Running
# Your services
kubectl get svc -A | grep -E "(rabbitmq|argocd|jenkins|gitea)"
# Your reconciler status
kubectl get deployment freeleaps-devops-reconciler -n freeleaps-devops-system
kubectl logs -f deployment/freeleaps-devops-reconciler -n freeleaps-devops-system
🔧 Troubleshooting
# Check reconciler health
kubectl describe deployment freeleaps-devops-reconciler -n freeleaps-devops-system
# Check RabbitMQ status
kubectl get pods -n freeleaps-alpha | grep rabbitmq
kubectl logs -f deployment/rabbitmq -n freeleaps-alpha
# Check ingress issues
kubectl describe ingress -A
kubectl get events -A --sort-by='.lastTimestamp'
📊 Resource Management
# Monitor resource usage
kubectl top nodes
kubectl top pods -A
# Check storage
kubectl get pvc -A
kubectl get pv
# Check networking
kubectl get svc -A
kubectl get endpoints -A
🎓 Learning Path
📅 Week 1: Foundations
- Day 1-2: Kubernetes Core Concepts
- Day 3-4: PVC Deep Dive
- Day 5: Practice exercises with your actual cluster
📅 Week 2: DevOps Infrastructure
- Day 1-2: Custom Resources & Operators
- Day 3-4: Reconciler Architecture
- Day 5: Reconciler Framework Analysis
📅 Week 3: Networking & Communication
- Day 1-2: Ingress Setup & Redirects
- Day 3: Current Ingress Analysis
- Day 4-5: RabbitMQ Management
📅 Week 4: Operations & Production
- Day 1-2: Kubernetes Bootstrap
- Day 3-4: Azure Node Addition
- Day 5: Production troubleshooting and monitoring
🔍 Production Troubleshooting
🚨 Common Issues & Solutions
1. Reconciler Not Working
# Check reconciler status
kubectl get deployment freeleaps-devops-reconciler -n freeleaps-devops-system
kubectl logs -f deployment/freeleaps-devops-reconciler -n freeleaps-devops-system
# Check RabbitMQ connection
kubectl exec -it deployment/rabbitmq -n freeleaps-alpha -- rabbitmqctl list_connections
2. Ingress Issues
# Check ingress controller
kubectl get pods -n ingress-nginx
kubectl logs -f deployment/ingress-nginx-controller -n ingress-nginx
# Check certificates
kubectl get certificates -A
kubectl describe certificate -n your-namespace
3. Storage Problems
# Check PVC status
kubectl get pvc -A
kubectl describe pvc your-pvc-name -n your-namespace
# Check storage classes
kubectl get storageclass
📊 Monitoring & Alerts
Key Metrics to Watch
- Cluster health: Node status, pod restarts
- Resource usage: CPU, memory, disk
- Network: Ingress traffic, service connectivity
- Applications: Reconciler health, RabbitMQ queues
Alerting Setup
# Check Prometheus targets
kubectl get targets -n freeleaps-monitoring-system
# Check Grafana dashboards
# Access: https://grafana.mathmast.com
📖 Additional Resources
🔗 Official Documentation
- Kubernetes Documentation - Official K8s docs
- ArgoCD Documentation - GitOps platform
- RabbitMQ Documentation - Message broker
- Helm Documentation - Package manager
🎥 Video Resources
- Kubernetes Crash Course: TechWorld with Nana
- ArgoCD Tutorial: ArgoCD Official
- RabbitMQ Basics: RabbitMQ Official
📚 Books
- "Kubernetes in Action" by Marko Lukša
- "GitOps and Kubernetes" by Billy Yuen
- "RabbitMQ in Depth" by Gavin M. Roy
🛠️ Tools & Utilities
🎯 Next Steps
🚀 Immediate Actions
- Set up your development environment with kubectl and helm
- Access your production cluster and explore the resources
- Complete the practical exercises in this guide
- Join the monitoring dashboards and understand the metrics
📈 Career Development
- Get certified: CKA (Certified Kubernetes Administrator)
- Contribute: Help improve the reconciler and infrastructure
- Learn: Stay updated with latest K8s and DevOps practices
- Share: Document your learnings and share with the team
🤝 Team Collaboration
- Code reviews: Review reconciler changes
- Documentation: Improve this guide based on your experience
- Mentoring: Help other junior engineers
- Innovation: Suggest improvements to the infrastructure
📞 Support & Contact
🆘 Getting Help
- Team Slack: #devops-support channel
- Documentation: This guide and linked resources
- Code Reviews: GitHub pull requests
- Pair Programming: Schedule sessions with senior engineers
📝 Feedback
- Documentation: Create issues for improvements
- Process: Suggest workflow optimizations
- Tools: Recommend new tools or improvements
🎉 Welcome to the FreeLeaps DevOps team! You're now part of a production infrastructure that serves real users. Take ownership, learn continuously, and help us build amazing things!
Last updated: $(date)
Maintained by: FreeLeaps DevOps Team