@soft-stech/argo-rollouts
Version:
1,041 lines (1,040 loc) • 89.8 kB
JavaScript
import { z } from "zod";
import { iObjectMetaSchema } from "@soft-stech/apimachinery/apis/meta/v1/ObjectMeta.schema";
export const IRolloutSchema = z.object({
"apiVersion": z.literal("argoproj.io/v1alpha1"),
"kind": z.literal("Rollout"),
"metadata": iObjectMetaSchema.optional(),
"spec": z.object({
"analysis": z.object({
/**
*
* @format int32
*/
"successfulRunHistoryLimit": z.number().optional(),
/**
*
* @format int32
*/
"unsuccessfulRunHistoryLimit": z.number().optional()
}).optional(),
/**
*
* @format int32
*/
"minReadySeconds": z.number().optional(),
"paused": z.boolean().optional(),
"progressDeadlineAbort": z.boolean().optional(),
/**
*
* @format int32
*/
"progressDeadlineSeconds": z.number().optional(),
/**
*
* @format int32
*/
"replicas": z.number().optional(),
/**
*
* @format date-time
*/
"restartAt": z.string().datetime().optional().nullable(),
/**
*
* @format int32
*/
"revisionHistoryLimit": z.number().optional(),
"rollbackWindow": z.object({
/**
*
* @format int32
*/
"revisions": z.number().optional()
}).optional(),
"selector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"strategy": z.object({
"blueGreen": z.object({
/**
*
* @format int32
*/
"abortScaleDownDelaySeconds": z.number().optional(),
"activeMetadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"activeService": z.string(),
"antiAffinity": z.object({
"preferredDuringSchedulingIgnoredDuringExecution": z.object({
/**
*
* @format int32
*/
"weight": z.number()
}).optional(),
"requiredDuringSchedulingIgnoredDuringExecution": z.object({}).optional()
}).optional(),
"autoPromotionEnabled": z.boolean().optional(),
/**
*
* @format int32
*/
"autoPromotionSeconds": z.number().optional(),
"maxUnavailable": z.union([z.number(), z.string()]).optional(),
"postPromotionAnalysis": z.object({
"args": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"fieldRef": z.object({
"fieldPath": z.string()
}).optional(),
"podTemplateHashValue": z.string().optional()
}).optional()
})).optional(),
"dryRun": z.array(z.object({
"metricName": z.string()
})).optional(),
"measurementRetention": z.array(z.object({
/**
*
* @format int32
*/
"limit": z.number(),
"metricName": z.string()
})).optional(),
"templates": z.array(z.object({
"clusterScope": z.boolean().optional(),
"templateName": z.string().optional()
})).optional()
}).optional(),
"prePromotionAnalysis": z.object({
"args": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"fieldRef": z.object({
"fieldPath": z.string()
}).optional(),
"podTemplateHashValue": z.string().optional()
}).optional()
})).optional(),
"dryRun": z.array(z.object({
"metricName": z.string()
})).optional(),
"measurementRetention": z.array(z.object({
/**
*
* @format int32
*/
"limit": z.number(),
"metricName": z.string()
})).optional(),
"templates": z.array(z.object({
"clusterScope": z.boolean().optional(),
"templateName": z.string().optional()
})).optional()
}).optional(),
"previewMetadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
/**
*
* @format int32
*/
"previewReplicaCount": z.number().optional(),
"previewService": z.string().optional(),
/**
*
* @format int32
*/
"scaleDownDelayRevisionLimit": z.number().optional(),
/**
*
* @format int32
*/
"scaleDownDelaySeconds": z.number().optional()
}).optional(),
"canary": z.object({
/**
*
* @format int32
*/
"abortScaleDownDelaySeconds": z.number().optional(),
"analysis": z.object({
"args": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"fieldRef": z.object({
"fieldPath": z.string()
}).optional(),
"podTemplateHashValue": z.string().optional()
}).optional()
})).optional(),
"dryRun": z.array(z.object({
"metricName": z.string()
})).optional(),
"measurementRetention": z.array(z.object({
/**
*
* @format int32
*/
"limit": z.number(),
"metricName": z.string()
})).optional(),
/**
*
* @format int32
*/
"startingStep": z.number().optional(),
"templates": z.array(z.object({
"clusterScope": z.boolean().optional(),
"templateName": z.string().optional()
})).optional()
}).optional(),
"antiAffinity": z.object({
"preferredDuringSchedulingIgnoredDuringExecution": z.object({
/**
*
* @format int32
*/
"weight": z.number()
}).optional(),
"requiredDuringSchedulingIgnoredDuringExecution": z.object({}).optional()
}).optional(),
"canaryMetadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"canaryService": z.string().optional(),
"dynamicStableScale": z.boolean().optional(),
"maxSurge": z.union([z.number(), z.string()]).optional(),
"maxUnavailable": z.union([z.number(), z.string()]).optional(),
/**
*
* @format int32
*/
"minPodsPerReplicaSet": z.number().optional(),
"pingPong": z.object({
"pingService": z.string(),
"pongService": z.string()
}).optional(),
/**
*
* @format int32
*/
"scaleDownDelayRevisionLimit": z.number().optional(),
/**
*
* @format int32
*/
"scaleDownDelaySeconds": z.number().optional(),
"stableMetadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"stableService": z.string().optional(),
"steps": z.array(z.object({
"analysis": z.object({
"args": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"fieldRef": z.object({
"fieldPath": z.string()
}).optional(),
"podTemplateHashValue": z.string().optional()
}).optional()
})).optional(),
"dryRun": z.array(z.object({
"metricName": z.string()
})).optional(),
"measurementRetention": z.array(z.object({
/**
*
* @format int32
*/
"limit": z.number(),
"metricName": z.string()
})).optional(),
"templates": z.array(z.object({
"clusterScope": z.boolean().optional(),
"templateName": z.string().optional()
})).optional()
}).optional(),
"experiment": z.object({
"analyses": z.array(z.object({
"args": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"fieldRef": z.object({
"fieldPath": z.string()
}).optional(),
"podTemplateHashValue": z.string().optional()
}).optional()
})).optional(),
"clusterScope": z.boolean().optional(),
"name": z.string(),
"requiredForCompletion": z.boolean().optional(),
"templateName": z.string()
})).optional(),
"duration": z.string().optional(),
"templates": z.array(z.object({
"metadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"name": z.string(),
/**
*
* @format int32
*/
"replicas": z.number().optional(),
"selector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"service": z.object({
"name": z.string().optional()
}).optional(),
"specRef": z.string(),
/**
*
* @format int32
*/
"weight": z.number().optional()
}))
}).optional(),
"pause": z.object({
"duration": z.union([z.number(), z.string()]).optional()
}).optional(),
"setCanaryScale": z.object({
"matchTrafficWeight": z.boolean().optional(),
/**
*
* @format int32
*/
"replicas": z.number().optional(),
/**
*
* @format int32
*/
"weight": z.number().optional()
}).optional(),
"setHeaderRoute": z.object({
"match": z.array(z.object({
"headerName": z.string(),
"headerValue": z.object({
"exact": z.string().optional(),
"prefix": z.string().optional(),
"regex": z.string().optional()
})
})).optional(),
"name": z.string().optional()
}).optional(),
"setMirrorRoute": z.object({
"match": z.array(z.object({
"headers": z.record(z.object({
"exact": z.string().optional(),
"prefix": z.string().optional(),
"regex": z.string().optional()
})).optional(),
"method": z.object({
"exact": z.string().optional(),
"prefix": z.string().optional(),
"regex": z.string().optional()
}).optional(),
"path": z.object({
"exact": z.string().optional(),
"prefix": z.string().optional(),
"regex": z.string().optional()
}).optional()
})).optional(),
"name": z.string(),
/**
*
* @format int32
*/
"percentage": z.number().optional()
}).optional(),
/**
*
* @format int32
*/
"setWeight": z.number().optional()
})).optional(),
"trafficRouting": z.object({
"alb": z.object({
"annotationPrefix": z.string().optional(),
"ingress": z.string(),
"rootService": z.string().optional(),
/**
*
* @format int32
*/
"servicePort": z.number(),
"stickinessConfig": z.object({
/**
*
* @format int64
*/
"durationSeconds": z.number(),
"enabled": z.boolean()
}).optional()
}).optional(),
"ambassador": z.object({
"mappings": z.array(z.string())
}).optional(),
"apisix": z.object({
"route": z.object({
"name": z.string(),
"rules": z.array(z.string()).optional()
}).optional()
}).optional(),
"appMesh": z.object({
"virtualNodeGroup": z.object({
"canaryVirtualNodeRef": z.object({
"name": z.string()
}),
"stableVirtualNodeRef": z.object({
"name": z.string()
})
}).optional(),
"virtualService": z.object({
"name": z.string(),
"routes": z.array(z.string()).optional()
}).optional()
}).optional(),
"istio": z.object({
"destinationRule": z.object({
"canarySubsetName": z.string(),
"name": z.string(),
"stableSubsetName": z.string()
}).optional(),
"virtualService": z.object({
"name": z.string(),
"routes": z.array(z.string()).optional(),
"tcpRoutes": z.array(z.object({
/**
*
* @format int64
*/
"port": z.number().optional()
})).optional(),
"tlsRoutes": z.array(z.object({
/**
*
* @format int64
*/
"port": z.number().optional(),
"sniHosts": z.array(z.string()).optional()
})).optional()
}).optional(),
"virtualServices": z.array(z.object({
"name": z.string(),
"routes": z.array(z.string()).optional(),
"tcpRoutes": z.array(z.object({
/**
*
* @format int64
*/
"port": z.number().optional()
})).optional(),
"tlsRoutes": z.array(z.object({
/**
*
* @format int64
*/
"port": z.number().optional(),
"sniHosts": z.array(z.string()).optional()
})).optional()
})).optional()
}).optional(),
"managedRoutes": z.array(z.object({
"name": z.string()
})).optional(),
"nginx": z.object({
"additionalIngressAnnotations": z.record(z.string()).optional(),
"annotationPrefix": z.string().optional(),
"stableIngress": z.string().optional(),
"stableIngresses": z.array(z.string()).optional()
}).optional(),
"plugins": z.object({}).optional(),
"smi": z.object({
"rootService": z.string().optional(),
"trafficSplitName": z.string().optional()
}).optional(),
"traefik": z.object({
"weightedTraefikServiceName": z.string()
}).optional()
}).optional()
}).optional()
}).optional(),
"template": z.object({
"metadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"spec": z.object({
/**
*
* @format int64
*/
"activeDeadlineSeconds": z.number().optional(),
"affinity": z.object({
"nodeAffinity": z.object({
"preferredDuringSchedulingIgnoredDuringExecution": z.array(z.object({
"preference": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchFields": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional()
}),
/**
*
* @format int32
*/
"weight": z.number()
})).optional(),
"requiredDuringSchedulingIgnoredDuringExecution": z.object({
"nodeSelectorTerms": z.array(z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchFields": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional()
}))
}).optional()
}).optional(),
"podAffinity": z.object({
"preferredDuringSchedulingIgnoredDuringExecution": z.array(z.object({
"podAffinityTerm": z.object({
"labelSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaceSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
}),
/**
*
* @format int32
*/
"weight": z.number()
})).optional(),
"requiredDuringSchedulingIgnoredDuringExecution": z.array(z.object({
"labelSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaceSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
})).optional()
}).optional(),
"podAntiAffinity": z.object({
"preferredDuringSchedulingIgnoredDuringExecution": z.array(z.object({
"podAffinityTerm": z.object({
"labelSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaceSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
}),
/**
*
* @format int32
*/
"weight": z.number()
})).optional(),
"requiredDuringSchedulingIgnoredDuringExecution": z.array(z.object({
"labelSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaceSelector": z.object({
"matchExpressions": z.array(z.object({
"key": z.string(),
"operator": z.string(),
"values": z.array(z.string()).optional()
})).optional(),
"matchLabels": z.record(z.string()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
})).optional()
}).optional()
}).optional(),
"automountServiceAccountToken": z.boolean().optional(),
"containers": z.array(z.object({
"args": z.array(z.string()).optional(),
"command": z.array(z.string()).optional(),
"env": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"configMapKeyRef": z.object({
"key": z.string(),
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional(),
"fieldRef": z.object({
"apiVersion": z.string().optional(),
"fieldPath": z.string()
}).optional(),
"resourceFieldRef": z.object({
"containerName": z.string().optional(),
/**
*
* @schema union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional()
*/
"divisor": z.union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional(),
"resource": z.string()
}).optional(),
"secretKeyRef": z.object({
"key": z.string(),
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional()
}).optional()
})).optional(),
"envFrom": z.array(z.object({
"configMapRef": z.object({
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional(),
"prefix": z.string().optional(),
"secretRef": z.object({
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional()
})).optional(),
"image": z.string().optional(),
"imagePullPolicy": z.string().optional(),
"lifecycle": z.object({
"postStart": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional()
}).optional(),
"preStop": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional()
}).optional()
}).optional(),
"livenessProbe": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
/**
*
* @format int32
*/
"failureThreshold": z.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"service": z.string().optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
/**
*
* @format int32
*/
"initialDelaySeconds": z.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().optional()
}).optional(),
"name": z.string(),
"ports": z.array(z.object({
/**
*
* @format int32
*/
"containerPort": z.number(),
"hostIP": z.string().optional(),
/**
*
* @format int32
*/
"hostPort": z.number().optional(),
"name": z.string().optional(),
/**
*
* @default "TCP"
*/
"protocol": z.string().optional().default("TCP")
})).optional(),
"readinessProbe": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
/**
*
* @format int32
*/
"failureThreshold": z.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"service": z.string().optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
/**
*
* @format int32
*/
"initialDelaySeconds": z.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().optional()
}).optional(),
"resources": z.object({
"limits": z.any().optional(),
"requests": z.any().optional()
}).optional(),
"securityContext": z.object({
"allowPrivilegeEscalation": z.boolean().optional(),
"capabilities": z.object({
"add": z.array(z.string()).optional(),
"drop": z.array(z.string()).optional()
}).optional(),
"privileged": z.boolean().optional(),
"procMount": z.string().optional(),
"readOnlyRootFilesystem": z.boolean().optional(),
/**
*
* @format int64
*/
"runAsGroup": z.number().optional(),
"runAsNonRoot": z.boolean().optional(),
/**
*
* @format int64
*/
"runAsUser": z.number().optional(),
"seLinuxOptions": z.object({
"level": z.string().optional(),
"role": z.string().optional(),
"type": z.string().optional(),
"user": z.string().optional()
}).optional(),
"seccompProfile": z.object({
"localhostProfile": z.string().optional(),
"type": z.string()
}).optional(),
"windowsOptions": z.object({
"gmsaCredentialSpec": z.string().optional(),
"gmsaCredentialSpecName": z.string().optional(),
"hostProcess": z.boolean().optional(),
"runAsUserName": z.string().optional()
}).optional()
}).optional(),
"startupProbe": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
/**
*
* @format int32
*/
"failureThreshold": z.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"service": z.string().optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
/**
*
* @format int32
*/
"initialDelaySeconds": z.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().optional()
}).optional(),
"stdin": z.boolean().optional(),
"stdinOnce": z.boolean().optional(),
"terminationMessagePath": z.string().optional(),
"terminationMessagePolicy": z.string().optional(),
"tty": z.boolean().optional(),
"volumeDevices": z.array(z.object({
"devicePath": z.string(),
"name": z.string()
})).optional(),
"volumeMounts": z.array(z.object({
"mountPath": z.string(),
"mountPropagation": z.string().optional(),
"name": z.string(),
"readOnly": z.boolean().optional(),
"subPath": z.string().optional(),
"subPathExpr": z.string().optional()
})).optional(),
"workingDir": z.string().optional()
})),
"dnsConfig": z.object({
"nameservers": z.array(z.string()).optional(),
"options": z.array(z.object({
"name": z.string().optional(),
"value": z.string().optional()
})).optional(),
"searches": z.array(z.string()).optional()
}).optional(),
"dnsPolicy": z.string().optional(),
"enableServiceLinks": z.boolean().optional(),
"ephemeralContainers": z.array(z.object({
"args": z.array(z.string()).optional(),
"command": z.array(z.string()).optional(),
"env": z.array(z.object({
"name": z.string(),
"value": z.string().optional(),
"valueFrom": z.object({
"configMapKeyRef": z.object({
"key": z.string(),
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional(),
"fieldRef": z.object({
"apiVersion": z.string().optional(),
"fieldPath": z.string()
}).optional(),
"resourceFieldRef": z.object({
"containerName": z.string().optional(),
/**
*
* @schema union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional()
*/
"divisor": z.union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional(),
"resource": z.string()
}).optional(),
"secretKeyRef": z.object({
"key": z.string(),
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional()
}).optional()
})).optional(),
"envFrom": z.array(z.object({
"configMapRef": z.object({
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional(),
"prefix": z.string().optional(),
"secretRef": z.object({
"name": z.string().optional(),
"optional": z.boolean().optional()
}).optional()
})).optional(),
"image": z.string().optional(),
"imagePullPolicy": z.string().optional(),
"lifecycle": z.object({
"postStart": z.object({
"exec": z.object({
"command": z.array(z.string()).optional()
}).optional(),
"httpGet": z.object({
"host": z.string().optional(),
"httpHeaders": z.array(z.object({
"name": z.string(),
"value": z.string()
})).optional(),
"path": z.string().optional(),
"port": z.union([z.number(), z.string()]),
"scheme": z.string().optional()
}).optional(),
"tcpSocket": z.object({