Contributing to NTN K8s Operators
July 31, 2026 · View on GitHub
Thank you for your interest in contributing!
Development Setup
# Prerequisites: Go 1.26.5+, kubebuilder v4.13+, kubectl, Kind
# Build & Test
make generate # Generate DeepCopy methods
make manifests # Generate CRD, RBAC, and webhook YAML
make lint # Run golangci-lint
make test # Unit + envtest tests
make test-e2e # E2E tests on Kind cluster
make docs # Generate API reference from CRDs
make ko-build # Build container image with ko (local)
CRD Design Principles
- Declarative — describe desired state, controller reconciles
- Provider-agnostic — same CRD works with different NTN backends
- CEL-validated — CRD-level validation without webhook infrastructure
- Observable — custom Prometheus metrics for all domain events
- GitOps-ready — all config is YAML, ArgoCD/Flux friendly
Architecture Decisions
Architecture decisions are recorded in docs/adr/, the single authoritative source for what each decision is, its status, and what supersedes it. Read the index before proposing or changing a design. Follow docs/adr/ADR_STYLE_GUIDE.md when adding or amending an ADR, and run make adr-lint to validate.
Pull Request Guidelines
- Run
make lint && make testbefore opening a PR - Follow existing code style (enforced by golangci-lint)
- Add tests for new features (target ≥80% coverage)
- Update
docs/api-reference.mdif CRD types change (make docs) - Update
CHANGELOG.mdwith your changes