Skip to content

Instantly share code, notes, and snippets.

@alexellis
Last active January 26, 2024 07:10
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save alexellis/87d732a4b5fe056f5bf903aa6e6437ed to your computer and use it in GitHub Desktop.
Save alexellis/87d732a4b5fe056f5bf903aa6e6437ed to your computer and use it in GitHub Desktop.
Use a Kubernetes Job and Kaniko to build an OpenFaaS function from Git
# Alex Ellis 2018
# Example from: https://blog.alexellis.io/quick-look-at-google-kaniko/
# Pre-steps:
# kubectl create secret generic docker-config --from-file $HOME/.docker/config.json
# Other potential optimizations (suggested by @errordeveloper)
# - Store "templates" in a permanent volume
# - Download source via "tar" instead of git clone
apiVersion: batch/v1
kind: Job
metadata:
name: build-job
labels:
app: kaniko-example
spec:
template:
spec:
containers:
- name: build
image: gcr.io/kaniko-project/executor:latest
args: ["-c", "/workspace/build/hello-world/", "-d", "alexellis2/hello-world-auto:kaniko"]
env:
- name: DOCKER_CONFIG
value: "/kaniko/secrets"
volumeMounts:
- name: build-context
mountPath: /workspace
- name: docker-config
mountPath: "/kaniko/secrets"
readOnly: true
initContainers:
- name: clone
image: alpine:3.7
command: ["/bin/sh","-c"]
args: ['apk add --no-cache git && git clone https://github.com/alexellis/hello-world-kaniko /workspace/ && git clone https://github.com/openfaas/templates /workspace/templates']
volumeMounts:
- name: build-context
mountPath: /workspace
- name: shrinkwrap
image: openfaas/faas-cli:0.6.14
command: ["/bin/sh","-c"]
args: ["cp -r ./templates/template . && faas-cli build --shrinkwrap -f stack.yml"]
workingDir: /workspace
volumeMounts:
- name: build-context
mountPath: /workspace
restartPolicy: Never
volumes:
- name: build-context
emptyDir: {}
- name: docker-config
secret:
secretName: docker-config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment