Skip to content

Commit

Permalink
feat: reduce number of containers
Browse files Browse the repository at this point in the history
feat: reduce number of dockerfiles

this commit reduces number of builded containers to just 2.
One container for disk-virt tasks and second for everything else.
The disk-virt containers requires separate container, because they need
different base image (kubevirt libguestfs which is distroless and we
can't install there anything). Other tasks share the same container,
because they don't need anything special.
This change will help to decrease maintenance effort, because we will
not have to take care about 9 containers, but only about two.
This commit also reduce number of dockerfiles to just two (one for disk-virt tasks,
second for everything else). This will help to reduce time needed to
e.g. bump golang version, or bump base images versions. It will also reduce
complexity of build scripts and it will reduce build time.

New containers will have names:
kubevirt/tekton-tasks
kubevirt/tekton-tasks-disk-virt

kubevirt/tekton-tasks container contains :copy-template, create-vm,
execute-in-vm, generate-ssh-keys, modify-data-object, modify-vm-template
and wait-for-vmi-status tasks.
kubevirt/tekton-tasks-disk-virt container contains: disk-virt-customize
and disk-virt-sysprep

Signed-off-by: Karel Šimon <ksimon@redhat.com>
  • Loading branch information
ksimon1 committed Apr 24, 2023
1 parent 9cfaf98 commit 3e1e8f8
Show file tree
Hide file tree
Showing 78 changed files with 191 additions and 1,012 deletions.
33 changes: 33 additions & 0 deletions build/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal AS builder
RUN microdnf install -y tar gzip && microdnf clean all
ENV GOFLAGS="-mod=vendor"

RUN curl -L https://go.dev/dl/go1.20.2.linux-amd64.tar.gz | tar -C /usr/local -xzf -
ENV PATH=$PATH:/usr/local/go/bin

COPY modules/. /usr/local/go/src
RUN mkdir /out

RUN for TASK_NAME in "copy-template" "create-vm" "execute-in-vm" "generate-ssh-keys" "modify-data-object" "modify-vm-template" "wait-for-vmi-status"; do \
cd /usr/local/go/src/$TASK_NAME/; \
CGO_ENABLED=0 GOOS=linux go build -o /out/${TASK_NAME} cmd/${TASK_NAME}/main.go; \
done

FROM quay.io/centos/centos:stream9
ENV TASK_NAME=tekton-tasks \
USER_UID=1001 \
USER_NAME=${TASK_NAME} \
HOME=/home/${TASK_NAME}

RUN dnf install -y xorriso openssh-clients && dnf clean all
# install task binaries
COPY --from=builder /out/. /usr/local/bin/


COPY build/bin /usr/local/bin
RUN /usr/local/bin/user_setup

ENTRYPOINT ["/usr/local/bin/entrypoint"]
CMD ["--help"]

USER ${USER_UID}
34 changes: 34 additions & 0 deletions build/Dockerfile.DiskVirt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
FROM registry.access.redhat.com/ubi9/ubi-minimal AS taskBuilder
RUN microdnf install -y tar gzip && microdnf clean all
ENV TASK_NAME=disk-virt-sysprep \
GOFLAGS="-mod=vendor" \
GO111MODULE=on
WORKDIR /src/${TASK_NAME}
RUN curl -L https://go.dev/dl/go1.20.2.linux-amd64.tar.gz | tar -C /usr/local -xzf -
ENV PATH=$PATH:/usr/local/go/bin

COPY modules/. /usr/local/go/src
RUN mkdir /out

RUN for TASK_NAME in "disk-virt-customize" "disk-virt-sysprep"; do \
cd /usr/local/go/src/$TASK_NAME/; \
CGO_ENABLED=0 GOOS=linux go build -o /out/${TASK_NAME} cmd/${TASK_NAME}/main.go; \
done

FROM quay.io/kubevirt/libguestfs-tools:v0.59.0
ENV TASK_NAME=disk-virt
ENV USER_UID=1001 \
USER_NAME=${TASK_NAME} \
HOME=/home/${TASK_NAME}

USER 0

# install task binaries
COPY --from=taskBuilder /out/. /usr/local/bin/
COPY build/bin /usr/local/bin

RUN /usr/local/bin/user_setup
ENTRYPOINT ["/usr/local/bin/entrypoint"]
CMD ["--help"]

USER ${USER_UID}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ if ! whoami &>/dev/null; then
fi
fi

exec ${ENTRY_CMD} $@
exec $@
File renamed without changes.
2 changes: 1 addition & 1 deletion configs/cleanup-vm.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
task_name: cleanup-vm
task_category: execute-in-vm
# execute-in-vm.yaml main_image should be also updated to match this one!
main_image: quay.io/kubevirt/tekton-task-execute-in-vm
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/copy-template.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
task_name: copy-template
task_category: copy-template
main_image: quay.io/kubevirt/tekton-task-copy-template
main_image: quay.io/kubevirt/tekton-tasks
is_okd: true
2 changes: 1 addition & 1 deletion configs/create-vm-from-manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
task_name: create-vm-from-manifest
task_category: create-vm
# create-vm-from-template.yaml main_image should be also updated to match this one!
main_image: quay.io/kubevirt/tekton-task-create-vm
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/create-vm-from-template.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
task_name: create-vm-from-template
task_category: create-vm
# create-vm-from-manifest.yaml main_image should be also updated to match this one!
main_image: quay.io/kubevirt/tekton-task-create-vm
main_image: quay.io/kubevirt/tekton-tasks
is_okd: true
2 changes: 1 addition & 1 deletion configs/disk-virt-customize.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: disk-virt-customize
task_category: disk-virt-customize
main_image: quay.io/kubevirt/tekton-task-disk-virt-customize
main_image: quay.io/kubevirt/tekton-task-disk-virt
2 changes: 1 addition & 1 deletion configs/disk-virt-sysprep.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: disk-virt-sysprep
task_category: disk-virt-sysprep
main_image: quay.io/kubevirt/tekton-task-disk-virt-sysprep
main_image: quay.io/kubevirt/tekton-task-disk-virt
2 changes: 1 addition & 1 deletion configs/execute-in-vm.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
task_name: execute-in-vm
task_category: execute-in-vm
# cleanup-vm.yaml main_image should be also updated to match this one!
main_image: quay.io/kubevirt/tekton-task-execute-in-vm
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/generate-ssh-keys.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: generate-ssh-keys
task_category: generate-ssh-keys
main_image: quay.io/kubevirt/tekton-task-generate-ssh-keys
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/modify-data-object.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: modify-data-object
task_category: modify-data-object
main_image: quay.io/kubevirt/tekton-task-modify-data-object
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/modify-object-task.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: modify-object
task_category: modify-object
main_image: quay.io/kubevirt/tekton-task-modify-object
main_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/modify-vm-template.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
task_name: modify-vm-template
task_category: modify-vm-template
main_image: quay.io/kubevirt/tekton-task-modify-vm-template
main_image: quay.io/kubevirt/tekton-tasks
is_okd: true
6 changes: 3 additions & 3 deletions configs/modify-windows-iso-file.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
task_name: modify-windows-iso-file
task_category: modify-windows-iso-file
extract_iso_image: quay.io/kubevirt/tekton-task-disk-virt-customize
modify_iso_image: quay.io/kubevirt/tekton-task-modify-data-object
create_iso_image: quay.io/kubevirt/tekton-task-modify-data-object
extract_iso_image: quay.io/kubevirt/tekton-task-disk-virt
modify_iso_image: quay.io/kubevirt/tekton-tasks
create_iso_image: quay.io/kubevirt/tekton-tasks
2 changes: 1 addition & 1 deletion configs/wait-for-vmi-status.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
task_name: wait-for-vmi-status
task_category: wait-for-vmi-status
main_image: quay.io/kubevirt/tekton-task-wait-for-vmi-status
main_image: quay.io/kubevirt/tekton-tasks
34 changes: 17 additions & 17 deletions manifests/kubernetes/kubevirt-tekton-tasks-kubernetes.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 3e1e8f8

Please sign in to comment.