Skip to content

Commit

Permalink
Build iso image in a single phase
Browse files Browse the repository at this point in the history
Allows to get rid of generic containers.

Change-Id: I7f4485ded4dd39ec44a0746904b626b4a07d0f80
Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
Relates-To: #544
Relates-To: #545
  • Loading branch information
raliev12 committed Nov 17, 2021
1 parent 1aab57a commit e8606af
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 70 deletions.
4 changes: 2 additions & 2 deletions krm-functions/cloud-init/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ARG GO_IMAGE=quay.io/airshipit/golang:1.16.8-buster
ARG RELEASE_IMAGE=quay.io/airshipit/alpine:3.13.5
ARG RELEASE_IMAGE=quay.io/airshipit/image-builder:k8s-1.21-latest-ubuntu_focal

FROM ${GO_IMAGE} as builder
ARG GOPROXY=""

Expand Down Expand Up @@ -28,5 +29,4 @@ RUN make ${MAKE_TARGET}
FROM ${RELEASE_IMAGE} as release
ARG MAKE_TARGET=bin/cloud-init
COPY --from=builder /usr/src/airshipctl/${MAKE_TARGET} /usr/local/bin/config-function
USER 65534
CMD ["/usr/local/bin/config-function"]
13 changes: 12 additions & 1 deletion krm-functions/cloud-init/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ package main
import (
"errors"
"fmt"
"io"
"os"
"os/exec"
"path/filepath"

"sigs.k8s.io/kustomize/api/provider"
Expand Down Expand Up @@ -67,6 +69,15 @@ func docFromRNode(rnode *yaml.RNode) (document.Document, error) {
return collection[0], nil
}

func runCmd(cmd string, opts ...string) error {
c := exec.Command(cmd, opts...)
// allows to observe realtime output from script
w := io.Writer(os.Stderr)
c.Stdout = w
c.Stderr = w
return c.Run()
}

func main() {
fn := func(rl *framework.ResourceList) error {
functionConfigDocument, err := docFromRNode(rl.FunctionConfig)
Expand Down Expand Up @@ -113,7 +124,7 @@ func main() {
}

rl.Items = []*yaml.RNode{}
return nil
return runCmd("/usr/bin/local/entrypoint.sh")
}
cmd := command.Build(framework.ResourceListProcessorFunc(fn), command.StandaloneEnabled, false)
if err := cmd.Execute(); err != nil {
Expand Down
56 changes: 14 additions & 42 deletions manifests/phases/executors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ spec:
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
metadata:
name: iso-cloud-init-data
name: iso-build-image
labels:
airshipit.org/deploy-k8s: "false"
spec:
Expand All @@ -263,6 +263,19 @@ spec:
src: /srv/images
dst: /config
rw: true
envVars:
- IMAGE_TYPE=iso
- BUILDER_CONFIG=/config/builder-conf.yaml
- USER_DATA_FILE=user-data
- NET_CONFIG_FILE=network-data
- OUTPUT_FILE_NAME=ephemeral.iso
- OUTPUT_METADATA_FILE_NAME=output1-metadata.yaml
- http_proxy
- https_proxy
- HTTP_PROXY
- HTTPS_PROXY
- no_proxy
- NO_PROXY
config: |
apiVersion: airshipit.org/v1alpha1
kind: IsoConfiguration
Expand All @@ -281,47 +294,6 @@ config: |
outputFileName: ephemeral.iso
container:
volume: /srv/images:/config # for compatibility with image-builder
---
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
metadata:
name: iso-build-image
labels:
airshipit.org/deploy-k8s: "false"
spec:
type: airship
airship:
privileged: true
containerRuntime: docker
cmd:
- /bin/bash
- -c
- /usr/bin/local/entrypoint.sh 1>&2
image: quay.io/airshipit/image-builder:k8s-1.19-latest-ubuntu_focal
mounts:
- type: bind
src: /srv/images
dst: /config
rw: true
envVars:
- IMAGE_TYPE=iso
- BUILDER_CONFIG=/config/builder-conf.yaml
- USER_DATA_FILE=user-data
- NET_CONFIG_FILE=network-data
- OUTPUT_FILE_NAME=ephemerial.iso
- OUTPUT_METADATA_FILE_NAME=output-metadata.yaml
- http_proxy
- https_proxy
- HTTP_PROXY
- HTTPS_PROXY
- no_proxy
- NO_PROXY
config: |
apiVersion: airshipit.org/v1alpha1
kind: DoesNotMatter
metadata:
name: isogen
---
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
Expand Down
12 changes: 1 addition & 11 deletions manifests/phases/phases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -249,24 +249,14 @@ config:
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
metadata:
name: iso-cloud-init-data
config:
executorRef:
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
name: iso-cloud-init-data
documentEntryPoint: ephemeral/bootstrap
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
metadata:
name: iso-build-image
config:
executorRef:
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
name: iso-build-image
documentEntryPoint: ephemeral/bootstrap
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
Expand Down
13 changes: 1 addition & 12 deletions manifests/phases/replacements/versions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,4 @@ metadata:
config.kubernetes.io/function: |-
container:
image: localhost/replacement-transformer
replacements:
- source:
objref:
kind: VersionsCatalogue
name: versions-airshipctl
fieldref: spec.images.image_builder.image_builder.image_builder.image
target:
objref:
kind: GenericContainer
name: iso-build-image
fieldrefs: ["spec.image"]

replacements: []
1 change: 0 additions & 1 deletion manifests/type/gating/phases/plan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ metadata:
name: iso
description: "Runs phases to build iso image"
phases:
- name: iso-cloud-init-data
- name: iso-build-image
validation:
kindsToSkip:
Expand Down
2 changes: 1 addition & 1 deletion tools/deployment/24_build_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ sudo chown -R ${USER_NAME} ${IMAGE_DIR}
unset IFS
for plan in $IMAGE_PHASE_PLANS; do
echo "Build phase plan: $plan"
airshipctl plan run $plan --debug
sudo --preserve-env=SOPS_IMPORT_PGP airshipctl plan run $plan --debug
done

echo "List generated images"
Expand Down

0 comments on commit e8606af

Please sign in to comment.