Skip to content

Commit

Permalink
Autodetect region from ARN. Remove namespace filter.
Browse files Browse the repository at this point in the history
  • Loading branch information
monder committed Dec 23, 2018
1 parent 9285f4b commit 63d6ee1
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 75 deletions.
27 changes: 2 additions & 25 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,25 +1,2 @@

# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
bin

# Test binary, build with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Kubernetes Generated files - skip generated files, except for vendored files

zz_generated.*
!vendor/**/zz_generated.*

# editor and IDE paraphernalia
.idea
*.swp
*.swo
*~
vendor
go.sum
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,8 @@ spec:
containers:
- name: stg-controller
image: monder/service-target-group:latest
env:
- name: AWS_REGION
value: eu-west-1
args:
- -namespaces=default,public
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
Expand Down Expand Up @@ -118,4 +117,3 @@ subjects:
## TODO

* Deregister all targets when kubernetes service is destroyed.
* Make namespace configurable
66 changes: 36 additions & 30 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,51 +1,57 @@
module github.com/monder/service-target-group

require (
github.com/aws/aws-sdk-go v1.15.49
github.com/aws/aws-sdk-go v1.16.11
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fsnotify/fsnotify v1.4.7 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-logr/logr v0.0.0-20180629235805-9fb12b3b21c5 // indirect
github.com/go-logr/zapr v0.0.0-20180713202756-7536572e8d55 // indirect
github.com/gogo/protobuf v1.1.1 // indirect
github.com/go-ini/ini v1.40.0 // indirect
github.com/go-logr/logr v0.1.0 // indirect
github.com/go-logr/zapr v0.1.0 // indirect
github.com/gogo/protobuf v1.2.0 // indirect
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 // indirect
github.com/golang/protobuf v1.2.0 // indirect
github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff // indirect
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect
github.com/googleapis/gnostic v0.2.0 // indirect
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47 // indirect
github.com/hpcloud/tail v1.0.0 // indirect
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f // indirect
github.com/hashicorp/golang-lru v0.5.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/json-iterator/go v1.1.5 // indirect
github.com/jtolds/gls v4.2.1+incompatible // indirect
github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect
github.com/onsi/ginkgo v1.6.0 // indirect
github.com/onsi/gomega v1.4.1 // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/onsi/ginkgo v1.7.0 // indirect
github.com/onsi/gomega v1.4.3 // indirect
github.com/pborman/uuid v1.2.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.8.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/spf13/pflag v1.0.2 // indirect
github.com/prometheus/client_golang v0.9.2 // indirect
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect
github.com/spf13/pflag v1.0.3 // indirect
github.com/stretchr/testify v1.2.2 // indirect
go.uber.org/atomic v1.3.2 // indirect
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.9.1 // indirect
golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac // indirect
golang.org/x/net v0.0.0-20180821023952-922f4815f713 // indirect
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f // indirect
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc // indirect
golang.org/x/text v0.3.0 // indirect
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 // indirect
gopkg.in/fsnotify.v1 v1.4.7 // indirect
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 // indirect
golang.org/x/net v0.0.0-20181220203305-927f97764cc3 // indirect
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 // indirect
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect
golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6 // indirect
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c // indirect
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/yaml.v2 v2.2.1 // indirect
k8s.io/api v0.0.0-20180712090710-2d6f90ab1293
k8s.io/apiextensions-apiserver v0.0.0-20180808065829-408db4a50408 // indirect
k8s.io/apimachinery v0.0.0-20180621070125-103fd098999d
k8s.io/client-go v0.0.0-20180806134042-1f13a808da65 // indirect
k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c // indirect
sigs.k8s.io/controller-runtime v0.1.2
sigs.k8s.io/testing_frameworks v0.0.0-20180419181259-f53464b8b84b // indirect
gopkg.in/yaml.v2 v2.2.2 // indirect
k8s.io/api v0.0.0-20181221193117-173ce66c1e39
k8s.io/apiextensions-apiserver v0.0.0-20181221201254-261a947e2c38 // indirect
k8s.io/apimachinery v0.0.0-20181222072933-b814ad55d7c5
k8s.io/client-go v10.0.0+incompatible // indirect
k8s.io/klog v0.1.0 // indirect
k8s.io/kube-openapi v0.0.0-20181114233023-0317810137be // indirect
sigs.k8s.io/controller-runtime v0.1.9
sigs.k8s.io/testing_frameworks v0.1.1 // indirect
sigs.k8s.io/yaml v1.1.0 // indirect
)
35 changes: 19 additions & 16 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"reflect"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/elbv2"

Expand Down Expand Up @@ -48,10 +49,6 @@ type endpointReconciler struct {
}

func (r *endpointReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error) {
if request.NamespacedName.Namespace != "default" { // TODO
return reconcile.Result{}, nil
}

rss := &corev1.Service{}
err := r.client.Get(context.TODO(), request.NamespacedName, rss)
if errors.IsNotFound(err) {
Expand All @@ -64,6 +61,11 @@ func (r *endpointReconciler) Reconcile(request reconcile.Request) (reconcile.Res
if targetGroupARN == "" { // Skip services that we do not need to register
return reconcile.Result{}, nil
}
parsedARN, err := arn.Parse(targetGroupARN)
if err != nil {
fmt.Println(err.Error())
return reconcile.Result{}, nil
}

rse := &corev1.Endpoints{}
err = r.client.Get(context.TODO(), request.NamespacedName, rse)
Expand All @@ -87,19 +89,18 @@ func (r *endpointReconciler) Reconcile(request reconcile.Request) (reconcile.Res
}

if reflect.DeepEqual(newState, r.managedResources[request.NamespacedName.String()]) {
fmt.Println("equal")
return reconcile.Result{}, nil
}

targetsToDeregister := make([]*elbv2.TargetDescription, 0)
targetsToRegister := make([]*elbv2.TargetDescription, 0)

svc := elbv2.New(session.New())
input := &elbv2.DescribeTargetHealthInput{
svc := elbv2.New(session.Must(session.NewSession(&aws.Config{
Region: aws.String(parsedARN.Region),
})))
result, err := svc.DescribeTargetHealth(&elbv2.DescribeTargetHealthInput{
TargetGroupArn: aws.String(targetGroupARN),
}

result, err := svc.DescribeTargetHealth(input)
})
if err != nil {
fmt.Println(err.Error())
return reconcile.Result{}, nil
Expand Down Expand Up @@ -132,22 +133,24 @@ func (r *endpointReconciler) Reconcile(request reconcile.Request) (reconcile.Res

// Register
if len(targetsToRegister) > 0 {
input2 := &elbv2.RegisterTargetsInput{
_, err = svc.RegisterTargets(&elbv2.RegisterTargetsInput{
TargetGroupArn: aws.String(targetGroupARN),
Targets: targetsToRegister,
})
if err != nil {
fmt.Println(err.Error())
}
_, err = svc.RegisterTargets(input2)
fmt.Println(err)
}

// Deregister
if len(targetsToDeregister) > 0 {
input3 := &elbv2.DeregisterTargetsInput{
_, err = svc.DeregisterTargets(&elbv2.DeregisterTargetsInput{
TargetGroupArn: aws.String(targetGroupARN),
Targets: targetsToDeregister,
})
if err != nil {
fmt.Println(err.Error())
}
_, err = svc.DeregisterTargets(input3)
fmt.Println(err)
}

fmt.Println("---")
Expand Down

0 comments on commit 63d6ee1

Please sign in to comment.