external-dns/docs/project-structure.md
2017-02-21 16:31:46 +01:00

65 lines
1.2 KiB
Markdown

## Development specifications
Proposal regarding the project structure and related tools
### How to run
```
external-dns --in-cluster=false --dnsprovider=aws --source=ingress --source=service
```
### Project structure
```
./main.go
./config - store configurations, flag parsing
config.go
./controller - main controlling loop
controller.go
./plan/
plan.go - implements the logic for managing records
./kubernetes/
manager.go - provides watching capabilities + clientset
./dnsprovider/ - dns providers
aws.go
google.go
fake.go
dnsprovider.go - interface
./source/ - list of sources
fake.go
ingress.go
service.go
source.go - interface
```
### Vendoring tool
- glide - **to be used**
- alternatives: govendor, godep
### Dependencies
#### Logging
- logrus - **to be used**
- alternatives: uber-go/zap, glog
#### Flags
- spf13/pflag - **to be used**
- alternatives - kingpin, jessevdk/go-flags
#### Clients
- k8s.io/client-go
- aws-sdk-go
- google.golang.org/api/dns/v1
### Build
- Makefile - **to be used**
- alternatives: bazel.io
### CI/CD
- Travis CI - https://github.com/kubernetes-incubator/external-dns/issues/9