Getting Started with Fawkes
Welcome to the Fawkes Internal Developer Platform! This guide will help you understand and implement the GitOps-based approach to platform management and delivery excellence.
Repository Structure
fawkes/
├── docs/ # Documentation and guides
├── platform/ # Platform components
│ ├── iac/ # Infrastructure as Code
│ │ ├── azure/ # Azure-specific resources
│ │ ├── aws/ # AWS-specific resources
│ │ └── gcp/ # GCP-specific resources
│ ├── services/ # Platform services
│ └── tests/ # Test suites and quality checks
└── mkdocs.yml # Documentation configuration
Prerequisites
Before you begin, ensure you have:
- Git: For repository management
- kubectl: For Kubernetes interaction
- Flux or ArgoCD: For GitOps operations
- Cloud CLI: For your chosen cloud provider
1. Clone the Repository
git clone https://github.com/paruff/fawkes.git
cd fawkes
2. Choose Your Implementation Path
Fawkes supports multiple implementation paths based on your cloud provider:
Cloud | Implementation | Documentation |
---|---|---|
Azure | AKS + Flux | Azure Guide |
AWS | EKS + ArgoCD | AWS Guide |
GCP | GKE + Cloud Build | GCP Guide |
3. Infrastructure Deployment
We use a GitOps approach for infrastructure management. Changes are made through pull requests:
-
Create a feature branch:
git checkout -b feature/add-new-service
-
Make changes to infrastructure definitions in
platform/iac/
:# Example service definition apiVersion: apps/v1 kind: Deployment metadata: name: fawkes-service spec: replicas: 3 ...
-
Commit and push changes:
git add . git commit -m "feat: add new service deployment" git push origin feature/add-new-service
-
Create a pull request and wait for CI checks and review
4. Platform Services
Services are deployed automatically via GitOps controllers. To add a new service:
-
Define the service in
platform/services/
:# Example service manifest apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: jenkins spec: source: repoURL: https://github.com/paruff/fawkes.git path: platform/services/jenkins targetRevision: HEAD destination: server: https://kubernetes.default.svc namespace: jenkins
-
Commit and push through the GitOps workflow
5. Verify Deployment
Monitor deployments through:
- GitOps dashboard (ArgoCD/Flux)
- Kubernetes dashboard
- Platform monitoring tools
6. Running Tests
Tests are now located in the platform directory:
cd platform/tests
# Run unit tests
go test ./...
# Run integration tests
make integration-tests
Next Steps
Need Help?
- Check our troubleshooting guide
- Open an issue on GitHub
- Join our community discussions