https://github.com/bwplotka/go-k8sresolver
Kubernetes resolver based on endpoint API (https://kubernetes.io/docs/api-reference/v1.7/#endpoints-v1-core)
https://github.com/bwplotka/go-k8sresolver
dns go golang kubernetes kubernetes-resolver resolver service
Last synced: 10 months ago
JSON representation
Kubernetes resolver based on endpoint API (https://kubernetes.io/docs/api-reference/v1.7/#endpoints-v1-core)
- Host: GitHub
- URL: https://github.com/bwplotka/go-k8sresolver
- Owner: bwplotka
- License: apache-2.0
- Created: 2017-08-16T10:14:56.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-03-19T11:03:24.000Z (almost 8 years ago)
- Last Synced: 2025-02-09T23:16:17.478Z (12 months ago)
- Topics: dns, go, golang, kubernetes, kubernetes-resolver, resolver, service
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NOTE
This project was moved and incorporated by [kedge](https://github.com/improbable-eng/kedge) project and is maintained here: https://github.com/improbable-eng/kedge/tree/master/pkg/resolvers/k8s
Please feel free to add issue to this project if you would like to have standalone library instead for this useful feature.
# k8sresolver
Kubernetes resolver based on [endpoint API](https://kubernetes.io/docs/api-reference/v1.7/#endpoints-v1-core)
Inspired by https://github.com/sercand/kuberesolver but more suitable for our needs.
Features:
* [x] K8s resolver that watches [endpoint API](https://kubernetes.io/docs/api-reference/v1.7/#endpoints-v1-core)
* [x] Different types of auth for kube-apiserver access. (You can run it easily from your local machine as well!)
* [x] URL in common kube-DNS format: `.(|.):`
Still todo:
* [ ] Metrics
* [ ] Fallback to SRV (?)
## Usage
See [example](example/main.go)
```go
resolver, err := k8sresolver.NewFromFlags()
if err != nil {
// handle err.
}
watcher, err := resolver.Resolve(target)
if err != nil {
// handle err.
}
// Wait for next updates.
updates, err := watcher.Next()
if err != nil {
// handle err.
}
```