Skip to content

Commit d30220c

Browse files
authored
Merge pull request #61 from alicefr/composefs-backend
Add composefs backend
2 parents 8e49f3b + 4e9c333 commit d30220c

7 files changed

Lines changed: 47 additions & 9 deletions

File tree

.github/workflows/build-node-image.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,27 @@ jobs:
9797
podman push ${PUSH_DEST}:${TAG}-disk
9898
podman tag ${DISK_SRC} ${PUSH_DEST}:latest-disk
9999
podman push ${PUSH_DEST}:latest-disk
100+
101+
- name: Build composefs disk image
102+
working-directory: node-images/fedora
103+
run: |
104+
BOOTC_DIGEST="${{ steps.push-bootc.outputs.digest }}"
105+
PUSH_DEST="${{ steps.push-bootc.outputs.push_dest }}"
106+
if [ -n "${BOOTC_DIGEST}" ] && [ -n "${PUSH_DEST}" ]; then
107+
make build-disk-image-composefs BOOTC_IMAGE="${PUSH_DEST}" BOOTC_DIGEST="${BOOTC_DIGEST}"
108+
else
109+
make build-disk-image-composefs
110+
fi
111+
112+
- name: Push composefs disk image
113+
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.push)
114+
working-directory: node-images/fedora
115+
run: |
116+
TAG=${{ steps.meta.outputs.tag }}
117+
DISK_SRC=$(make -s print-node-image-composefs)
118+
PUSH_DEST=${{ env.PUSH_REGISTRY }}/${{ env.PUSH_IMAGE }}
119+
120+
podman tag ${DISK_SRC} ${PUSH_DEST}:${TAG}-disk-composefs
121+
podman push ${PUSH_DEST}:${TAG}-disk-composefs
122+
podman tag ${DISK_SRC} ${PUSH_DEST}:latest-disk-composefs
123+
podman push ${PUSH_DEST}:latest-disk-composefs

internal/cluster/calico.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5026,7 +5026,7 @@ spec:
50265026
# Used to install CNI.
50275027
- name: cni-bin-dir
50285028
hostPath:
5029-
path: /opt/cni/bin
5029+
path: /var/lib/cni/bin
50305030
- name: cni-net-dir
50315031
hostPath:
50325032
path: /etc/cni/net.d

internal/cluster/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func (c *Cluster) Init(ctx context.Context, opts InitOptions) error {
119119
return fmt.Errorf("failed to install Calico: %w", err)
120120
}
121121

122-
c.logger.Info("CNI plugins will be installed to /opt/cni/bin (tmpfs overlay for bootc)")
122+
c.logger.Info("CNI plugins will be installed to /var/lib/cni/bin")
123123

124124
// Wait for Calico to write its CNI config before installing CoreDNS
125125
c.logger.Info("Waiting for Calico CNI configuration...")

internal/node/templates/user-data.yaml.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ write_files:
3232
content: |
3333
[crio.network]
3434
plugin_dirs = [
35-
"/opt/cni/bin",
3635
"/var/lib/cni/bin",
3736
"/usr/libexec/cni",
3837
]
@@ -75,11 +74,12 @@ runcmd:
7574
- sysctl -w net.ipv4.ip_forward=1
7675
- echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-kubernetes.conf
7776
- mkdir -p /var/lib/kubelet/volumeplugins
77+
- mkdir -p /var/lib/cni/bin
7878
- mkdir -p /var/mnt/cluster_images
7979
- mkdir -p /var/lib/containers/storage
8080
- systemctl daemon-reload
8181
- systemctl enable --now var-mnt-cluster_images.mount
82-
- systemctl enable --now ostree-state-overlay@opt.service
82+
- systemctl enable --now ostree-state-overlay@opt.service || true
8383
- systemctl enable --now qemu-guest-agent
8484
- nmcli connection modify "cloud-init enp2s0" ipv4.dns-search "~{{.ClusterDomain}} {{.ClusterDomain}}" ipv4.ignore-auto-dns yes
8585
- nmcli connection up "cloud-init enp2s0"

node-images/fedora/Containerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ FROM scratch AS root
3434
COPY --from=builder /target-rootfs/ /
3535

3636
RUN passwd -d root
37-
RUN sed -i 's|"/opt/cni/bin"|"/var/lib/cni/bin"|g' /etc/crio/crio.conf
37+
RUN sed -i 's|"/opt/cni/bin"|"/var/lib/cni/bin"|g' /etc/crio/crio.conf && \
38+
sed -i 's|"/opt/cni/net.d"|"/etc/cni/net.d"|g' /etc/crio/crio.conf
3839
RUN bootc container lint
3940

4041
LABEL containers.bootc 1

