Skip to content

Commit

Permalink
build: Place operator binaries in separate images
Browse files Browse the repository at this point in the history
Signed-off-by: Ilya Dmitrichenko <errordeveloper@gmail.com>
  • Loading branch information
errordeveloper committed May 28, 2020
1 parent ed4bf5f commit bd26b4f
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 25 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ include Makefile.defs
# Use the main repo as the build-context by default
DOCKER_BUILD_DIR := .
CILIUM_DOCKERFILE := Dockerfile
OPERATOR_DOCKERFILE := cilium-operator.Dockerfile
OPERATOR_DOCKERFILES := cilium-operator.Dockerfile \
cilium-operator-aws.Dockerfile \
cilium-operator-azure.Dockerfile \
cilium-operator-generic.Dockerfile
DOCKER_PLUGIN_DOCKERFILE := cilium-docker-plugin.Dockerfile
HUBBLE_RELAY_DOCKERFILE := hubble-relay.Dockerfile

Expand Down
5 changes: 4 additions & 1 deletion Makefile.buildkit
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ veryclean: clean-build
# Overrides for the main Dockerfile
DOCKER_BUILD_DIR := $(BUILD_DIR)/context
CILIUM_DOCKERFILE := $(BUILD_DIR)/cilium.Dockerfile
OPERATOR_DOCKERFILE := $(BUILD_DIR)/cilium-operator.Dockerfile
OPERATOR_DOCKERFILES := $(BUILD_DIR)/cilium-operator.Dockerfile \
$(BUILD_DIR)/cilium-operator-aws.Dockerfile \
$(BUILD_DIR)/cilium-operator-azure.Dockerfile \
$(BUILD_DIR)/cilium-operator-generic.Dockerfile
DOCKER_PLUGIN_DOCKERFILE := $(BUILD_DIR)/cilium-docker-plugin.Dockerfile
HUBBLE_RELAY_DOCKERFILE := $(BUILD_DIR)/hubble-relay.Dockerfile

Expand Down
44 changes: 26 additions & 18 deletions Makefile.docker
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Copyright 2017-2020 Authors of Cilium
# SPDX-License-Identifier: Apache-2.0

UNSTRIPPED=""
UTC_DATE=$(shell date -u "+%Y-%m-%d")

docker-cilium-image-for-developers:
Expand All @@ -11,11 +10,11 @@ docker-cilium-image-for-developers:
--build-arg LOCKDEBUG=\
--build-arg V=\
--build-arg LIBNETWORK_PLUGIN=\
-t "$(DOCKER_DEV_ACCOUNT)/cilium-dev:latest" . -f ./cilium-dev.Dockerfile
-t $(DOCKER_DEV_ACCOUNT)/cilium-dev:latest . -f ./cilium-dev.Dockerfile

docker-image: clean docker-image-no-clean docker-operator-image docker-plugin-image docker-hubble-relay-image
docker-image: clean docker-image-no-clean docker-operator-image docker-operator-aws-image docker-operator-azure-image docker-operator-generic-image docker-plugin-image docker-hubble-relay-image

docker-image-unstripped: clean docker-image-no-clean-unstripped docker-operator-image-unstripped docker-plugin-image-unstripped docker-hubble-relay-image-unstripped
docker-image-unstripped: clean docker-image-no-clean-unstripped docker-operator-image-unstripped docker-operator-aws-image-unstripped docker-operator-azure-image-unstripped docker-operator-generic-image-unstripped docker-plugin-image-unstripped docker-hubble-relay-image-unstripped

docker-image-no-clean: GIT_VERSION $(CILIUM_DOCKERFILE) build-context-update
$(QUIET)$(CONTAINER_ENGINE) build -f $(CILIUM_DOCKERFILE) \
Expand All @@ -24,13 +23,13 @@ docker-image-no-clean: GIT_VERSION $(CILIUM_DOCKERFILE) build-context-update
--build-arg V=${V} \
--build-arg LIBNETWORK_PLUGIN=${LIBNETWORK_PLUGIN} \
--build-arg CILIUM_SHA=$(firstword $(GIT_VERSION)) \
-t "cilium/cilium$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)" $(DOCKER_BUILD_DIR)
-t cilium/cilium$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) $(DOCKER_BUILD_DIR)
$(QUIET)$(CONTAINER_ENGINE) tag cilium/cilium$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) cilium/cilium$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}
@echo "Push like this when ready:"
@echo "${CONTAINER_ENGINE} push cilium/cilium$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"

docker-image-no-clean-unstripped: NOSTRIP=1
docker-image-no-clean-unstripped: UNSTRIPPED="-unstripped"
docker-image-no-clean-unstripped: UNSTRIPPED=-unstripped
docker-image-no-clean-unstripped: docker-image-no-clean

docker-cilium-manifest:
Expand All @@ -50,27 +49,36 @@ dev-docker-image: GIT_VERSION $(CILIUM_DOCKERFILE) build-context-update
@echo "${CONTAINER_ENGINE} push $(DOCKER_DEV_ACCOUNT)/cilium-dev$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"

