Merge pull request #532 from jackgr/deployment

Fix container build and add redis chart example
pull/484/head
Jack Greenfield 10 years ago
commit f9fd2db673

@ -24,19 +24,26 @@ endif
GO_DIRS ?= $(shell glide nv -x )
GO_PKGS ?= $(shell glide nv)
ROOTFS := rootfs
.PHONY: build
build: gocheck
@scripts/build-go.sh
.PHONY: build-static
build-static: gocheck
@BUILD_TYPE=STATIC scripts/build-go.sh
.PHONY: build-cross
build-cross: gocheck
@BUILD_CROSS=1 scripts/build-go.sh
@BUILD_TYPE=CROSS scripts/build-go.sh
.PHONY: all
all: build
.PHONY: clean
clean:
$(MAKE) -C $(ROOTFS) $@
go clean -v $(GO_PKGS)
rm -rf bin
@ -47,14 +54,12 @@ test: build test-style test-unit test-flake8
quicktest: test-style
go test $(GO_PKGS)
ROOTFS := rootfs
.PHONY: push
push: all
push: build-static
$(MAKE) -C $(ROOTFS) $@
.PHONY: container
container: all
container: build-static
$(MAKE) -C $(ROOTFS) $@
.PHONY: test-unit

@ -0,0 +1,7 @@
name: redis
description: Port of the replicatedservice template from kubernetes/charts
version: "2"
home: ""
expander:
name: Expandybird
entrypoint: templates/redis.jinja

@ -0,0 +1,32 @@
{% set REDIS_PORT = 6379 %}
{% set WORKERS = properties['workers'] if properties and properties['workers'] else 2 %}
resources:
- name: redis-master
type: gs://kubernetes-charts-testing/replicatedservice-3.tgz
properties:
# This has to be overwritten since service names are hard coded in the code
service_name: redis-master
service_port: {{ REDIS_PORT }}
target_port: {{ REDIS_PORT }}
container_port: {{ REDIS_PORT }}
replicas: 1
container_name: master
image: redis
- name: redis-slave
type: gs://kubernetes-charts-testing/replicatedservice-3.tgz
properties:
# This has to be overwritten since service names are hard coded in the code
service_name: redis-slave
service_port: {{ REDIS_PORT }}
container_port: {{ REDIS_PORT }}
replicas: {{ WORKERS }}
container_name: worker
image: kubernetes/redis-slave:v2
# An example of how to specify env variables.
env:
- name: GET_HOSTS_FROM
value: env
- name: REDIS_MASTER_SERVICE_HOST
value: redis-master

@ -0,0 +1,10 @@
info:
title: Redis cluster
description: Defines a redis cluster, using a single replica
replicatedservice for master and replicatedservice for workers.
properties:
workers:
type: int
default: 2
description: Number of worker replicas.

@ -13,7 +13,7 @@
# limitations under the License.
SUBDIRS := expandybird/. resourcifier/. manager/.
TARGETS := info push container
TARGETS := info push container clean
SUBDIRS_TARGETS := \
$(foreach t,$(TARGETS),$(addsuffix $t,$(SUBDIRS)))

@ -21,4 +21,4 @@ extras: expansion
.PHONY: expansion
expansion:
cp -R ../../expansion ./opt
mkdir -p ./opt && cp -R ../../expansion ./opt

