Skip to content

Commit

Permalink
Dockerize registry and proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
Kaley authored and josephgorse committed Aug 24, 2016
1 parent c5f816e commit a31c864
Show file tree
Hide file tree
Showing 14 changed files with 119 additions and 65 deletions.
47 changes: 28 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
ORGANIZATION = RackHD
PROJECT = neighborhood-manager
PROXY = rackhd
RACKHD = rackhd
REGISTRY = registry


TTY = $(shell if [ -t 0 ]; then echo "-ti"; fi)

DOCKER_DIR = /go/src/github.com/${ORGANIZATION}/${PROJECT}
DOCKER_IMAGE = rackhd/golang:1.7.0-wheezy
DOCKER_CMD = docker run --rm -v ${PWD}:${DOCKER_DIR} ${TTY} -w ${DOCKER_DIR} ${DOCKER_IMAGE}


# variable definitions
COMMITHASH = $(shell git describe --tags --always --dirty)
BUILDDATE = $(shell date -u)
Expand All @@ -19,10 +17,8 @@ GOVERSION = $(shell go version)
OSARCH = $(shell uname -sm)
RELEASEVERSION = 0.1



#Flags to pass to main.go
PROXYFLAGS = -ldflags "-X 'main.binaryName=${PROXY}' \
RACKHDFLAGS = -ldflags "-X 'main.binaryName=${RACKHD}' \
-X 'main.buildDate=${BUILDDATE}' \
-X 'main.buildUser=${BUILDER}' \
-X 'main.commitHash=${COMMITHASH}' \
Expand All @@ -43,7 +39,7 @@ SLOWTEST = 10

.PHONY: shell deps deps-local build build-local lint lint-local test test-local release

default: deps test build
default: deps test

coveralls:
@go get github.com/mattn/goveralls
Expand All @@ -60,9 +56,19 @@ consul-shell:

clean:
@${DOCKER_CMD} make clean-local
@-docker-compose -f ${RACKHD}/docker-compose-${RACKHD}.yaml kill
@-docker-compose -f ${RACKHD}/docker-compose-${RACKHD}.yaml rm -f
@-docker rmi rackhd/${RACKHD}
@-docker rmi rackhd/endpoint
@-docker-compose -f ${REGISTRY}/docker-compose-${REGISTRY}.yaml kill
@-docker-compose -f ${REGISTRY}/docker-compose-${REGISTRY}.yaml rm -f
@-docker rmi rackhd/${REGISTRY}
@-docker rmi rackhd/ssdpspoofer
@-docker rm rackhd/consul:server
@-docker rm rackhd/consul:client

clean-local:
@rm -rf bin vendor
@rm -rf ${RACKHD}/bin ${REGISTRY}/bin vendor

deps:
@${DOCKER_CMD} make deps-local
Expand All @@ -79,21 +85,22 @@ build-proxy:
@${DOCKER_CMD} make build-proxy-local