dev-docker-image-unstripped: NOSTRIP=1
dev-docker-image-unstripped: UNSTRIPPED="-unstripped"
dev-docker-image-unstripped: UNSTRIPPED=-unstripped
dev-docker-image-unstripped: dev-docker-image

docker-cilium-dev-manifest:
@$(ECHO_CHECK) contrib/scripts/push_manifest.sh cilium-dev $(DOCKER_IMAGE_TAG)
$(QUIET) contrib/scripts/push_manifest.sh cilium-dev $(DOCKER_IMAGE_TAG)

docker-operator-image: GIT_VERSION $(OPERATOR_DOCKERFILE) build-context-update
docker-operator-image: GIT_VERSION cilium-operator$(OPERATOR_FLAVOUR).Dockerfile build-context-update
$(QUIET)$(CONTAINER_ENGINE) build \
--build-arg NOSTRIP=${NOSTRIP} \
--build-arg LOCKDEBUG=${LOCKDEBUG} \
--build-arg CILIUM_SHA=$(firstword $(GIT_VERSION)) \
-f $(OPERATOR_DOCKERFILE) \
-t "cilium/operator$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)" $(DOCKER_BUILD_DIR)
-f cilium-operator$(OPERATOR_FLAVOUR).Dockerfile \
-t cilium/operator$(OPERATOR_FLAVOUR)$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) $(DOCKER_BUILD_DIR)
@echo "Push like this when ready:"
@echo "${CONTAINER_ENGINE} push cilium/operator$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"
@echo "${CONTAINER_ENGINE} push cilium/operator$(OPERATOR_FLAVOUR)$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"

docker-operator-image-unstripped: NOSTRIP=1
docker-operator-image-unstripped: UNSTRIPPED="-unstripped"
docker-operator-image-unstripped: UNSTRIPPED=-unstripped
docker-operator-image-unstripped: docker-operator-image

docker-operator-aws-image: OPERATOR_FLAVOUR=-aws
docker-operator-aws-image: docker-operator-image

docker-operator-azure-image: OPERATOR_FLAVOUR=-azure
docker-operator-azure-image: docker-operator-image

docker-operator-generic-image: OPERATOR_FLAVOUR=-generic
docker-operator-generic-image: docker-operator-image

docker-operator-manifest:
@$(ECHO_CHECK) contrib/scripts/push_manifest.sh operator $(DOCKER_IMAGE_TAG)
$(QUIET) contrib/scripts/push_manifest.sh operator $(DOCKER_IMAGE_TAG)
Expand All @@ -81,29 +89,29 @@ docker-plugin-image: GIT_VERSION $(DOCKER_PLUGIN_DOCKERFILE) build-context-updat
--build-arg LOCKDEBUG=${LOCKDEUBG} \
--build-arg CILIUM_SHA=$(firstword $(GIT_VERSION)) \
-f $(DOCKER_PLUGIN_DOCKERFILE) \
-t "cilium/docker-plugin$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)" $(DOCKER_BUILD_DIR)
-t cilium/docker-plugin$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) $(DOCKER_BUILD_DIR)
$(QUIET)$(CONTAINER_ENGINE) tag cilium/docker-plugin$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) cilium/docker-plugin$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}
@echo "Push like this when ready:"
@echo "${CONTAINER_ENGINE} push cilium/docker-plugin$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"

docker-plugin-image-unstripped: NOSTRIP=1
docker-plugin-image-unstripped: UNSTRIPPED="-unstripped"
docker-plugin-image-unstripped: UNSTRIPPED=-unstripped
docker-plugin-image-unstripped: docker-plugin-image

docker-plugin-manifest:
@$(ECHO_CHECK) contrib/scripts/push_manifest.sh docker-plugin $(DOCKER_IMAGE_TAG)
$(QUIET) contrib/scripts/push_manifest.sh docker-plugin $(DOCKER_IMAGE_TAG)

docker-image-runtime:
cd contrib/packaging/docker && $(CONTAINER_ENGINE) build --build-arg ARCH=$(GOARCH) -t "cilium/cilium-runtime:$(UTC_DATE)" -f Dockerfile.runtime .
cd contrib/packaging/docker && $(CONTAINER_ENGINE) build --build-arg ARCH=$(GOARCH) -t cilium/cilium-runtime:$(UTC_DATE) -f Dockerfile.runtime .
$(QUIET)$(CONTAINER_ENGINE) tag cilium/cilium-runtime:$(UTC_DATE) cilium/cilium-runtime:$(UTC_DATE)-${GOARCH}

docker-cilium-runtime-manifest:
@$(ECHO_CHECK) contrib/scripts/push_manifest.sh cilium-runtime $(UTC_DATE)
$(QUIET) contrib/scripts/push_manifest.sh cilium-runtime $(UTC_DATE)

