目录

Calico系列-00-编译

概述

因为对 Calico Flex 要做点小改造,所以需要了解一下其打包的方式。

编译过程

进入 Flex,查看 Makefile,看看具体的步骤。执行一下 make image,会发现 Flex 的编译也是在 Docker 镜像里执行的,这是符合预期的,因为在本地环境去编译和构建,可能会有很多非标的情况出现,为了避免这种问题,一般都会采用在标准镜像里进行编译。

因为用了 docker buildx,所以这里涉及了不同架构的 Dockerfile。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
image: $(FELIX_IMAGE)
$(FELIX_IMAGE): $(FELIX_IMAGE)-$(ARCH)
$(FELIX_IMAGE)-$(ARCH): $(FV_BINARY) \
                        bin/calico-bpf \
			bin/pktgen \
			bin/test-connection \
			bin/test-workload \
                        build-bpf \
                        docker-image/calico-felix-wrapper \
                        docker-image/felix.cfg \
                        docker-image/Dockerfile* \
                        register
	# Reconstruct the bin and bpf directories because we don't want to accidentally add
	# leftover files (say from a build on another branch) into the docker image.
	rm -rf docker-image/bin
	mkdir -p docker-image/bin
	cp $(FV_BINARY) docker-image/bin/
	cp bin/calico-bpf docker-image/bin/
	cp bin/pktgen docker-image/bin/
	cp bin/test-connection docker-image/bin/
	cp bin/test-workload docker-image/bin/
	rm -rf docker-image/bpf
	mkdir -p docker-image/bpf/bin
	# Copy only the files we're explicitly expecting (in case we have left overs after switching branch).
	cp $(ALL_BPF_PROGS) docker-image/bpf/bin
	$(DOCKER_BUILD) --build-arg FV_BINARY=$(FV_BINARY) -t $(FELIX_IMAGE):latest-$(ARCH) --file ./docker-image/Dockerfile.$(ARCH) docker-image --load;
	$(MAKE) retag-build-images-with-registries VALIDARCHES=$(ARCH) IMAGETAG=latest

参考资料

  1. calico
警告
本文最后更新于 2021年12月12日,文中内容可能已过时,请谨慎参考。