node-images/fedora/Containerfile.disk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ ARG STORAGE_PATH
99
ARG BOOTC_IMAGE
1010
ARG DISK_SIZE=10G
1111
ARG MEMORY=4G
12+
ARG BCVK_EXTRA_ARGS=""
1213
ENV CONTAINERS_STORAGE_CONF=/tmp/storage.conf
1314
RUN mkdir -p /output && \
1415
printf "[storage]\ndriver = \"overlay\"\ngraphroot = \"${STORAGE_PATH}\"\n" > $CONTAINERS_STORAGE_CONF && \
@@ -19,6 +20,7 @@ RUN mkdir -p /output && \
1920
--format qcow2 \
2021
--memory ${MEMORY} \
2122
--disk-size ${DISK_SIZE} \
23+
${BCVK_EXTRA_ARGS} \
2224
${BOOTC_IMAGE} \
2325
/output/disk.qcow2
2426
RUN podman run --rm ${BOOTC_IMAGE} kubeadm config images list > /output/images.txt

node-images/fedora/Makefile

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
.PHONY: build-bootc-image build-disk-image clean help
1+
.PHONY: build-bootc-image build-disk-image build-disk-image-composefs clean help
22

33
KUBE_MINOR ?= 1.35
44
FEDORA_VERSION ?= 44
55
DISK_SIZE ?= 10G
66
BUILD_MEMORY ?= 4G
7+
BCVK_EXTRA_ARGS ?=
78

89
IMAGE_TAG ?= v$(KUBE_MINOR)-fedora-$(FEDORA_VERSION)
910
REGISTRY ?= ghcr.io/alicefr/bink
1011
BOOTC_IMAGE ?= $(REGISTRY)/node:$(IMAGE_TAG)
1112
NODE_IMAGE ?= $(REGISTRY)/node:$(IMAGE_TAG)-disk
13+
NODE_IMAGE_COMPOSEFS ?= $(REGISTRY)/node:$(IMAGE_TAG)-disk-composefs
1214
BOOTC_DIGEST ?=
1315

1416
# Build the OCI bootc image (k8s + cri-o)
@@ -47,13 +49,17 @@ build-disk-image:
4749
--build-arg MEMORY="$(BUILD_MEMORY)" \
4850
--build-arg KUBE_MINOR="$(KUBE_MINOR)" \
4951
--build-arg BOOTC_DIGEST="$$BOOTC_DIGEST" \
52+
--build-arg BCVK_EXTRA_ARGS="$(BCVK_EXTRA_ARGS)" \
5053
-t $(NODE_IMAGE) \
5154
-f Containerfile.disk \
5255
.
5356
@echo "✅ Node image built: $(NODE_IMAGE)"
5457
@echo ""
5558
@echo "This image can be used with: bink cluster start --node-image $(NODE_IMAGE)"
5659

60+
build-disk-image-composefs:
61+
$(MAKE) build-disk-image BCVK_EXTRA_ARGS="--composefs-backend" NODE_IMAGE="$(NODE_IMAGE_COMPOSEFS)"
62+
5763
print-image-tag:
5864
@echo $(IMAGE_TAG)
5965

@@ -63,6 +69,9 @@ print-bootc-image:
6369
print-node-image:
6470
@echo $(NODE_IMAGE)
6571

72+
print-node-image-composefs:
73+
@echo $(NODE_IMAGE_COMPOSEFS)
74+
6675
clean:
6776
@echo "=== Cleaning up ==="
6877
podman rmi -f $(BOOTC_IMAGE) $(NODE_IMAGE) 2>/dev/null || true
@@ -72,9 +81,10 @@ help:
7281
@echo "Makefile for building bink node images (Fedora)"
7382
@echo ""
7483
@echo "Targets:"
75-
@echo " build-bootc-image - Build the OCI bootc image"
76-
@echo " build-disk-image - Build the OCI disk image with qcow2 (default)"
77-
@echo " clean - Remove built images"
84+
@echo " build-bootc-image - Build the OCI bootc image"
85+
@echo " build-disk-image - Build the OCI disk image with qcow2 (default, ostree backend)"
86+
@echo " build-disk-image-composefs - Build the OCI disk image with composefs backend"
87+
@echo " clean - Remove built images"
7888
@echo ""
7989
@echo "Variables:"
8090
@echo " BOOTC_IMAGE - Bootc OCI image name (default: $(BOOTC_IMAGE))"
@@ -83,3 +93,4 @@ help:
8393
@echo " FEDORA_VERSION - Fedora version (default: $(FEDORA_VERSION))"
8494
@echo " DISK_SIZE - VM disk size (default: $(DISK_SIZE))"
8595
@echo " BUILD_MEMORY - Memory for bcvk build (default: $(BUILD_MEMORY))"
96+
@echo " BCVK_EXTRA_ARGS - Extra arguments passed to bcvk to-disk (default: none)"

0 commit comments

Comments
 (0)