Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor to centralise controller #77

Merged
merged 1 commit into from
Feb 6, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ common_mounts = -v $(build_path)/.config/gcloud:/root/.config/gcloud \
build_version := $(shell sha256sum $(build_path)/build-image/Dockerfile | head -c 10)
build_tag = agon-build:$(build_version)
build_remote_tag = $(REGISTRY)/$(build_tag)
controller_tag = $(REGISTRY)/gameservers-controller:$(VERSION)
sidecar_tag = $(REGISTRY)/gameservers-sidecar:$(VERSION)
controller_tag = $(REGISTRY)/agon-controller:$(VERSION)
sidecar_tag = $(REGISTRY)/agon-sdk:$(VERSION)

go_version_flags = -ldflags "-X github.com/agonio/agon/pkg.Version=$(VERSION)"

Expand Down Expand Up @@ -92,7 +92,7 @@ include ./includes/$(osinclude)
build: build-images build-sdks

# build the docker images
build-images: build-gameservers-controller-image build-gameservers-sidecar-image
build-images: build-controller-image build-agon-sdk-image

#build all the sdks
build-sdks: build-sdk-cpp
Expand All @@ -102,7 +102,7 @@ test: ensure-build-image
docker run --rm $(common_mounts) --entrypoint=go $(build_tag) test -race $(agon_package)/...

# Push all the images up to $(REGISTRY)
push: push-gameservers-controller-image push-gameservers-sidecar-image
push: push-controller-image push-agon-sdk-image

# Installs the current development version of Agon into the Kubernetes cluster
install: ALWAYS_PULL_SIDECAR := true
Expand All @@ -115,37 +115,37 @@ install: ensure-build-image
docker run --rm $(common_mounts) $(ARGS) $(build_tag) kubectl apply -f $(mount_path)/build/.install.yaml

# Build a static binary for the gameserver controller
build-gameservers-controller-binary: ensure-build-image
docker run --rm -e "CGO_ENABLED=0" $(common_mounts) --entrypoint=go $(build_tag) build \
-o $(mount_path)/gameservers/controller/bin/controller -a $(go_version_flags) -installsuffix cgo $(agon_package)/gameservers/controller
build-controller-binary: ensure-build-image
docker run --rm -e "CGO_ENABLED=0" $(common_mounts) $(build_tag) go build \
-o $(mount_path)/cmd/controller/bin/controller -a $(go_version_flags) -installsuffix cgo $(agon_package)/cmd/controller

# Build the image for the gameserver controller
build-gameservers-controller-image: ensure-build-image build-gameservers-controller-binary
docker build $(agon_path)/gameservers/controller/ --tag=$(controller_tag)
build-controller-image: ensure-build-image build-controller-binary
docker build $(agon_path)/cmd/controller/ --tag=$(controller_tag)

# push the gameservers controller image
push-gameservers-controller-image: ensure-build-image
push-controller-image: ensure-build-image
docker push $(controller_tag)

# build the static binary for the gamesever sidecar
build-gameservers-sidecar-binary: ensure-build-image
build-agon-sdk-binary: ensure-build-image
docker run --rm -e "CGO_ENABLED=0" $(common_mounts) $(build_tag) go build \
-o $(mount_path)/gameservers/sidecar/bin/sidecar.linux.amd64 -a $(go_version_flags) -installsuffix cgo $(agon_package)/gameservers/sidecar
-o $(mount_path)/cmd/sdk-server/bin/sdk-server.linux.amd64 -a $(go_version_flags) -installsuffix cgo $(agon_package)/cmd/sdk-server
docker run --rm -e "GOOS=darwin" -e "GOARCH=amd64" $(common_mounts) $(build_tag) go build \
-o $(mount_path)/gameservers/sidecar/bin/sidecar.darwin.amd64 $(go_version_flags) $(agon_package)/gameservers/sidecar
-o $(mount_path)/cmd/sdk-server/bin/sdk-server.darwin.amd64 $(go_version_flags) $(agon_package)/cmd/sdk-server
docker run --rm -e "GOOS=windows" -e "GOARCH=amd64" $(common_mounts) $(build_tag) go build \
-o $(mount_path)/gameservers/sidecar/bin/sidecar.windows.amd64.exe $(go_version_flags) $(agon_package)/gameservers/sidecar
-o $(mount_path)/cmd/sdk-server/bin/sdk-server.windows.amd64.exe $(go_version_flags) $(agon_package)/cmd/sdk-server

