Skip to content

Commit b87b641

Browse files
authored
[Feature] Add ARM64 Image Support (#838)
1 parent 0d814a7 commit b87b641

File tree

7 files changed

+38
-22
lines changed

7 files changed

+38
-22
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ vendor/
77
.idea/
88
deps/
99
.vscode/
10-
**/*.enterprise.go
10+
**/*.enterprise.go
11+
**/enterprise/**
12+
enterprise.mk

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- Add Watch to Lifecycle command
99
- Add Topology Discovery
1010
- Add Support for StartupProbe
11+
- Add ARM64 support for Operator Docker image
1112

1213
## [1.2.4](https://github.com/arangodb/kube-arangodb/tree/1.2.4) (2021-10-22)
1314
- Replace `beta.kubernetes.io/arch` Pod label with `kubernetes.io/arch` using Silent Rotation

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ LABEL name="kube-arangodb" \
1212

1313
ADD ./LICENSE /licenses/LICENSE
1414

15-
ADD bin/arangodb_operator /usr/bin/
15+
ARG RELEASE_MODE=community
16+
ARG TARGETARCH=amd64
17+
ADD bin/${RELEASE_MODE}/linux/${TARGETARCH}/arangodb_operator /usr/bin/arangodb_operator
1618

1719
ENTRYPOINT [ "/usr/bin/arangodb_operator" ]

Makefile

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ COMMIT := $(shell git rev-parse --short HEAD)
1212
DOCKERCLI := $(shell which docker)
1313
RELEASE_MODE ?= community
1414

15+
include $(ROOT)/$(RELEASE_MODE).mk
16+
17+
MAIN_DIR := $(ROOT)/pkg/entry/$(RELEASE_MODE)
18+
1519
GOBUILDDIR := $(SCRIPTDIR)/.gobuild
1620
SRCDIR := $(SCRIPTDIR)
1721
CACHEVOL := $(PROJECT)-gocache
@@ -119,14 +123,15 @@ endif
119123

120124
BINNAME := $(PROJECT)
121125
BIN := $(BINDIR)/$(BINNAME)
122-
VBIN := $(BINDIR)/$(RELEASE_MODE)/$(BINNAME)
126+
VBIN_LINUX_AMD64 := $(BINDIR)/$(RELEASE_MODE)/linux/amd64/$(BINNAME)
127+
VBIN_LINUX_ARM64 := $(BINDIR)/$(RELEASE_MODE)/linux/arm64/$(BINNAME)
123128

124129
ifdef VERBOSE
125130
TESTVERBOSEOPTIONS := -v
126131
endif
127132

128133
EXCLUDE_DIRS := tests vendor .gobuild deps tools
129-
SOURCES_QUERY := find ./ -type f -name '*.go' $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS), ! -path "./$(EXCLUDE_DIR)/*")
134+
SOURCES_QUERY := find ./ -type f -name '*.go' $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS), ! -path "*/$(EXCLUDE_DIR)/*")
130135
SOURCES := $(shell $(SOURCES_QUERY))
131136
DASHBOARDSOURCES := $(shell find $(DASHBOARDDIR)/src -name '*.js') $(DASHBOARDDIR)/package.json
132137
LINT_EXCLUDES:=
@@ -193,7 +198,7 @@ endif
193198

194199
.PHONY: clean
195200
clean:
196-
rm -Rf $(BIN) $(BINDIR) $(DASHBOARDDIR)/build $(DASHBOARDDIR)/node_modules
201+
rm -Rf $(BIN) $(BINDIR) $(DASHBOARDDIR)/build $(DASHBOARDDIR)/node_modules $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
197202

198203
.PHONY: check-vars
199204
check-vars:
@@ -245,27 +250,33 @@ dashboard/assets.go:
245250
$(DASHBOARDBUILDIMAGE)
246251
$(GOPATH)/bin/go-assets-builder -s /dashboard/build/ -o dashboard/assets.go -p dashboard dashboard/build
247252

248-
.PHONY: bin
253+
.PHONY: bin bin-all
249254
bin: $(BIN)
255+
bin-all: $(BIN) $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
250256

251-
$(VBIN): $(SOURCES) dashboard/assets.go VERSION
252-
@mkdir -p $(VBINDIR)
253-
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build --tags "$(RELEASE_MODE)" -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN) $(REPOPATH)
257+
$(VBIN_LINUX_AMD64): $(SOURCES) dashboard/assets.go VERSION
258+
@mkdir -p $(BINDIR)/$(RELEASE_MODE)/linux/amd64
259+
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build --tags "$(RELEASE_MODE)" -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_AMD64) ./main.go
254260

255-
$(BIN): $(VBIN)
256-
@cp "$(VBIN)" "$(BIN)"
261+
$(VBIN_LINUX_ARM64): $(SOURCES) dashboard/assets.go VERSION
262+
@mkdir -p $(BINDIR)/$(RELEASE_MODE)/linux/arm64
263+
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build --tags "$(RELEASE_MODE)" -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_ARM64) ./main.go
264+
265+
$(BIN): $(VBIN_LINUX_AMD64)
266+
@cp "$(VBIN_LINUX_AMD64)" "$(BIN)"
257267

258268
.PHONY: docker
259-
docker: check-vars $(BIN)
260-
docker build --no-cache -f $(DOCKERFILE) --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" -t $(OPERATORIMAGE) .
269+
docker: check-vars $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
261270
ifdef PUSHIMAGES
262-
docker push $(OPERATORIMAGE)
271+
docker buildx build --no-cache -f $(DOCKERFILE) --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "RELEASE_MODE=$(RELEASE_MODE)" --platform linux/amd64,linux/arm64 --push -t $(OPERATORIMAGE) .
272+
else
273+
docker buildx build --no-cache -f $(DOCKERFILE) --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "RELEASE_MODE=$(RELEASE_MODE)" --platform linux/amd64,linux/arm64 -t $(OPERATORIMAGE) .
263274
endif
264275

265276
.PHONY: docker-ubi
266-
docker-ubi: check-vars $(BIN)
267-
docker build --no-cache -f "$(DOCKERFILE).ubi" --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "IMAGE=$(BASEUBIIMAGE)" -t $(OPERATORUBIIMAGE)-local-only-build .
268-
docker build --no-cache -f $(DOCKERFILE) --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "IMAGE=$(OPERATORUBIIMAGE)-local-only-build" -t $(OPERATORUBIIMAGE) .
277+
docker-ubi: check-vars $(VBIN_LINUX_AMD64)
278+
docker build --no-cache -f "$(DOCKERFILE).ubi" --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "RELEASE_MODE=$(RELEASE_MODE)" --build-arg "IMAGE=$(BASEUBIIMAGE)" -t $(OPERATORUBIIMAGE)-local-only-build .
279+
docker build --no-cache -f $(DOCKERFILE) --build-arg "VERSION=${VERSION_MAJOR_MINOR_PATCH}" --build-arg "RELEASE_MODE=$(RELEASE_MODE)" --build-arg "IMAGE=$(OPERATORUBIIMAGE)-local-only-build" -t $(OPERATORUBIIMAGE) .
269280
ifdef PUSHIMAGES
270281
docker push $(OPERATORUBIIMAGE)
271282
endif
@@ -402,7 +413,7 @@ tools: update-vendor
402413
.PHONY: vendor
403414
vendor:
404415
@echo ">> Updating vendor"
405-
@go mod vendor
416+
@ go mod vendor
406417

407418
set-deployment-api-version-v2alpha1: export API_VERSION=2alpha1
408419
set-deployment-api-version-v2alpha1: set-api-version/deployment set-api-version/replication

community.mk

Whitespace-only changes.

pkg/apis/deployment/v1/deployment_spec.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@ func (s DeploymentSpec) IsDisableIPv6() bool {
251251
return util.BoolOrDefault(s.DisableIPv6)
252252
}
253253

254-
// IsNetworkAttachedVolumes returns the value of networkAttachedVolumes, default true
254+
// IsNetworkAttachedVolumes returns the value of networkAttachedVolumes, default false
255255
func (s DeploymentSpec) IsNetworkAttachedVolumes() bool {
256-
return util.BoolOrDefault(s.NetworkAttachedVolumes, true)
256+
return util.BoolOrDefault(s.NetworkAttachedVolumes, false)
257257
}
258258

259259
// GetListenAddr returns "[::]" or "0.0.0.0" depending on IsDisableIPv6

pkg/apis/deployment/v2alpha1/deployment_spec.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,9 @@ func (s DeploymentSpec) IsDisableIPv6() bool {
251251
return util.BoolOrDefault(s.DisableIPv6)
252252
}
253253

254-
// IsNetworkAttachedVolumes returns the value of networkAttachedVolumes, default true
254+
// IsNetworkAttachedVolumes returns the value of networkAttachedVolumes, default false
255255
func (s DeploymentSpec) IsNetworkAttachedVolumes() bool {
256-
return util.BoolOrDefault(s.NetworkAttachedVolumes, true)
256+
return util.BoolOrDefault(s.NetworkAttachedVolumes, false)
257257
}
258258

259259
// GetListenAddr returns "[::]" or "0.0.0.0" depending on IsDisableIPv6

0 commit comments

Comments
 (0)