build-proxy-local: lint-local
@go build -o bin/${PROXY} ${PROXYFLAGS} rackhd/cmd/rackhd/*.go
@go build -o bin/endpoint rackhd/cmd/utils/*.go
@go build -o ${RACKHD}/bin/${RACKHD} ${RACKHDFLAGS} rackhd/cmd/rackhd/*.go
@go build -o rackhd/bin/endpoint rackhd/cmd/utils/*.go

build-reg:
@${DOCKER_CMD} make build-reg-local

build-reg-local: lint-local
@go build -o bin/${REGISTRY} ${REGFLAGS} registry/cmd/registry/*.go
@go build -o registry/cmd/ssdpspoofer/bin/ssdpspoofer registry/cmd/ssdpspoofer/*.go
@go build -o ${REGISTRY}/bin/${REGISTRY} ${REGFLAGS} registry/cmd/registry/*.go
@go build -o registry/bin/ssdpspoofer registry/cmd/ssdpspoofer/*.go

lint:
@${DOCKER_CMD} make lint-local

lint-local:
@gometalinter --vendor --fast --disable=dupl --disable=gotype --skip=grpc ./...

test:
@make test-proxy
@make test-reg
Expand All @@ -103,7 +110,7 @@ test-proxy:
@make build-proxy

test-proxy-local: lint-local
@ginkgo -r -race -trace -cover -randomizeAllSpecs --slowSpecThreshold=${SLOWTEST} ${PROXY}
@ginkgo -r -race -trace -cover -randomizeAllSpecs ${RACKHD}

test-reg:
@${DOCKER_CMD} make test-reg-local
Expand All @@ -113,11 +120,13 @@ test-reg-local: lint-local
@ginkgo -r -race -trace -cover -randomizeAllSpecs --slowSpecThreshold=${SLOWTEST} ${REGISTRY}

release: deps build
@docker build -t rackhd/${PROXY} rackhd
@docker build -t rackhd/endpoint rackhd/cmd/utils/
@docker build -t rackhd/${REGISTRY} registry
@docker build -t rackhd/ssdpspoofer registry/cmd/ssdpspoofer/
@docker build -t rackhd/${RACKHD} -f ${RACKHD}/Dockerfile-${RACKHD} ${RACKHD}/
@docker build -t rackhd/endpoint -f ${RACKHD}/Dockerfile-endpoint ${RACKHD}/
@docker build -t rackhd/${REGISTRY} -f ${REGISTRY}/Dockerfile-${REGISTRY} ${REGISTRY}/
@docker build -t rackhd/ssdpspoofer -f ${REGISTRY}/Dockerfile-ssdp ${REGISTRY}/

run-proxy: release
@docker-compose -f ${RACKHD}/docker-compose-${RACKHD}.yaml up --force-recreate

run: release
@docker-compose up --force-recreate
run-reg: release
@docker-compose -f ${REGISTRY}/docker-compose-${REGISTRY}.yaml up --force-recreate
6 changes: 6 additions & 0 deletions libreg/registry/consul/consul.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,3 +254,9 @@ func (s *Consul) getQueryOptions(options *registry.QueryOptions) *api.QueryOptio
}
return ops
}

// Leader returns the cluster leader
func (s *Consul) Leader() (string, error) {
status := s.client.Status()
return status.Leader()
}
5 changes: 5 additions & 0 deletions libreg/registry/mock/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,8 @@ func (m *Mock) Node(node string, options *registry.QueryOptions) (*registry.Cata
}
return &catalogNode, nil
}

// Leader returns the cluster leader
func (m *Mock) Leader() (string, error) {
return "", nil
}
3 changes: 3 additions & 0 deletions libreg/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ type Registry interface {

// Node lists the services provided by a given node
Node(node string, options *QueryOptions) (*CatalogNode, error)

// Leader returns the leader of the cluster
Leader() (string, error)
}

// Node is ...
Expand Down
5 changes: 0 additions & 5 deletions rackhd/Dockerfile

This file was deleted.

5 changes: 5 additions & 0 deletions rackhd/Dockerfile-endpoint
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM rackhd/golang:1.7.0-wheezy

ADD ./bin/endpoint /go/bin/endpoint

ENTRYPOINT ["/go/bin/endpoint"]
5 changes: 5 additions & 0 deletions rackhd/Dockerfile-rackhd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM rackhd/golang:1.7.0-wheezy

ADD ./bin/rackhd /go/bin/rackhd

ENTRYPOINT ["/go/bin/rackhd"]
5 changes: 0 additions & 5 deletions rackhd/cmd/utils/Dockerfile

This file was deleted.

17 changes: 15 additions & 2 deletions rackhd/cmd/utils/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package api

import (
"encoding/json"
"errors"
"fmt"
"io"
"log"
Expand Down Expand Up @@ -52,7 +53,15 @@ func NewServer(endpointIP, serviceName, datacenter, backendAddr string, backend
s.Address = endpointIP
s.Port = endpointPort

return s, nil
for i := 0; i < 5; i++ {
_, err = s.Store.Leader()
if err == nil {
return s, nil
}
time.Sleep(5 * time.Second)
}

return nil, errors.New("Unable to find backend cluster")
}

// HandleTest is....well a test
Expand Down Expand Up @@ -95,7 +104,7 @@ func (e *Server) HandleServeObject(w http.ResponseWriter, r *http.Request) {
// Register is...
func (e *Server) Register(datacenter, serviceName string) {
n := fmt.Sprintf("%d", rand.Int())
_ = e.Store.Register(&regStore.CatalogRegistration{
err := e.Store.Register(&regStore.CatalogRegistration{
Node: n,
Address: e.Address,
Datacenter: datacenter,
Expand All @@ -115,4 +124,8 @@ func (e *Server) Register(datacenter, serviceName string) {
},
}, nil)

if err != nil {
log.Printf("Error registering serviceName: %s\n", err)
}

}
15 changes: 4 additions & 11 deletions rackhd/cmd/utils/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var backendAddr, endpointAddr, serviceName string
// init takes in configurable flags
func init() {
flag.StringVar(&backendAddr, "backend-address", "127.0.0.1:8500", "address:port of the backend store")
flag.StringVar(&endpointAddr, "endpoint-address", "http://0.0.0.0:10001", "http://address:port of the endpoint server")
flag.StringVar(&endpointAddr, "endpoint-address", "http://0.0.0.0:10002", "http://address:port of the endpoint server")
flag.StringVar(&serviceName, "service-name", "RackHD-service:api:2.0:TEST", "The service being spoofed")
}

Expand All @@ -45,14 +45,6 @@ func extractIPPort(location string) (string, int, error) {
// Main
func main() {

log.Println(binaryName)
log.Println(" Release version: " + releaseVersion)
log.Println(" Built On: " + buildDate)
log.Println(" Build By: " + buildUser)
log.Println(" Commit Hash: " + commitHash)
log.Println(" Go version: " + goVersion)
log.Println(" OS/Arch: " + osArch)

flag.Parse()

// Parse proxyAddr
Expand All @@ -62,11 +54,12 @@ func main() {
}

// Proxy server configuration
h, err := api.NewServer(endpointIP, serviceName, "dc1", backendAddr, registry.CONSUL, endpointPort)
h, err := api.NewServer(endpointIP, serviceName, "dc-docker", backendAddr, registry.CONSUL, endpointPort)
if err != nil {
log.Fatalf("Endpoint server configuration failed: %s\n", err)
}
h.Register("dc1", serviceName)

h.Register("dc-docker", serviceName)

fmt.Printf("Endpoint is served on => %s:%d\n", h.Address, h.Port)

Expand Down
59 changes: 40 additions & 19 deletions rackhd/docker-compose.yaml → rackhd/docker-compose-rackhd.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#NM_RACKHD
#neighborhood-manager
#rackhd

version: "2"

Expand All @@ -7,29 +8,31 @@ services:
image: "rackhd/consul:server"
container_name: "consulserver"
hostname: "consulserver"
ports:
- "8300:8300"
- "8301:8301"
- "8301:8301/udp"
- "8302:8302"
- "8302:8302/udp"
- "8400:8400"
- "8500:8500"
- "8600:8600"
- "8600:8600/udp"
expose:
- "8300"
- "8301"
- "8301/udp"
- "8302"
- "8302/udp"
- "8400"
- "8500"
- "8600"
- "8600/udp"
command: "agent -config-dir /etc/consul.d/server.json -bootstrap"
nm-rackhd-proxy:
build: .
build:
context: .
dockerfile: Dockerfile-proxy
image: "rackhd/rackhd:latest"
container_name: "rackhd"
hostname: "rackhd"
links:
- consulclient
ports:
- "10001:10001"
expose:
- "10001"
- "10001/udp"
- "10002"
- "10002/udp"
- "8300"
- "8301"
- "8301/udp"
Expand All @@ -40,24 +43,42 @@ services:
- "8500/udp"
- "8600"
- "8600/udp"
command: "-proxy-address=http://localhost:10001 -backend-address=consulclient:8500"
command: "-proxy-address=http://0.0.0.0:10001 -backend-address=consulclient:8500 -service-name=RackHD-service:api:2.0:TEST"
depends_on:
- consulclient
ssdpspoofer:
build: ./cmd/utils
endpoint:
build:
context: .
dockerfile: Dockerfile-endpoint
image: "rackhd/endpoint:latest"
container_name: "endpoint"
hostname: "endpoint"
links:
- consulclient
ports:
- "10002:10002"
expose:
- "10001"
- "10002"
- "10002/udp"
command: "-endpoint-address=http://localhost:10002 -backend-address=consulclient:8500"
- "8300"
- "8301"
- "8301/udp"
- "8302"
- "8302/udp"
- "8400"
- "8500"
- "8500/udp"
- "8600"
- "8600/udp"
command: "-endpoint-address=http://0.0.0.0:10002 -backend-address=consulclient:8500"
depends_on:
- consulclient
consulclient:
image: "rackhd/consul:client"
container_name: "consulclient"
hostname: "consulclient"
ports:
- "8500:8500"
expose:
- "8300"
- "8301"
Expand Down
2 changes: 1 addition & 1 deletion registry/Dockerfile → registry/Dockerfile-registry
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ FROM rackhd/golang:1.7.0-wheezy
ADD ./bin/registry /go/bin/registry
ADD ./registry.json /go/bin/registry.json

ENTRYPOINT ["/go/bin/nm-registry"]
ENTRYPOINT ["/go/bin/registry"]
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM debian:wheezy

ADD ./bin/ssdpspoofer /bin/ssdpspoofer
ADD ./ssdpSpoof.json /bin/ssdpSpoof.json
ADD ./cmd/ssdpspoofer/ssdpSpoof.json /bin/ssdpSpoof.json

ENTRYPOINT ["/bin/ssdpspoofer"]
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ services:
- "8600:8600/udp"
command: "agent -config-dir /etc/consul.d/server.json -bootstrap"
registry:
build: .
build:
context: .
dockerfile: Dockerfile-registry
image: "rackhd/registry:latest"
container_name: "registry"
hostname: "registry"
Expand All @@ -42,7 +44,9 @@ services:
depends_on:
- consulclient
ssdpspoofer:
build: ./cmd/ssdpspoofer
build:
context: .
dockerfile: Dockerfile-ssdp
image: "rackhd/ssdpspoofer:latest"
container_name: "ssdpspoofer"
hostname: "ssdpspoofer"
Expand Down

0 comments on commit a31c864

Please sign in to comment.