# Build the image for the gameserver sidecar
build-gameservers-sidecar-image: ensure-build-image build-gameservers-sidecar-binary
docker build $(agon_path)/gameservers/sidecar/ --tag=$(sidecar_tag)
build-agon-sdk-image: ensure-build-image build-agon-sdk-binary
docker build $(agon_path)/cmd/sdk-server/ --tag=$(sidecar_tag)

# Build the cpp sdk linux archive
build-sdk-cpp: ensure-build-image
docker run --rm $(common_mounts) -w $(mount_path)/sdks/cpp --entrypoint make $(build_tag) build install archive VERSION=$(VERSION)

# push the gameservers sidecar image
push-gameservers-sidecar-image: ensure-build-image
push-agon-sdk-image: ensure-build-image
docker push $(sidecar_tag)

# Generate the SDK gRPC server and client code
Expand Down
4 changes: 2 additions & 2 deletions build/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,10 +264,10 @@ Run a bash shell with the developer tools (go tooling, kubectl, etc) and source
#### `make godoc`
Run a container with godoc (search index enabled)

#### `make build-gameservers-controller-image`
#### `make build-agon-controller-image`
Compile the gameserver controller and then build the docker image

#### `make build-gameservers-sidecar-image`
#### `make build-agon-sdk-image`
Compile the gameserver sidecar and then build the docker image

#### `make gen-crd-client`
Expand Down
2 changes: 1 addition & 1 deletion build/build-image/gen-grpc-go.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ cd /go/src/github.com/agonio/agon
protoc -I . sdk.proto --go_out=plugins=grpc:sdks/go
cat ./build/boilerplate.go.txt ./sdks/go/sdk.pb.go >> ./sdk.pb.go
goimports -w ./sdk.pb.go
cp ./sdk.pb.go ./gameservers/sidecar/sdk
cp ./sdk.pb.go ./pkg/sdk
mv ./sdk.pb.go ./sdks/go
8 changes: 4 additions & 4 deletions build/install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: gameservers-controller
name: agon-controller
spec:
replicas: 1
strategy:
Expand All @@ -43,14 +43,14 @@ spec:
stable.agon.io/role: controller
spec:
containers:
- name: gameservers-controller
image: ${REGISTRY}/gameservers-controller:${VERSION}
- name: agon-controller
image: ${REGISTRY}/agon-controller:${VERSION}
imagePullPolicy: ${IMAGE_PULL_POLICY}
env:
- name: ALWAYS_PULL_SIDECAR # set the sidecar imagePullPolicy to Always
value: "${ALWAYS_PULL_SIDECAR}"
- name: SIDECAR # overwrite the GameServer sidecar image that is used
value: ${REGISTRY}/gameservers-sidecar:${VERSION}
value: ${REGISTRY}/agon-sdk:${VERSION}
- name: MIN_PORT
value: "7000"
- name: MAX_PORT
Expand Down
2 changes: 1 addition & 1 deletion cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ steps:
dir: "build"
args: ["push-build-image"] # push the build image (which won't do anything if it's already there)
timeout: "1h"
images: ['gcr.io/$PROJECT_ID/gameservers-controller', 'gcr.io/$PROJECT_ID/gameservers-sidecar']
images: ['gcr.io/$PROJECT_ID/agon-controller', 'gcr.io/$PROJECT_ID/agon-sdk']
File renamed without changes.
9 changes: 5 additions & 4 deletions gameservers/controller/main.go → cmd/controller/main.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2017 Google Inc. All Rights Reserved.
// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -22,8 +22,9 @@ import (
"github.com/agonio/agon/pkg"
"github.com/agonio/agon/pkg/client/clientset/versioned"
"github.com/agonio/agon/pkg/client/informers/externalversions"
"github.com/agonio/agon/pkg/signals"
"github.com/agonio/agon/pkg/gameservers"
"github.com/agonio/agon/pkg/util/runtime"
"github.com/agonio/agon/pkg/util/signals"
"github.com/sirupsen/logrus"
"github.com/spf13/pflag"
"github.com/spf13/viper"
Expand All @@ -46,7 +47,7 @@ func init() {

// main starts the operator for the gameserver CRD
func main() {
viper.SetDefault(sidecarFlag, "gcr.io/agon-images/gameservers-sidecar:"+pkg.Version)
viper.SetDefault(sidecarFlag, "gcr.io/agon-images/agon-sdk:"+pkg.Version)
viper.SetDefault(pullSidecarFlag, false)

pflag.String(sidecarFlag, viper.GetString(sidecarFlag), "Flag to overwrite the GameServer sidecar image that is used. Can also use SIDECAR env variable")
Expand Down Expand Up @@ -101,7 +102,7 @@ func main() {

agonInformerFactory := externalversions.NewSharedInformerFactory(agonClient, 30*time.Second)
kubeInformationFactory := informers.NewSharedInformerFactory(kubeClient, 30*time.Second)
c := NewController(minPort, maxPort, sidecarImage, alwaysPullSidecar, kubeClient, kubeInformationFactory, extClient, agonClient, agonInformerFactory)
c := gameservers.NewController(minPort, maxPort, sidecarImage, alwaysPullSidecar, kubeClient, kubeInformationFactory, extClient, agonClient, agonInformerFactory)

stop := signals.NewStopChannel()

Expand Down
6 changes: 3 additions & 3 deletions gameservers/sidecar/Dockerfile → cmd/sdk-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
FROM alpine:3.7

COPY ./bin/sidecar.linux.amd64 /home/agon/sidecar
COPY ./bin/sdk-server.linux.amd64 /home/agon/sdk-server
RUN apk --update add ca-certificates && \
adduser -D agon && \
chown -R agon /home/agon && \
chmod o+x /home/agon/sidecar
chmod o+x /home/agon/sdk-server

USER agon
ENTRYPOINT ["/home/agon/sidecar"]
ENTRYPOINT ["/home/agon/sdk-server"]
12 changes: 6 additions & 6 deletions gameservers/sidecar/main.go → cmd/sdk-server/main.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2017 Google Inc. All Rights Reserved.
// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -19,12 +19,12 @@ import (
"fmt"
"net"
"strings"

"time"

"github.com/agonio/agon/gameservers/sidecar/sdk"
"github.com/agonio/agon/pkg"
"github.com/agonio/agon/pkg/client/clientset/versioned"
"github.com/agonio/agon/pkg/gameservers"
"github.com/agonio/agon/pkg/sdk"
"github.com/agonio/agon/pkg/util/runtime"
"github.com/sirupsen/logrus"
"github.com/spf13/pflag"
Expand Down Expand Up @@ -105,7 +105,7 @@ func main() {
grpcServer := grpc.NewServer()

if isLocal {
sdk.RegisterSDKServer(grpcServer, &Local{})
sdk.RegisterSDKServer(grpcServer, &gameservers.LocalSDKServer{})
} else {
config, err := rest.InClusterConfig()
if err != nil {
Expand All @@ -122,8 +122,8 @@ func main() {
logrus.WithError(err).Fatalf("Could not create the agon api clientset")
}

var s *Sidecar
s, err = NewSidecar(viper.GetString(gameServerNameEnv), viper.GetString(podNamespaceEnv),
var s *gameservers.SDKServer
s, err = gameservers.NewSDKServer(viper.GetString(gameServerNameEnv), viper.GetString(podNamespaceEnv),
healthDisabled, healthTimeout, healthFailureThreshold, healthInitialDelay, kubeClient, agonClient)
if err != nil {
logrus.WithError(err).Fatalf("Could not start sidecar")
Expand Down
86 changes: 0 additions & 86 deletions gameservers/controller/helper_test.go

This file was deleted.

8 changes: 4 additions & 4 deletions install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ spec:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: gameservers-controller
name: agon-controller
spec:
replicas: 1
strategy:
Expand All @@ -41,8 +41,8 @@ spec:
stable.agon.io/role: controller
spec:
containers:
- name: gameservers-controller
image: gcr.io/agon-images/gameservers-controller:0.1
- name: agon-controller
image: gcr.io/agon-images/agon-controller:0.1
env:
# minimum port that can be exposed to GameServer traffic
- name: MIN_PORT
Expand All @@ -51,7 +51,7 @@ spec:
- name: MAX_PORT
value: "8000"
# - name: SIDECAR # overwrite the GameServer sidecar image that is used
# value: gcr.io/agon-images/gameservers-sidecar:0.1
# value: gcr.io/agon-images/agon-sdk:0.1
livenessProbe:
httpGet:
path: /healthz
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2017 Google Inc. All Rights Reserved.
// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package main
package gameservers

import (
"fmt"
Expand Down Expand Up @@ -51,7 +51,7 @@ var (
errPodNotFound = errors.New("A Pod for this GameServer Was Not Found")
)

// Controller is a GameServer crd controller
// Controller is a the main GameServer crd controller
type Controller struct {
sidecarImage string
alwaysPullSidecarImage bool
Expand Down
Loading