概述
因为对 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
|
参考资料
- calico
警告
本文最后更新于 2021年12月12日,文中内容可能已过时,请谨慎参考。