Skip to content

Instantly share code, notes, and snippets.

@infinitydon
Forked from alexellis/job.yaml
Created January 8, 2019 15:41
Show Gist options
  • Save infinitydon/df77ea80347192f8a8f470d8d8ff90f3 to your computer and use it in GitHub Desktop.
Save infinitydon/df77ea80347192f8a8f470d8d8ff90f3 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