@ -20,23 +20,27 @@ DOCKER_REGISTRY ?= gcr.io
DOCKER_PROJECT ?= $(PROJECT)
# Support both local and remote repos, and support no project.
ifdef $(DOCKER_PROJECT)
PREFIX := $(DOCKER_REGISTRY)/$(DOCKER_PROJECT)
else
ifeq ($(DOCKER_PROJECT),)
PREFIX := $(DOCKER_REGISTRY)
else
PREFIX := $(DOCKER_REGISTRY)/$(DOCKER_PROJECT)
endif
FULL_IMAGE := $(PREFIX)/$(IMAGE)
TAG ?= git-$(shell git rev-parse --short HEAD)
DEFAULT_PLATFORM := $(shell uname | tr '[:upper:]' '[:lower:]')
DEFAULT_PLATFORM := linux
PLATFORM ?= $(DEFAULT_PLATFORM)
DEFAULT_ARCH := $(shell uname -m)
DEFAULT_ARCH := amd64
ARCH ?= $(DEFAULT_ARCH)
.PHONY: clean
clean:
rm -rf bin opt
.PHONY: info
info:
@echo "Build tag: ${TAG}"
@ -52,13 +56,16 @@ info:
push: container
ifeq ($(DOCKER_REGISTRY),gcr.io)
gcloud docker push $(FULL_IMAGE):$(TAG)
gcloud docker push $(FULL_IMAGE):latest
else
docker push $(FULL_IMAGE):$(TAG)
docker push $(FULL_IMAGE):latest
endif
.PHONY: container
container: .project .docker binary extras
docker build -t $(FULL_IMAGE):$(TAG) -f Dockerfile .
docker tag -f $(FULL_IMAGE):$(TAG) $(FULL_IMAGE):latest
.project:
ifeq ($(DOCKER_REGISTRY), gcr.io)
@ -70,17 +77,9 @@ endif
.docker:
@if [[ -z `which docker` ]] || ! docker --version &> /dev/null; then echo "docker is not installed correctly"; exit 1; fi
CROSS_IMAGE := $(PLATFORM)-$(ARCH)/$(IMAGE)/$(IMAGE)
.PHONY: binary
binary:
@if [[ -z $(CROSS_IMAGE) ]]; then \
echo cp ../../bin/$(CROSS_IMAGE) ./bin ; \
cp ../../bin/$(CROSS_IMAGE) ./bin ; \
else \
echo cp ../../bin/$(IMAGE) ./bin ; \
cp ../../bin/$(IMAGE) ./bin ; \
fi
@if [[ ! -x "bin/$(IMAGE)" ]] ; then echo "binary bin/$(IMAGE) not found" ; exit 1 ; fi
.PHONY: kubectl
kubectl:

@ -15,5 +15,11 @@
FROM alpine:3.3
RUN apk --update add ca-certificates
COPY . /
# Install CA certs
RUN apk add --update-cache ca-certificates
RUN apk del --purge ca-certificates \
&& rm -rf /var/cache/apk/*
EXPOSE 8080
CMD ["/bin/manager", "--kubectl=/bin/kubectl"]

@ -15,5 +15,11 @@
FROM alpine:3.3
RUN apk --update add ca-certificates
COPY . /
# Install CA certs
RUN apk add --update-cache ca-certificates
RUN apk del --purge ca-certificates \
&& rm -rf /var/cache/apk/*
EXPOSE 8080
CMD ["/bin/resourcifier", "--kubectl=/bin/kubectl"]

@ -16,7 +16,10 @@
set -o errexit
set -o pipefail
readonly ALL_TARGETS=(cmd/expandybird cmd/helm cmd/manager cmd/resourcifier)
readonly ROOTFS="${DIR}/rootfs"
readonly STATIC_TARGETS=(cmd/expandybird cmd/manager cmd/resourcifier)
readonly ALL_TARGETS=(${STATIC_TARGETS[@]} cmd/helm)
error_exit() {
# Display error message and exit
@ -42,6 +45,22 @@ version_from_git() {
echo "${git_tag}+${git_commit}"
}
build_binary_static() {
local target="$1"
local basename="${target##*/}"
local context="${ROOTFS}/${basename}"
echo "Building ${target}"
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
go build \
-ldflags="${LDFLAGS}" \
-a -installsuffix cgo \
-o "${context}/bin/${basename}" \
"${REPO}/${target}"
}
build_binary_cross() {
local target="$1"
@ -50,23 +69,30 @@ build_binary_cross() {
-ldflags="${LDFLAGS}" \
-os="linux darwin" \
-arch="amd64 386" \
-output="bin/{{.OS}}-{{.Arch}}/{{.Dir}}" "${REPO}/${target}"
-output="bin/{{.OS}}-{{.Arch}}/{{.Dir}}" \
"${REPO}/${target}"
}
#TODO: accept specific os/arch
build_binaries() {
local -a targets=($@)
#TODO: accept specific os/arch
local build_cross="${BUILD_CROSS:-}"
local build_type="${BUILD_TYPE:-}"
if [[ ${#targets[@]} -eq 0 ]]; then
targets=("${ALL_TARGETS[@]}")
if [[ ${build_type} == STATIC ]]; then
targets=("${STATIC_TARGETS[@]}")
else
targets=("${ALL_TARGETS[@]}")
fi
fi
assign_version
assign_ldflags
for t in "${targets[@]}"; do
if [[ -n "$build_cross" ]]; then
if [[ ${build_type} == STATIC ]]; then
build_binary_static "$t"
elif [[ ${build_type} == CROSS ]]; then
build_binary_cross "$t"
else
build_binary "$t"

Loading…
Cancel
Save