Contributing¶
We welcome contributions! Here's how to get started.
Development Setup¶
-
Fork and clone the repository:
-
Install pre-commit hooks:
-
Install Python dependencies:
-
Run tests:
Project Structure¶
hub-and-spoke-dns-operator/
├── operator/ # Python operator source
│ ├── main.py # Main operator logic
│ ├── providers/ # Cloud DNS provider implementations
│ │ ├── base.py # Abstract base provider
│ │ ├── azure.py # Azure DNS provider
│ │ ├── gcp.py # Google Cloud DNS provider
│ │ └── aws.py # AWS Route53 provider
│ ├── test_main.py # Unit tests
│ ├── Dockerfile # Container image
│ └── requirements.txt # Python dependencies
├── charts/ # Helm chart
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
├── docs/ # Documentation (MkDocs)
└── secrets-injector/ # External secrets integration
Pull Request Process¶
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and ensure tests pass
- Pre-commit hooks will run automatically on
git commit - Push and open a Pull Request against
main
CI Pipeline¶
All PRs trigger:
- Lint & Security Scan — Flake8 linting + Checkov security scanning
- Build & Test — Docker build verification
- Unit Tests — Python test suite
Code of Conduct¶
Be kind, be respectful, and help make this project welcoming for everyone.
License¶
By contributing, you agree that your contributions will be licensed under the MIT License.