From f50d6136b97daac982bdea0bb4abba6b9aacf70a Mon Sep 17 00:00:00 2001 From: Marcus Noble Date: Thu, 20 Jan 2022 08:58:17 +0000 Subject: [PATCH] Added kube-template and kube-trigger-cronjob Signed-off-by: Marcus Noble --- home/.bin/kube-template | 65 ++++++++++++++++++++++++++++++++++ home/.bin/kube-trigger-cronjob | 38 ++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100755 home/.bin/kube-template create mode 100755 home/.bin/kube-trigger-cronjob diff --git a/home/.bin/kube-template b/home/.bin/kube-template new file mode 100755 index 0000000..5d16b41 --- /dev/null +++ b/home/.bin/kube-template @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +NAMESPACE="" + +set -e + +print_usage() { + echo "kube-template - Quickly template up kubernetes resources" + echo " " + echo "kube-template [options] RESOURCE_KIND NAME [extra arguments]" + echo " " + echo "Options:" + echo "-h, --help show this help text" + echo "-n, --namespace the namespace the to search in" +} + +while test $# -gt 0; do + case "$1" in + -n|--namespace) + shift + NAMESPACE="--namespace $1" + shift + ;; + -h|--help) + print_usage + exit 0 + ;; + *) + break + ;; + esac +done + +NAME=${2} + +addLabelsAndAnnotations() { + yq e '.metadata.labels."app.kubernetes.io/name" = "'${NAME}'" | + .metadata.labels."giantswarm.io/user" = "'$(whoami)'" | + .metadata.annotations."giantswarm.io/description" = ""' - +} + +case "$1" in + deployment|dp) + kubectl create ${NAMESPACE} deployment ${NAME} --image=nginx:1.21 --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; + ingress|in) + kubectl create ${NAMESPACE} ingress ${NAME} --dry-run=client -o yaml --rule=example.com/=my-service:web ${@:3} | addLabelsAndAnnotations + ;; + service|svc) + kubectl create ${NAMESPACE} service clusterip ${NAME} --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; + configmap|cm) + kubectl create ${NAMESPACE} configmap ${NAME} --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; + secret|sec) + kubectl create ${NAMESPACE} secret generic ${NAME} --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; + cronjob|cj) + kubectl create ${NAMESPACE} cronjob ${NAME} --image=alpine:latest --schedule="1 * * * *" --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; + job|jo) + kubectl create ${NAMESPACE} job ${NAME} --image=alpine:latest --dry-run=client -o yaml ${@:3} | addLabelsAndAnnotations + ;; +esac + diff --git a/home/.bin/kube-trigger-cronjob b/home/.bin/kube-trigger-cronjob new file mode 100755 index 0000000..115c963 --- /dev/null +++ b/home/.bin/kube-trigger-cronjob @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +set -e + +NAMESPACE="$(kubectl config view --minify --output 'jsonpath={..namespace}')" +NAMESPACE=${NAMESPACE:-default} + +print_usage() { + echo "kube-trigger-cronjob - Triggers a CronJob by creating a new job based on it" + echo " " + echo "kube-trigger-cronjob [options] CRONJOB_NAME" + echo " " + echo "Options:" + echo "-h, --help show this help text" + echo "-n, --namespace the namespace the to search in" +} + +while test $# -gt 0; do + case "$1" in + -n|--namespace) + shift + NAMESPACE=$1 + shift + ;; + -h|--help) + print_usage + exit 0 + ;; + *) + break + ;; + esac +done + +NAME=${1} + +kubectl create job --namespace ${NAMESPACE} ${NAME}-manual --from=cronjob/${NAME} ${@:3} +