Skip to content

Instantly share code, notes, and snippets.

@dimroc
Last active October 3, 2017 02:49
Show Gist options
  • Select an option

  • Save dimroc/15fee5635345bc2b8acd9ef00410cb17 to your computer and use it in GitHub Desktop.

Select an option

Save dimroc/15fee5635345bc2b8acd9ef00410cb17 to your computer and use it in GitHub Desktop.
Kubernetes rake <arbitrary tasks> job runner
#!/bin/bash
function join_by { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; }
template=`cat ./jobs/rake.yaml`
joined=$(join_by \",\" $@)
args=[\"$joined\"]
job="${template//"\$\$RAKECMD"/$args}"
echo "$job" | kubectl create -f -
kubectl get pods -a
apiVersion: batch/v1
kind: Job
metadata:
name: rake
spec:
template:
metadata:
name: rake
spec:
restartPolicy: Never
containers:
- name: rails
image: us.gcr.io/counting-company-production/rails
envFrom:
- secretRef:
name: rails-environment
volumeMounts:
- name: cloudstorage-instance-credentials
mountPath: /secrets
readOnly: true
command: ["rake"]
args: $$RAKECMD
volumes:
- name: cloudstorage-instance-credentials
secret:
secretName: cloudstorage-instance-credentials
@dimroc

dimroc commented Oct 3, 2017

Copy link
Copy Markdown
Author

Usage:

./kuberake db:migrate db:seed

output

NAME                                READY     STATUS      RESTARTS   AGE
cloudsqlproxy-1733271362-kzrrc      1/1       Running     0          1h
ml-deployment-1367760623-9j1bl      1/1       Running     0          1h
rails-deployment-4017203545-fc324   1/1       Running     0          1h
rake-bbxvc                          0/1       Completed   0          38s

Used fancy bash join found here: https://stackoverflow.com/questions/1527049/join-elements-of-an-array

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment