groups: - name: "Container Images" description: "Image to be used for container" - name: "Container Entrypoint" description: "Configuration of the executable that will be run when the container is started" - name: "Container Environment Variables" description: "Set the environment that will be visible to the container" - name: "Networking" description: "Configure networking for container" - name: "Storage" description: "Persist and share data that is separate from the lifecycle of the container" - name: "Health Check" description: "Define mechanism to periodically probe the container to ensure it's functioning as desired" - name: "Workload Details" description: "Configure how workload should be deployed" - name: "Scaling/Upgrade Policy" description: "Configure how pods are replaced when configuration is upgraded" - name: "Restart Policy" description: "Configure when pod should be restarted in case of failure" - name: "Resource Reservation" description: "Specify resources to be allocated to workload" questions: # Workload type - variable: workloadType description: "Please specify type of workload to deploy" label: "Workload Type" group: "Workload Details" schema: type: string default: "Deployment" required: true enum: - value: "Deployment" description: "Deploy a Deployment workload" - value: "Job" description: "Deploy job workload" - value: "CronJob" description: "Deploy cronjob workload" # Cronjob schedule - variable: cronSchedule label: "Cron Schedule" group: "Workload Details" schema: type: cron show_if: [["workloadType", "=", "CronJob"]] default: minute: "5" # Image related - variable: image description: "Docker Image Details" group: "Container Images" schema: type: dict required: true attrs: - variable: repository description: "Docker image repository" label: "Image repository" schema: type: string required: true - variable: tag description: "Tag to use for specified image" label: "Image Tag" schema: type: string default: "latest" - variable: pullPolicy description: "Docker Image Pull Policy" label: "Image Pull Policy" schema: type: string default: "IfNotPresent" enum: - value: "IfNotPresent" description: "Only pull image if not present on host" - value: "Always" description: "Always pull image even if present on host" - value: "Never" description: "Never pull image even if it's not present on host" # Update strategy - variable: updateStrategy description: "Upgrade Policy" label: "Update Strategy" group: "Scaling/Upgrade Policy" schema: type: string show_if: [["workloadType", "=", "Deployment"]] default: "RollingUpdate" enum: - value: "RollingUpdate" description: "Create new pods and then kill old ones" - value: "Recreate" description: "Kill existing pods before creating new ones" # Restart Policy - variable: restartPolicy description: "Restart Policy for workload" label: "Restart Policy" schema: type: string show_if: [["workloadType", "=", "Deployment"]] default: "Always" enum: - value: "Always" description: "Always restart containers in a pod if they exit" - value: "OnFailure" description: "Only restart containers if they exit with a failure" - value: "Never" description: "Never restart containers if they exit" - variable: jobRestartPolicy description: "Restart Policy for workload" label: "Restart Policy" schema: type: string default: "OnFailure" show_if: [["workloadType", "!=", "Deployment"]] enum: - value: "OnFailure" description: "Only restart job if it fails" - value: "Never" description: "Never restart job even if it fails" # Configurable CMD / Entrypoint / Environment Variables - variable: containerCommand description: "Commands to execute inside container overriding image CMD default" label: "Container CMD" group: "Container Entrypoint" schema: type: list items: - variable: command description: "Container Command" label: "Command" schema: type: string - variable: containerArgs description: "Specify arguments for container command" label: "Container Args" group: "Container Entrypoint" schema: type: list items: - variable: arg description: "Container Arg" label: "Arg" schema: type: string - variable: containerEnvironmentVariables description: "Container Environment Variables" label: "Container Environment Variables" group: "Container Environment Variables" schema: type: list items: - variable: environmentVariable description: "Container Environment Variable" label: "Container Environment Variable" schema: type: dict attrs: - variable: name description: "Environment Variable Name" label: "Environment Variable Name" schema: type: string required: true - variable: value description: "Environment Variable Value" label: "Environment Variable Value" schema: type: string required: true # Networking options - variable: externalInterfaces description: "Add External Interfaces" label: "Add external Interfaces" group: "Networking" schema: type: list items: - variable: interfaceConfiguration description: "Interface Configuration" label: "Interface Configuration" schema: type: dict $ref: - "normalize/interfaceConfiguration" attrs: - variable: hostInterface description: "Please specify host interface" label: "Host Interface" schema: type: string required: true $ref: - "definitions/interface" - variable: ipam description: "Define how IP Address will be managed" label: "IP Address Management" schema: type: dict required: true attrs: - variable: type description: "Specify type for IPAM" label: "IPAM Type" schema: type: string required: true enum: - value: "dhcp" description: "Use DHCP" - value: "static" description: "Use static IP" show_subquestions_if: "static" subquestions: - variable: staticIPConfigurations label: "Static IP Addresses" schema: type: list items: - variable: staticIP label: "Static IP" schema: type: ipaddr cidr: true - variable: staticRoutes label: "Static Routes" schema: type: list items: - variable: staticRouteConfiguration label: "Static Route Configuration" schema: type: dict attrs: - variable: destination label: "Destination" schema: type: ipaddr cidr: true required: true - variable: gateway label: "Gateway" schema: type: ipaddr cidr: false required: true - variable: dnsPolicy label: "DNS Policy" description: "Default behaviour is where Pod inherits the name resolution configuration from the node that the pods run on, if None is specified, It allows a Pod to ignore DNS settings from the Kubernetes environment." group: "Networking" schema: type: string default: "Default" enum: - value: "Default" description: "Use Default DNS Policy" - value: "None" description: "Ignore DNS settings from the Kuberentes cluster" - variable: dnsConfig label: "DNS Configuration" group: "Networking" description: "Specify custom DNS configuration which will be applied to the pod" schema: type: dict attrs: - variable: nameservers label: "Nameservers" schema: default: [] type: list items: - variable: nameserver label: "Nameserver" schema: type: string - variable: searches label: "Searches" schema: default: [] type: list items: - variable: search label: "Search Entry" schema: type: string - variable: portForwardingList label: "Specify Node ports to forward to workload" group: "Networking" description: "Specify ports of node and workload to forward traffic from node port to workload port" schema: type: list items: - variable: portForwarding label: "Port Forwarding Configuration" schema: type: dict attrs: - variable: containerPort label: "Container Port" schema: type: string required: true - variable: nodePort label: "Node Port" schema: type: string required: true - variable: protocol label: "Protocol" schema: type: string default: "TCP" enum: - value: "TCP" description: "TCP Protocol" - value: "UDP" description: "UDP Protocol" # Storage Options # Host path based volumes - variable: hostPathVolumes label: "Host Path Volumes" group: "Storage" schema: type: list items: - variable: hostPathConfiguration label: "Host Path Configuration" schema: type: dict attrs: - variable: hostPath label: "Host Path" schema: type: hostpath required: true - variable: mountPath label: "Mount Path" description: "Path where host path will be mounted inside the pod" schema: type: path required: true - variable: readOnly label: "Read Only" schema: type: boolean default: false # Volumes - variable: volumes label: "Volumes" group: "Storage" schema: type: list items: - variable: volume label: "Volume" schema: type: dict $ref: - "normalize/ixVolume" attrs: - variable: mountPath label: "Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path required: true - variable: datasetName label: "Dataset Name" schema: type: string required: true # Pod Probes # Liveness Probe - variable: livenessProbe label: "Liveness Probe" description: "Configure Liveness Probe" group: "Health Check" schema: type: dict default: null "null": true attrs: - variable: command label: "Liveness command" description: "Specify a command to determine liveness of pod" schema: type: list required: true items: - variable: commandArg label: "Command Arg" schema: type: string - variable: initialDelaySeconds label: "Seconds Delay" description: "Seconds to delay the first liveness probe" schema: type: int default: 5 - variable: periodSeconds label: "Period Seconds" description: "Specify number of seconds to run liveness probe" schema: type: int default: 10 # Specify GPU configuration - variable: gpuConfiguration label: "GPU Configuration" group: "Resource Reservation" schema: type: dict $ref: - "definitions/gpuConfiguration"