docker-image-builder:
$(QUIET)$(CONTAINER_ENGINE) build --build-arg ARCH=$(GOARCH) -t "cilium/cilium-builder:$(UTC_DATE)" -f Dockerfile.builder .
$(QUIET)$(CONTAINER_ENGINE) build --build-arg ARCH=$(GOARCH) -t cilium/cilium-builder:$(UTC_DATE) -f Dockerfile.builder .
$(QUIET)$(CONTAINER_ENGINE) tag cilium/cilium-builder:$(UTC_DATE) cilium/cilium-builder:$(UTC_DATE)-${GOARCH}

docker-cilium-builder-manifest:
Expand All @@ -115,11 +123,11 @@ docker-hubble-relay-image: $(HUBBLE_RELAY_DOCKERFILE) build-context-update
--build-arg NOSTRIP=${NOSTRIP} \
--build-arg CILIUM_SHA=$(firstword $(GIT_VERSION)) \
-f $(HUBBLE_RELAY_DOCKERFILE) \
-t "cilium/hubble-relay$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)" $(DOCKER_BUILD_DIR)
-t cilium/hubble-relay$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) $(DOCKER_BUILD_DIR)
$(QUIET)$(CONTAINER_ENGINE) tag cilium/hubble-relay$(UNSTRIPPED):$(DOCKER_IMAGE_TAG) cilium/hubble-relay$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}
@echo "Push like this when ready:"
@echo "${CONTAINER_ENGINE} push cilium/hubble-relay$(UNSTRIPPED):$(DOCKER_IMAGE_TAG)-${GOARCH}"

docker-hubble-relay-image-unstripped: NOSTRIP=1
docker-hubble-relay-image-unstripped: UNSTRIPPED="-unstripped"
docker-hubble-relay-image-unstripped: UNSTRIPPED=-unstripped
docker-hubble-relay-image-unstripped: docker-hubble-relay-image
27 changes: 27 additions & 0 deletions cilium-operator-aws.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# (first line comment needed for DOCKER_BUILDKIT use)
#
FROM docker.io/library/golang:1.14.3 as builder
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"

ADD . /go/src/github.com/cilium/cilium

WORKDIR /go/src/github.com/cilium/cilium/operator
ARG NOSTRIP
ARG LOCKDEBUG
RUN make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG cilium-operator-aws

FROM docker.io/library/alpine:3.9.3 as certs
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
RUN apk --update add ca-certificates

FROM scratch
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-aws /usr/bin/cilium-operator-aws
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /
CMD ["/usr/bin/cilium-operator-aws"]
27 changes: 27 additions & 0 deletions cilium-operator-azure.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# (first line comment needed for DOCKER_BUILDKIT use)
#
FROM docker.io/library/golang:1.14.3 as builder
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"

ADD . /go/src/github.com/cilium/cilium

WORKDIR /go/src/github.com/cilium/cilium/operator
ARG NOSTRIP
ARG LOCKDEBUG
RUN make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG cilium-operator-azure

FROM docker.io/library/alpine:3.9.3 as certs
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
RUN apk --update add ca-certificates

FROM scratch
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-azure /usr/bin/cilium-operator-azure
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /
CMD ["/usr/bin/cilium-operator-azure"]
27 changes: 27 additions & 0 deletions cilium-operator-generic.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# (first line comment needed for DOCKER_BUILDKIT use)
#
FROM docker.io/library/golang:1.14.3 as builder
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"

ADD . /go/src/github.com/cilium/cilium

WORKDIR /go/src/github.com/cilium/cilium/operator
ARG NOSTRIP
ARG LOCKDEBUG
RUN make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG cilium-operator-generic

FROM docker.io/library/alpine:3.9.3 as certs
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
RUN apk --update add ca-certificates

FROM scratch
ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-generic /usr/bin/cilium-operator-generic
COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /
CMD ["/usr/bin/cilium-operator-generic"]
6 changes: 1 addition & 5 deletions cilium-operator.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ADD . /go/src/github.com/cilium/cilium
WORKDIR /go/src/github.com/cilium/cilium/operator
ARG NOSTRIP
ARG LOCKDEBUG
RUN make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG EXTRA_GO_BUILD_FLAGS="-tags ipam_provider_aws,ipam_provider_azure,ipam_provider_operator"
RUN make NOSTRIP=$NOSTRIP LOCKDEBUG=$LOCKDEBUG cilium-operator

FROM docker.io/library/alpine:3.9.3 as certs
ARG CILIUM_SHA=""
Expand All @@ -22,10 +22,6 @@ ARG CILIUM_SHA=""
LABEL cilium-sha=${CILIUM_SHA}
LABEL maintainer="maintainer@cilium.io"
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator /usr/bin/cilium-operator
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-generic /usr/bin/cilium-operator-generic
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-aws /usr/bin/cilium-operator-aws
COPY --from=builder /go/src/github.com/cilium/cilium/operator/cilium-operator-azure /usr/bin/cilium-operator-azure

COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /
CMD ["/usr/bin/cilium-operator"]

0 comments on commit bd26b4f

Please sign in to comment.