1
- .PHONY : test e2e-test deps cover gofmt gofmt-fix license-check clean tar.gz docker-push release docker-push-all flannel-git docker-manifest-amend docker-manifest-push
1
+ .PHONY : test e2e-test deps cover gofmt gofmt-fix license-check clean tar.gz release buildx-create-builder build-multi-arch
2
2
3
3
# Registry used for publishing images
4
4
REGISTRY? =quay.io/coreos/flannel
@@ -58,9 +58,9 @@ dist/flanneld-$(ARCH): deps dist/qemu-$(ARCH)-static
58
58
mv dist/flanneld dist/flanneld-$(ARCH ) '
59
59
60
60
# # Create a docker image on disk for a specific arch and tag
61
- image : dist/flanneld-$(TAG ) -$(ARCH ) .docker
62
- dist/flanneld-$(TAG ) -$(ARCH ) .docker : dist/flanneld- $( ARCH )
63
- docker build -f images/Dockerfile --platform=$(ARCH ) --build-arg TAG=$(TAG ) -t $(REGISTRY ) :$(TAG ) -$(ARCH ) .
61
+ image : deps dist/flanneld-$(TAG ) -$(ARCH ) .docker
62
+ dist/flanneld-$(TAG ) -$(ARCH ) .docker :
63
+ docker buildx build -f images/Dockerfile --platform=$(ARCH ) --build-arg TAG=$(TAG ) -t $(REGISTRY ) :$(TAG ) -$(ARCH ) --load .
64
64
docker save -o dist/flanneld-$(TAG ) -$(ARCH ) .docker $(REGISTRY ) :$(TAG ) -$(ARCH )
65
65
66
66
# amd64 gets an image without the suffix too (i.e. it's the default)
@@ -126,14 +126,6 @@ verify-modules:
126
126
!go mod tidy 2>&1|read && \
127
127
!go vet 2>&1|read'
128
128
129
- gofmt-fix :
130
- docker run --rm -e CGO_ENABLED=$(CGO_ENABLED ) -e GOARCH=$(ARCH ) \
131
- -u $(shell id -u) :$(shell id -g) \
132
- -v $(CURDIR ) :/go/src/github.com/flannel-io/flannel \
133
- -v $(CURDIR ) /dist:/go/src/github.com/flannel-io/flannel/dist \
134
- golang:$(GO_VERSION ) /bin/bash -c ' \
135
- cd /go/src/github.com/flannel-io/flannel && \
136
- gofmt -w $(PACKAGES ) '
137
129
138
130
bash_unit :
139
131
wget https://raw.githubusercontent.com/pgrange/bash_unit/v2.0.1/bash_unit
@@ -157,7 +149,7 @@ endif
157
149
158
150
# Make a release after creating a tag
159
151
# To build cross platform Docker images, the qemu-static binaries are needed. On ubuntu "apt-get install qemu-user-static"
160
- release : tar.gz dist/qemu-s390x-static dist/qemu-ppc64le-static dist/qemu-arm64-static dist/qemu-arm-static dist/qemu-riscv64-static release-chart release-helm # release-tests
152
+ release : tar.gz dist/qemu-s390x-static dist/qemu-ppc64le-static dist/qemu-arm64-static dist/qemu-arm-static dist/qemu-riscv64-static release-chart release-helm
161
153
ARCH=amd64 make dist/flanneld-$(TAG ) -amd64.docker
162
154
ARCH=arm make dist/flanneld-$(TAG ) -arm.docker
163
155
ARCH=arm64 make dist/flanneld-$(TAG ) -arm64.docker
@@ -215,108 +207,18 @@ tar.gz:
215
207
tar --transform=' flags=r;s|-riscv64||' -zcvf dist/flannel-$(TAG ) -linux-riscv64.tar.gz -C dist flanneld-riscv64 mk-docker-opts.sh ../README.md
216
208
tar -tvf dist/flannel-$(TAG ) -linux-riscv64.tar.gz
217
209
218
- release-tests : release-etcd-tests release-k8s-tests
219
-
220
- release-etcd-tests : bash_unit
221
- # Run the functional tests with different etcd versions.
222
- ETCD_IMG=" quay.io/coreos/etcd:latest" ./bash_unit dist/functional-test.sh
223
- ETCD_IMG=" quay.io/coreos/etcd:v3.2.7" ./bash_unit dist/functional-test.sh
224
- # Etcd v2 docker image format is different. Override the etcd binary location so it works.
225
- ETCD_IMG=" quay.io/coreos/etcd:v2.3.8" ETCD_LOCATION=" " ./bash_unit dist/functional-test.sh
226
-
227
- release-k8s-tests : bash_unit
228
- # Run the functional tests with different k8s versions. Currently these are the latest point releases.
229
- # This list should be updated during the release process.
230
- K8S_VERSION=" 1.25.2" HYPERKUBE_CMD=" " HYPERKUBE_APISERVER_CMD=" kube-apiserver" ./bash_unit dist/functional-test-k8s.sh
231
- K8S_VERSION=" 1.24.6" HYPERKUBE_CMD=" " HYPERKUBE_APISERVER_CMD=" kube-apiserver" ./bash_unit dist/functional-test-k8s.sh
232
- K8S_VERSION=" 1.23.12" HYPERKUBE_CMD=" " HYPERKUBE_APISERVER_CMD=" kube-apiserver" ./bash_unit dist/functional-test-k8s.sh
233
- K8S_VERSION=" 1.22.15" HYPERKUBE_CMD=" " HYPERKUBE_APISERVER_CMD=" kube-apiserver" ./bash_unit dist/functional-test-k8s.sh
234
- K8S_VERSION=" 1.17.3" HYPERKUBE_CMD=" " HYPERKUBE_APISERVER_CMD=" kube-apiserver" ./bash_unit dist/functional-test-k8s.sh
235
-
236
- docker-push : dist/flanneld-$(TAG ) -$(ARCH ) .docker
237
- docker push $(REGISTRY ) :$(TAG ) -$(ARCH )
238
-
239
- docker-manifest-amend :
240
- DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create --amend $(REGISTRY ) :$(TAG ) $(REGISTRY ) :$(TAG ) -$(ARCH )
241
-
242
- docker-manifest-push :
243
- DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push --purge $(REGISTRY ) :$(TAG )
244
-
245
- docker-push-all :
246
- ARCH=amd64 make docker-push docker-manifest-amend
247
- ARCH=arm make docker-push docker-manifest-amend
248
- ARCH=arm64 make docker-push docker-manifest-amend
249
- ARCH=ppc64le make docker-push docker-manifest-amend
250
- ARCH=s390x make docker-push docker-manifest-amend
251
- ARCH=riscv64 make docker-push docker-manifest-amend
252
- make docker-manifest-push
253
-
254
- flannel-git :
255
- ARCH=amd64 REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -amd64.docker docker-push docker-manifest-amend
256
- ARCH=arm REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -arm.docker docker-push docker-manifest-amend
257
- ARCH=arm64 REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -arm64.docker docker-push docker-manifest-amend
258
- ARCH=ppc64le REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -ppc64le.docker docker-push docker-manifest-amend
259
- ARCH=s390x REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -s390x.docker docker-push docker-manifest-amend
260
- ARCH=riscv64 REGISTRY=quay.io/coreos/flannel-git make clean dist/flanneld-$(TAG ) -riscv64.docker docker-push docker-manifest-amend
261
- REGISTRY=quay.io/coreos/flannel-git make docker-manifest-push
262
-
263
210
install :
264
211
# This is intended as just a developer convenience to help speed up non-containerized builds
265
212
# It is NOT how you install flannel
266
213
CGO_ENABLED=$(CGO_ENABLED ) go install -v github.com/flannel-io/flannel
267
214
268
- minikube-start :
269
- minikube start --network-plugin cni
270
-
271
- minikube-build-image :
272
- CGO_ENABLED=1 go build -v -o dist/flanneld-amd64
273
- # Make sure the minikube docker is being used "eval $(minikube docker-env)"
274
- sh -c ' eval $$(minikube docker-env) && docker build -f images/Dockerfile.amd64 -t flannel/minikube .'
275
-
276
- minikube-deploy-flannel :
277
- kubectl apply -f Documentation/minikube.yml
278
-
279
- minikube-remove-flannel :
280
- kubectl delete -f Documentation/minikube.yml
281
-
282
- minikube-restart-pod :
283
- # Use this to pick up a new image
284
- kubectl delete pods -l app=flannel --grace-period=0
285
-
286
- kubernetes-logs :
287
- kubectl logs ` kubectl get po -l app=flannel -o=custom-columns=NAME:metadata.name --no-headers=true` -c kube-flannel -f
288
-
289
- LOCAL_IP_ENV? =$(shell ip route get 8.8.8.8 | head -1 | awk '{print $$7}')
290
- run-etcd : stop-etcd
291
- docker run --detach \
292
- -p 2379:2379 \
293
- --name flannel-etcd quay.io/coreos/etcd \
294
- -e ETCD_UNSUPPORTED_ARCH=$(ARCH ) \
295
- etcd \
296
- --advertise-client-urls " http://$( LOCAL_IP_ENV) :2379,http://127.0.0.1:2379,http://$( LOCAL_IP_ENV) :4001,http://127.0.0.1:4001" \
297
- --listen-client-urls " http://0.0.0.0:2379,http://0.0.0.0:4001"
298
-
299
- stop-etcd :
300
- @-docker rm -f flannel-etcd
301
-
302
- run-k8s-apiserver : stop-k8s-apiserver
303
- docker run --detach --net=host \
304
- --name calico-k8s-apiserver \
305
- docker.io/rancher/hyperkube:v$(K8S_VERSION ) -rancher1-linux-amd64 \
306
- /hyperkube apiserver --etcd-servers=http://$(LOCAL_IP_ENV ) :2379 \
307
- --service-cluster-ip-range=10.101.0.0/16
308
-
309
- stop-k8s-apiserver :
310
- @-docker rm -f calico-k8s-apiserver
311
-
312
- run-local-kube-flannel-with-prereqs : run-etcd run-k8s-apiserver dist/flanneld
313
- while ! kubectl apply -f dist/fake-node.yaml; do sleep 1; done
314
- $(MAKE ) run-local-kube-flannel
315
-
316
- run-local-kube-flannel :
317
- # Currently this requires the netconf to be in /etc/kube-flannel/net-conf.json
318
- sudo NODE_NAME=test dist/flanneld --kube-subnet-mgr --kube-api-url http://127.0.0.1:8080
319
-
320
215
deps :
321
216
go mod vendor
322
217
go mod tidy
218
+
219
+ buildx-create-builder :
220
+ docker buildx create --name mybuilder --use --bootstrap
221
+
222
+ build-multi-arch :
223
+ docker buildx build --platform linux/amd64,linux/arm64,linux/arm,linux/s390x,linux/ppc64le,linux/riscv64 -t $(REGISTRY ) :$(TAG ) -f images/Dockerfile --build-arg TAG=$(TAG ) -o type=oci,dest=dist/flannel_oci.tar --progress plain .
224
+
0 commit comments