This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+76
View File
@@ -0,0 +1,76 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: << resource_name >>
namespace: << namespace >>
spec:
schedule: "<< schedule >>"
suspend: << suspend | lower >>
concurrencyPolicy: << concurrency_policy >>
successfulJobsHistoryLimit: << successful_jobs_history_limit >>
failedJobsHistoryLimit: << failed_jobs_history_limit >>
jobTemplate:
spec:
backoffLimit: << backoff_limit >>
<%- if ttl_seconds_after_finished_enabled %>
ttlSecondsAfterFinished: << ttl_seconds_after_finished >>
<%- endif %>
template:
metadata:
labels:
app: << app_label >>
spec:
<%- if service_account_name %>
serviceAccountName: << service_account_name >>
<%- endif %>
restartPolicy: << restart_policy >>
containers:
- name: << container_name >>
image: << image >>
imagePullPolicy: << image_pull_policy >>
<%- if command_enabled %>
command:
<%- for command_item in command_items.split(',') %>
- "<< command_item.strip() >>"
<%- endfor %>
<%- endif %>
<%- if args_enabled %>
args:
<%- for args_item in args_items.split(',') %>
- "<< args_item.strip() >>"
<%- endfor %>
<%- endif %>
<%- if env_literal_enabled or env_secret_enabled %>
env:
<%- if env_literal_enabled %>
- name: << env_literal_name >>
value: "<< env_literal_value >>"
<%- endif %>
<%- if env_secret_enabled %>
- name: << env_secret_name >>
valueFrom:
secretKeyRef:
name: << env_secret_secret_name >>
key: << env_secret_secret_key >>
<%- endif %>
<%- endif %>
<%- if pvc_mount_enabled %>
volumeMounts:
- name: app-storage
mountPath: << pvc_mount_path >>
<%- endif %>
<%- if resources_enabled %>
resources:
limits:
cpu: << resources_cpu_limit >>
memory: << resources_memory_limit >>
requests:
cpu: << resources_cpu_request >>
memory: << resources_memory_request >>
<%- endif %>
<%- if pvc_mount_enabled %>
volumes:
- name: app-storage
persistentVolumeClaim:
claimName: << pvc_claim_name >>
<%- endif %>
+405
View File
@@ -0,0 +1,405 @@
{
"slug": "core-cronjob",
"kind": "kubernetes",
"metadata": {
"name": "Kubernetes CronJob",
"description": "Creates a Kubernetes CronJob with configurable schedule, image, command and args lists, simple environment variables, optional PVC mounting, and optional resource requests and limits.",
"tags": [],
"icon": {
"provider": "simple-icons",
"id": "kubernetes"
},
"draft": false,
"version": {
"name": "1.31.0",
"source_dep_name": "manual/core-cronjob"
}
},
"variables": [
{
"title": "General",
"name": "general",
"items": [
{
"name": "resource_name",
"type": "str",
"title": "CronJob name",
"required": false,
"default": "app-cronjob",
"config": {
"placeholder": "app-cronjob"
}
},
{
"name": "namespace",
"type": "str",
"title": "Namespace",
"required": false,
"default": "default",
"config": {
"placeholder": "default"
}
},
{
"name": "app_label",
"type": "str",
"title": "App Label",
"required": false,
"default": "app",
"config": {
"placeholder": "app"
}
},
{
"name": "schedule",
"type": "str",
"title": "Schedule",
"required": false,
"default": "0 3 * * *",
"description": "Cron expression used by the CronJob.",
"config": {
"placeholder": "0 3 * * *"
}
},
{
"name": "suspend",
"type": "bool",
"title": "Suspend",
"required": false,
"default": false,
"description": "Suspend future scheduled runs."
},
{
"name": "concurrency_policy",
"type": "enum",
"title": "Concurrency policy",
"required": false,
"default": "Forbid",
"description": "Policy used when a scheduled run overlaps with a previous run.",
"config": {
"options": [
"Allow",
"Forbid",
"Replace"
]
}
},
{
"name": "successful_jobs_history_limit",
"type": "int",
"title": "Successful jobs history limit",
"required": false,
"default": 3,
"description": "Number of successful Job resources to retain.",
"config": {
"placeholder": "3"
}
},
{
"name": "failed_jobs_history_limit",
"type": "int",
"title": "Failed jobs history limit",
"required": false,
"default": 1,
"description": "Number of failed Job resources to retain.",
"config": {
"placeholder": "1"
}
},
{
"name": "backoff_limit",
"type": "int",
"title": "Backoff limit",
"required": false,
"default": 1,
"description": "Number of retries before the Job is marked failed.",
"config": {
"placeholder": "1"
}
},
{
"name": "restart_policy",
"type": "enum",
"title": "Restart policy",
"required": false,
"default": "OnFailure",
"description": "Restart policy used for Job Pods.",
"config": {
"options": [
"Never",
"OnFailure"
]
}
},
{
"name": "service_account_name",
"type": "str",
"title": "ServiceAccount Name",
"required": false,
"config": {
"placeholder": "backup-serviceaccount"
}
},
{
"name": "ttl_seconds_after_finished_enabled",
"type": "bool",
"title": "Job TTL",
"required": false,
"default": false,
"description": "Set a TTL for finished Jobs."
},
{
"name": "ttl_seconds_after_finished",
"type": "int",
"title": "TTL seconds after finished",
"required": false,
"default": 86400,
"description": "TTL in seconds for finished Jobs.",
"config": {
"placeholder": "86400"
}
}
]
},
{
"title": "Container",
"name": "container",
"items": [
{
"name": "container_name",
"type": "str",
"title": "Container name",
"required": false,
"default": "job",
"config": {
"placeholder": "job"
}
},
{
"name": "image",
"type": "str",
"title": "Container image reference",
"required": true,
"description": "Container image used by the CronJob.",
"config": {
"placeholder": "alpine:3.21"
}
},
{
"name": "image_pull_policy",
"type": "enum",
"title": "Image pull policy",
"required": false,
"default": "IfNotPresent",
"config": {
"options": [
"Always",
"IfNotPresent",
"Never"
]
}
},
{
"name": "command_enabled",
"type": "bool",
"title": "Command",
"required": false,
"default": false,
"description": "Render a custom command list."
},
{
"name": "command_items",
"type": "str",
"title": "Command items",
"required": false,
"default": "sh,-c,echo hello from cronjob",
"description": "Comma-separated command list rendered as the container command array.",
"config": {
"placeholder": "sh,-c,echo hello from cronjob"
}
},
{
"name": "args_enabled",
"type": "bool",
"title": "Args",
"required": false,
"default": false,
"description": "Render a custom args list."
},
{
"name": "args_items",
"type": "str",
"title": "Args items",
"required": false,
"default": "--verbose,--all",
"description": "Comma-separated args list rendered as the container args array.",
"config": {
"placeholder": "--verbose,--all"
}
}
]
},
{
"title": "Environment",
"name": "environment",
"items": [
{
"name": "env_literal_enabled",
"type": "bool",
"title": "Literal Env Var",
"required": false,
"default": false,
"description": "Add one literal environment variable."
},
{
"name": "env_literal_name",
"type": "str",
"title": "Literal Env Name",
"required": false,
"default": "APP_ENV",
"description": "Literal environment variable name.",
"config": {
"placeholder": "APP_ENV"
}
},
{
"name": "env_literal_value",
"type": "str",
"title": "Literal Env Value",
"required": false,
"default": "production",
"description": "Literal environment variable value.",
"config": {
"placeholder": "production"
}
},
{
"name": "env_secret_enabled",
"type": "bool",
"title": "Secret Env Var",
"required": false,
"default": false,
"description": "Add one secret-backed environment variable."
},
{
"name": "env_secret_name",
"type": "str",
"title": "Secret Env Name",
"required": false,
"default": "APP_SECRET",
"config": {
"placeholder": "APP_SECRET"
}
},
{
"name": "env_secret_secret_name",
"type": "str",
"title": "Secret resource name",
"required": false,
"default": "app-secret",
"config": {
"placeholder": "app-secret"
}
},
{
"name": "env_secret_secret_key",
"type": "str",
"title": "Secret key",
"required": false,
"default": "password",
"config": {
"placeholder": "password"
}
}
]
},
{
"title": "Storage",
"name": "storage",
"items": [
{
"name": "pvc_mount_enabled",
"type": "bool",
"title": "PersistentVolumeClaim mount",
"required": false,
"default": false,
"description": "Mount an existing PersistentVolumeClaim into the Job Pod."
},
{
"name": "pvc_claim_name",
"type": "str",
"title": "PersistentVolumeClaim name",
"required": false,
"default": "app-pvc",
"description": "Existing claim name to mount.",
"config": {
"placeholder": "app-pvc"
}
},
{
"name": "pvc_mount_path",
"type": "str",
"title": "Mount path",
"required": false,
"default": "/data",
"config": {
"placeholder": "/data"
}
}
]
},
{
"title": "Resources",
"name": "resources",
"items": [
{
"name": "resources_enabled",
"type": "bool",
"title": "Resources",
"required": false,
"default": false
},
{
"name": "resources_cpu_limit",
"type": "str",
"title": "CPU limit",
"required": false,
"default": "500m",
"config": {
"placeholder": "500m"
}
},
{
"name": "resources_cpu_request",
"type": "str",
"title": "CPU request",
"required": false,
"default": "100m",
"config": {
"placeholder": "100m"
}
},
{
"name": "resources_memory_limit",
"type": "str",
"title": "Memory limit",
"required": false,
"default": "512Mi",
"config": {
"placeholder": "512Mi"
}
},
{
"name": "resources_memory_request",
"type": "str",
"title": "Memory request",
"required": false,
"default": "128Mi",
"config": {
"placeholder": "128Mi"
}
}
]
}
]
}