From 11e40fb081887761e4dd04dcb20a1b0ad69e8ce5 Mon Sep 17 00:00:00 2001 From: Elan Hasson <234704+ElanHasson@users.noreply.github.com> Date: Wed, 12 Feb 2025 01:55:48 -0500 Subject: [PATCH] Add TemporalClusterClient and TemporalNamespace CRDs (#466) --- temporal.io/temporalcluster_v1beta1.json | 4604 +++++++++++++++++ .../temporalclusterclient_v1beta1.json | 69 + temporal.io/temporalnamespace_v1beta1.json | 219 + temporal.io/temporalschedule_v1beta1.json | 884 ++++ .../temporalworkerprocess_v1beta1.json | 267 + 5 files changed, 6043 insertions(+) create mode 100644 temporal.io/temporalcluster_v1beta1.json create mode 100644 temporal.io/temporalclusterclient_v1beta1.json create mode 100644 temporal.io/temporalnamespace_v1beta1.json create mode 100644 temporal.io/temporalschedule_v1beta1.json create mode 100644 temporal.io/temporalworkerprocess_v1beta1.json diff --git a/temporal.io/temporalcluster_v1beta1.json b/temporal.io/temporalcluster_v1beta1.json new file mode 100644 index 00000000..00f16a9b --- /dev/null +++ b/temporal.io/temporalcluster_v1beta1.json @@ -0,0 +1,4604 @@ +{ + "description": "TemporalCluster defines a temporal cluster deployment.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "Specification of the desired behavior of the Temporal cluster.", + "properties": { + "admintools": { + "description": "AdminTools allows configuration of the optional admin tool pod deployed alongside the cluster.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should deploy the admin tools alongside the cluster.", + "type": "boolean" + }, + "image": { + "description": "Image defines the temporal admin tools docker image the instance should run.", + "type": "string" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the ui.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "resources": { + "description": "Compute Resources required by the ui.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "version": { + "description": "Version defines the temporal admin tools version the instance should run.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "archival": { + "description": "Archival allows Workflow Execution Event Histories and Visibility data backups for the temporal cluster.", + "properties": { + "enabled": { + "default": false, + "description": "Enabled defines if the archival is enabled for the cluster.", + "type": "boolean" + }, + "history": { + "description": "History is the default config for the history archival.", + "properties": { + "enableRead": { + "default": false, + "description": "EnableRead allows temporal to read from the archived Event History.", + "type": "boolean" + }, + "enabled": { + "default": false, + "description": "Enabled defines if the archival is enabled by default for all namespaces\nor for a particular namespace (depends if it's for a TemporalCluster or a TemporalNamespace).", + "type": "boolean" + }, + "path": { + "description": "Path is ...", + "type": "string" + }, + "paused": { + "default": false, + "description": "Paused defines if the archival is paused.", + "type": "boolean" + } + }, + "required": [ + "enableRead", + "path", + "paused" + ], + "type": "object", + "additionalProperties": false + }, + "provider": { + "description": "Provider defines the archival provider for the cluster.\nThe same provider is used for both history and visibility,\nbut some config can be changed using spec.archival.[history|visibility].config.", + "properties": { + "filestore": { + "description": "FilestoreArchiver is the file store archival provider configuration.", + "properties": { + "dirPermissions": { + "default": "0766", + "description": "DirPermissions sets the directory permissions of the archive directory.\nIt's recommend to leave it empty and use the default value of \"0766\" to avoid read/write issues.", + "type": "string" + }, + "filePermissions": { + "default": "0666", + "description": "FilePermissions sets the file permissions of the archived files.\nIt's recommend to leave it empty and use the default value of \"0666\" to avoid read/write issues.", + "type": "string" + } + }, + "required": [ + "dirPermissions", + "filePermissions" + ], + "type": "object", + "additionalProperties": false + }, + "gcs": { + "description": "GCSArchiver is the GCS archival provider configuration.", + "properties": { + "credentialsRef": { + "description": "SecretAccessKeyRef is the secret key selector containing Google Cloud Storage credentials file.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "required": [ + "credentialsRef" + ], + "type": "object", + "additionalProperties": false + }, + "s3": { + "description": "S3Archiver is the S3 archival provider configuration.", + "properties": { + "credentials": { + "description": "Use credentials if you want to use aws credentials from secret.", + "properties": { + "accessKeyIdRef": { + "description": "AccessKeyIDRef is the secret key selector containing AWS access key ID.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secretKeyRef": { + "description": "SecretAccessKeyRef is the secret key selector containing AWS secret access key.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "required": [ + "accessKeyIdRef", + "secretKeyRef" + ], + "type": "object", + "additionalProperties": false + }, + "endpoint": { + "description": "Use Endpoint if you want to use s3-compatible object storage.", + "type": "string" + }, + "region": { + "description": "Region is the aws s3 region.", + "type": "string" + }, + "roleName": { + "description": "Use RoleName if you want the temporal service account\nto assume an AWS Identity and Access Management (IAM) role.", + "type": "string" + }, + "s3ForcePathStyle": { + "description": "Use s3ForcePathStyle if you want to use s3 path style.", + "type": "boolean" + } + }, + "required": [ + "region" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "visibility": { + "description": "Visibility is the default config for visibility archival.", + "properties": { + "enableRead": { + "default": false, + "description": "EnableRead allows temporal to read from the archived Event History.", + "type": "boolean" + }, + "enabled": { + "default": false, + "description": "Enabled defines if the archival is enabled by default for all namespaces\nor for a particular namespace (depends if it's for a TemporalCluster or a TemporalNamespace).", + "type": "boolean" + }, + "path": { + "description": "Path is ...", + "type": "string" + }, + "paused": { + "default": false, + "description": "Paused defines if the archival is paused.", + "type": "boolean" + } + }, + "required": [ + "enableRead", + "path", + "paused" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "authorization": { + "description": "Authorization allows authorization configuration for the temporal cluster.", + "properties": { + "authorizer": { + "description": "Authorizer defines the authorization mechanism to be used. It can be left as an empty string to\nuse a no-operation authorizer (noopAuthorizer), or set to \"default\" to use the temporal's default\nauthorizer (defaultAuthorizer).", + "type": "string" + }, + "claimMapper": { + "description": "ClaimMapper specifies the claim mapping mechanism used for handling JWT claims. Similar to the Authorizer,\nit can be left as an empty string to use a no-operation claim mapper (noopClaimMapper), or set to \"default\"\nto use the default JWT claim mapper (defaultJWTClaimMapper).", + "type": "string" + }, + "jwtKeyProvider": { + "description": "JWTKeyProvider specifies the signing key provider used for validating JWT tokens.", + "properties": { + "keySourceURIs": { + "description": "KeySourceURIs is a list of URIs where the JWT signing keys can be obtained. These URIs are used by the\nauthorization system to fetch the public keys necessary for validating JWT tokens.", + "items": { + "type": "string" + }, + "type": "array" + }, + "refreshInterval": { + "description": "RefreshInterval defines the time interval at which temporal should refresh the JWT signing keys from\nthe specified URIs.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "permissionsClaimName": { + "description": "PermissionsClaimName is the name of the claim within the JWT token that contains the user's permissions.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "dynamicConfig": { + "description": "DynamicConfig allows advanced configuration for the temporal cluster.", + "properties": { + "pollInterval": { + "description": "PollInterval defines how often the config should be updated by checking provided values.\nDefaults to 10s.", + "type": "string" + }, + "values": { + "additionalProperties": { + "items": { + "description": "ConstrainedValue is an alias for temporal's dynamicconfig.ConstrainedValue.", + "properties": { + "constraints": { + "description": "Constraints describe under what conditions a ConstrainedValue should be used.", + "properties": { + "namespace": { + "type": "string" + }, + "namespaceId": { + "type": "string" + }, + "shardId": { + "format": "int32", + "type": "integer" + }, + "taskQueueName": { + "type": "string" + }, + "taskQueueType": { + "type": "string" + }, + "taskType": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "value": { + "description": "Value is the value for the configuration key.\nThe type of the Value field depends on the key.\nAcceptable types will be one of: int, float64, bool, string, map[string]any, time.Duration", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "required": [ + "value" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "description": "Values contains all dynamic config keys and their constrained values.", + "type": "object" + } + }, + "required": [ + "values" + ], + "type": "object", + "additionalProperties": false + }, + "image": { + "description": "Image defines the temporal server docker image the cluster should use for each services.", + "type": "string" + }, + "imagePullSecrets": { + "description": "An optional list of references to secrets in the same namespace\nto use for pulling temporal images from registries.", + "items": { + "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.", + "properties": { + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + } + }, + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "type": "array" + }, + "jobInitContainers": { + "description": "JobInitContainers adds a list of init containers to the setup's jobs.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "jobResources": { + "description": "JobResources allows set resources for setup/update jobs.", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "jobTtlSecondsAfterFinished": { + "default": 300, + "description": "JobTTLSecondsAfterFinished is amount of time to keep job pods after jobs are completed.\nDefaults to 300 seconds.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "log": { + "description": "Log defines temporal cluster's logger configuration.", + "properties": { + "development": { + "default": false, + "description": "Development determines whether the logger is run in Development (== Test) or in\nProduction mode. Default is Production. Production-stage disables panics from\nDPanic logging.", + "type": "boolean" + }, + "format": { + "default": "json", + "description": "Format determines the format of each log file printed to the output.\nUse \"console\" if you want stack traces to appear on multiple lines.", + "enum": [ + "json", + "console" + ], + "type": "string" + }, + "level": { + "default": "info", + "description": "Level is the desired log level; see colocated zap_logger.go::parseZapLevel()", + "enum": [ + "debug", + "info", + "warn", + "error", + "dpanic", + "panic", + "fatal" + ], + "type": "string" + }, + "outputFile": { + "description": "OutputFile is the path to the log output file.", + "type": "string" + }, + "stdout": { + "default": true, + "description": "Stdout is true if the output needs to goto standard out; default is stderr.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "mTLS": { + "description": "MTLS allows configuration of the network traffic encryption for the cluster.", + "properties": { + "certificatesDuration": { + "description": "CertificatesDuration allows configuration of maximum certificates lifetime.\nUseless if mTLS provider is not cert-manager.", + "properties": { + "clientCertificates": { + "description": "ClientCertificates is the 'duration' (i.e. lifetime) of the client certificates.\nIt defaults to 1 year.", + "type": "string" + }, + "frontendCertificate": { + "description": "FrontendCertificate is the 'duration' (i.e. lifetime) of the frontend certificate.\nIt defaults to 1 year.", + "type": "string" + }, + "intermediateCAsCertificates": { + "description": "IntermediateCACertificates is the 'duration' (i.e. lifetime) of the intermediate CAs Certificates.\nIt defaults to 5 years.", + "type": "string" + }, + "internodeCertificate": { + "description": "InternodeCertificate is the 'duration' (i.e. lifetime) of the internode certificate.\nIt defaults to 1 year.", + "type": "string" + }, + "rootCACertificate": { + "description": "RootCACertificate is the 'duration' (i.e. lifetime) of the Root CA Certificate.\nIt defaults to 10 years.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "frontend": { + "description": "Frontend allows configuration of the frontend's public endpoint traffic encryption.\nUseless if mTLS provider is not cert-manager.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should enable mTLS for cluster's public endpoints.", + "type": "boolean" + }, + "extraDnsNames": { + "description": "ExtraDNSNames is a list of additional DNS names associated with the TemporalCluster.\nThese DNS names can be used for accessing the TemporalCluster from external services.\nThe DNS names specified here will be added to the TLS certificate for secure communication.", + "items": { + "type": "string" + }, + "nullable": true, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "internode": { + "description": "Internode allows configuration of the internode traffic encryption.\nUseless if mTLS provider is not cert-manager.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should enable mTLS for network between cluster nodes.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "provider": { + "default": "cert-manager", + "description": "Provider defines the tool used to manage mTLS certificates.", + "enum": [ + "cert-manager", + "linkerd", + "istio" + ], + "type": "string" + }, + "refreshInterval": { + "description": "RefreshInterval defines interval between refreshes of certificates in the cluster components.\nDefaults to 1 hour.\nUseless if mTLS provider is not cert-manager.", + "type": "string" + }, + "renewBefore": { + "description": "RenewBefore is defines how long before the currently issued certificate's expiry\ncert-manager should renew the certificate. The default is 2/3 of the\nissued certificate's duration. Minimum accepted value is 5 minutes.\nUseless if mTLS provider is not cert-manager.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "metrics": { + "description": "Metrics allows configuration of scraping endpoints for stats. prometheus or m3.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should enable metrics exposition on temporal components.", + "type": "boolean" + }, + "excludeTags": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "ExcludeTags is a map from tag name string to tag values string list.\nEach value present in keys will have relevant tag value replaced with \"_tag_excluded_\"\nEach value in values list will white-list tag values to be reported as usual.", + "type": "object" + }, + "perUnitHistogramBoundaries": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "PerUnitHistogramBoundaries defines the default histogram bucket boundaries.\nConfiguration of histogram boundaries for given metric unit.\n\nSupported values:\n- \"dimensionless\"\n- \"milliseconds\"\n- \"bytes\"", + "type": "object" + }, + "prefix": { + "description": "Prefix sets the prefix to all outgoing metrics", + "type": "string" + }, + "prometheus": { + "description": "Prometheus reporter configuration.", + "properties": { + "listenAddress": { + "description": "Deprecated. Address for prometheus to serve metrics from.", + "type": "string" + }, + "listenPort": { + "description": "ListenPort for prometheus to serve metrics from.", + "format": "int32", + "type": "integer" + }, + "scrapeConfig": { + "description": "ScrapeConfig is the prometheus scrape configuration.", + "properties": { + "annotations": { + "description": "Annotations defines if the operator should add prometheus scrape annotations to the services pods.", + "type": "boolean" + }, + "serviceMonitor": { + "description": "PrometheusScrapeConfigServiceMonitor is the configuration for prometheus operator ServiceMonitor.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should create a ServiceMonitor for each services.", + "type": "boolean" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels adds extra labels to the ServiceMonitor.", + "type": "object" + }, + "metricRelabelings": { + "description": "MetricRelabelConfigs to apply to samples before ingestion.", + "items": { + "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", + "properties": { + "action": { + "default": "replace", + "description": "Action to perform based on the regex matching.\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\nDefault: \"Replace\"", + "enum": [ + "replace", + "Replace", + "keep", + "Keep", + "drop", + "Drop", + "hashmod", + "HashMod", + "labelmap", + "LabelMap", + "labeldrop", + "LabelDrop", + "labelkeep", + "LabelKeep", + "lowercase", + "Lowercase", + "uppercase", + "Uppercase", + "keepequal", + "KeepEqual", + "dropequal", + "DropEqual" + ], + "type": "string" + }, + "modulus": { + "description": "Modulus to take of the hash of the source label values.\n\nOnly applicable when the action is `HashMod`.", + "format": "int64", + "type": "integer" + }, + "regex": { + "description": "Regular expression against which the extracted value is matched.", + "type": "string" + }, + "replacement": { + "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\nRegex capture groups are available.", + "type": "string" + }, + "separator": { + "description": "Separator is the string between concatenated SourceLabels.", + "type": "string" + }, + "sourceLabels": { + "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.", + "items": { + "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "description": "Label to which the resulting string is written in a replacement.\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\nRegex capture groups are available.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "override": { + "description": "Override allows customization of the created ServiceMonitor.\nAll fields can be overwritten except \"endpoints\", \"selector\" and \"namespaceSelector\".", + "properties": { + "attachMetadata": { + "description": "`attachMetadata` defines additional metadata which is added to the\ndiscovered targets.\n\nIt requires Prometheus >= v2.37.0.", + "properties": { + "node": { + "description": "When set to true, Prometheus attaches node metadata to the discovered\ntargets.\n\nThe Prometheus service account must have the `list` and `watch`\npermissions on the `Nodes` objects.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "bodySizeLimit": { + "description": "When defined, bodySizeLimit specifies a job level limit on the size\nof uncompressed response body that will be accepted by Prometheus.\n\nIt requires Prometheus >= v2.28.0.", + "pattern": "(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$", + "type": "string" + }, + "endpoints": { + "description": "List of endpoints part of this ServiceMonitor.\nDefines how to scrape metrics from Kubernetes [Endpoints](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) objects.\nIn most cases, an Endpoints object is backed by a Kubernetes [Service](https://kubernetes.io/docs/concepts/services-networking/service/) object with the same name and labels.", + "items": { + "description": "Endpoint defines an endpoint serving Prometheus metrics to be scraped by\nPrometheus.", + "properties": { + "authorization": { + "description": "`authorization` configures the Authorization header credentials to use when\nscraping the target.\n\nCannot be set at the same time as `basicAuth`, or `oauth2`.", + "properties": { + "credentials": { + "description": "Selects a key of a Secret in the namespace that contains the credentials for authentication.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "type": { + "description": "Defines the authentication type. The value is case-insensitive.\n\n\"Basic\" is not a supported value.\n\nDefault: \"Bearer\"", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "basicAuth": { + "description": "`basicAuth` configures the Basic Authentication credentials to use when\nscraping the target.\n\nCannot be set at the same time as `authorization`, or `oauth2`.", + "properties": { + "password": { + "description": "`password` specifies a key of a Secret containing the password for\nauthentication.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "username": { + "description": "`username` specifies a key of a Secret containing the username for\nauthentication.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "bearerTokenFile": { + "description": "File to read bearer token for scraping the target.\n\nDeprecated: use `authorization` instead.", + "type": "string" + }, + "bearerTokenSecret": { + "description": "`bearerTokenSecret` specifies a key of a Secret containing the bearer\ntoken for scraping targets. The secret needs to be in the same namespace\nas the ServiceMonitor object and readable by the Prometheus Operator.\n\nDeprecated: use `authorization` instead.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "enableHttp2": { + "description": "`enableHttp2` can be used to disable HTTP2 when scraping the target.", + "type": "boolean" + }, + "filterRunning": { + "description": "When true, the pods which are not running (e.g. either in Failed or\nSucceeded state) are dropped during the target discovery.\n\nIf unset, the filtering is enabled.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase", + "type": "boolean" + }, + "followRedirects": { + "description": "`followRedirects` defines whether the scrape requests should follow HTTP\n3xx redirects.", + "type": "boolean" + }, + "honorLabels": { + "description": "When true, `honorLabels` preserves the metric's labels when they collide\nwith the target's labels.", + "type": "boolean" + }, + "honorTimestamps": { + "description": "`honorTimestamps` controls whether Prometheus preserves the timestamps\nwhen exposed by the target.", + "type": "boolean" + }, + "interval": { + "description": "Interval at which Prometheus scrapes the metrics from the target.\n\nIf empty, Prometheus uses the global scrape interval.", + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "type": "string" + }, + "metricRelabelings": { + "description": "`metricRelabelings` configures the relabeling rules to apply to the\nsamples before ingestion.", + "items": { + "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", + "properties": { + "action": { + "default": "replace", + "description": "Action to perform based on the regex matching.\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\nDefault: \"Replace\"", + "enum": [ + "replace", + "Replace", + "keep", + "Keep", + "drop", + "Drop", + "hashmod", + "HashMod", + "labelmap", + "LabelMap", + "labeldrop", + "LabelDrop", + "labelkeep", + "LabelKeep", + "lowercase", + "Lowercase", + "uppercase", + "Uppercase", + "keepequal", + "KeepEqual", + "dropequal", + "DropEqual" + ], + "type": "string" + }, + "modulus": { + "description": "Modulus to take of the hash of the source label values.\n\nOnly applicable when the action is `HashMod`.", + "format": "int64", + "type": "integer" + }, + "regex": { + "description": "Regular expression against which the extracted value is matched.", + "type": "string" + }, + "replacement": { + "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\nRegex capture groups are available.", + "type": "string" + }, + "separator": { + "description": "Separator is the string between concatenated SourceLabels.", + "type": "string" + }, + "sourceLabels": { + "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.", + "items": { + "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "description": "Label to which the resulting string is written in a replacement.\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\nRegex capture groups are available.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "oauth2": { + "description": "`oauth2` configures the OAuth2 settings to use when scraping the target.\n\nIt requires Prometheus >= 2.27.0.\n\nCannot be set at the same time as `authorization`, or `basicAuth`.", + "properties": { + "clientId": { + "description": "`clientId` specifies a key of a Secret or ConfigMap containing the\nOAuth2 client's ID.", + "properties": { + "configMap": { + "description": "ConfigMap containing data to use for the targets.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secret": { + "description": "Secret containing data to use for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "clientSecret": { + "description": "`clientSecret` specifies a key of a Secret containing the OAuth2\nclient's secret.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "endpointParams": { + "additionalProperties": { + "type": "string" + }, + "description": "`endpointParams` configures the HTTP parameters to append to the token\nURL.", + "type": "object" + }, + "noProxy": { + "description": "`noProxy` is a comma-separated string that can contain IPs, CIDR notation, domain names\nthat should be excluded from proxying. IP and domain names can\ncontain port numbers.\n\nIt requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0.", + "type": "string" + }, + "proxyConnectHeader": { + "additionalProperties": { + "items": { + "description": "SecretKeySelector selects a key of a Secret.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "type": "array" + }, + "description": "ProxyConnectHeader optionally specifies headers to send to\nproxies during CONNECT requests.\n\nIt requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0.", + "type": "object", + "x-kubernetes-map-type": "atomic" + }, + "proxyFromEnvironment": { + "description": "Whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY).\n\nIt requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0.", + "type": "boolean" + }, + "proxyUrl": { + "description": "`proxyURL` defines the HTTP proxy server to use.", + "pattern": "^http(s)?://.+$", + "type": "string" + }, + "scopes": { + "description": "`scopes` defines the OAuth2 scopes used for the token request.", + "items": { + "type": "string" + }, + "type": "array" + }, + "tlsConfig": { + "description": "TLS configuration to use when connecting to the OAuth2 server.\nIt requires Prometheus >= v2.43.0.", + "properties": { + "ca": { + "description": "Certificate authority used when verifying server certificates.", + "properties": { + "configMap": { + "description": "ConfigMap containing data to use for the targets.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secret": { + "description": "Secret containing data to use for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "cert": { + "description": "Client certificate to present when doing client-authentication.", + "properties": { + "configMap": { + "description": "ConfigMap containing data to use for the targets.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secret": { + "description": "Secret containing data to use for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "insecureSkipVerify": { + "description": "Disable target certificate validation.", + "type": "boolean" + }, + "keySecret": { + "description": "Secret containing the client key file for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "maxVersion": { + "description": "Maximum acceptable TLS version.\n\nIt requires Prometheus >= v2.41.0.", + "enum": [ + "TLS10", + "TLS11", + "TLS12", + "TLS13" + ], + "type": "string" + }, + "minVersion": { + "description": "Minimum acceptable TLS version.\n\nIt requires Prometheus >= v2.35.0.", + "enum": [ + "TLS10", + "TLS11", + "TLS12", + "TLS13" + ], + "type": "string" + }, + "serverName": { + "description": "Used to verify the hostname for the targets.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "tokenUrl": { + "description": "`tokenURL` configures the URL to fetch the token from.", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "clientId", + "clientSecret", + "tokenUrl" + ], + "type": "object", + "additionalProperties": false + }, + "params": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": "params define optional HTTP URL parameters.", + "type": "object" + }, + "path": { + "description": "HTTP path from which to scrape for metrics.\n\nIf empty, Prometheus uses the default value (e.g. `/metrics`).", + "type": "string" + }, + "port": { + "description": "Name of the Service port which this endpoint refers to.\n\nIt takes precedence over `targetPort`.", + "type": "string" + }, + "proxyUrl": { + "description": "`proxyURL` configures the HTTP Proxy URL (e.g.\n\"http://proxyserver:2195\") to go through when scraping the target.", + "type": "string" + }, + "relabelings": { + "description": "`relabelings` configures the relabeling rules to apply the target's\nmetadata labels.\n\nThe Operator automatically adds relabelings for a few standard Kubernetes fields.\n\nThe original scrape job's name is available via the `__tmp_prometheus_job_name` label.\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", + "items": { + "description": "RelabelConfig allows dynamic rewriting of the label set for targets, alerts,\nscraped samples and remote write samples.\n\nMore info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", + "properties": { + "action": { + "default": "replace", + "description": "Action to perform based on the regex matching.\n\n`Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0.\n`DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0.\n\nDefault: \"Replace\"", + "enum": [ + "replace", + "Replace", + "keep", + "Keep", + "drop", + "Drop", + "hashmod", + "HashMod", + "labelmap", + "LabelMap", + "labeldrop", + "LabelDrop", + "labelkeep", + "LabelKeep", + "lowercase", + "Lowercase", + "uppercase", + "Uppercase", + "keepequal", + "KeepEqual", + "dropequal", + "DropEqual" + ], + "type": "string" + }, + "modulus": { + "description": "Modulus to take of the hash of the source label values.\n\nOnly applicable when the action is `HashMod`.", + "format": "int64", + "type": "integer" + }, + "regex": { + "description": "Regular expression against which the extracted value is matched.", + "type": "string" + }, + "replacement": { + "description": "Replacement value against which a Replace action is performed if the\nregular expression matches.\n\nRegex capture groups are available.", + "type": "string" + }, + "separator": { + "description": "Separator is the string between concatenated SourceLabels.", + "type": "string" + }, + "sourceLabels": { + "description": "The source labels select values from existing labels. Their content is\nconcatenated using the configured Separator and matched against the\nconfigured regular expression.", + "items": { + "description": "LabelName is a valid Prometheus label name which may only contain ASCII\nletters, numbers, as well as underscores.", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "description": "Label to which the resulting string is written in a replacement.\n\nIt is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`,\n`KeepEqual` and `DropEqual` actions.\n\nRegex capture groups are available.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "scheme": { + "description": "HTTP scheme to use for scraping.\n\n`http` and `https` are the expected values unless you rewrite the\n`__scheme__` label via relabeling.\n\nIf empty, Prometheus uses the default value `http`.", + "enum": [ + "http", + "https" + ], + "type": "string" + }, + "scrapeTimeout": { + "description": "Timeout after which Prometheus considers the scrape to be failed.\n\nIf empty, Prometheus uses the global scrape timeout unless it is less\nthan the target's scrape interval value in which the latter is used.", + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "type": "string" + }, + "targetPort": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Name or number of the target port of the `Pod` object behind the\nService. The port must be specified with the container's port property.", + "x-kubernetes-int-or-string": true + }, + "tlsConfig": { + "description": "TLS configuration to use when scraping the target.", + "properties": { + "ca": { + "description": "Certificate authority used when verifying server certificates.", + "properties": { + "configMap": { + "description": "ConfigMap containing data to use for the targets.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secret": { + "description": "Secret containing data to use for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "caFile": { + "description": "Path to the CA cert in the Prometheus container to use for the targets.", + "type": "string" + }, + "cert": { + "description": "Client certificate to present when doing client-authentication.", + "properties": { + "configMap": { + "description": "ConfigMap containing data to use for the targets.", + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "secret": { + "description": "Secret containing data to use for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "certFile": { + "description": "Path to the client cert file in the Prometheus container for the targets.", + "type": "string" + }, + "insecureSkipVerify": { + "description": "Disable target certificate validation.", + "type": "boolean" + }, + "keyFile": { + "description": "Path to the client key file in the Prometheus container for the targets.", + "type": "string" + }, + "keySecret": { + "description": "Secret containing the client key file for the targets.", + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + }, + "required": [ + "key" + ], + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "maxVersion": { + "description": "Maximum acceptable TLS version.\n\nIt requires Prometheus >= v2.41.0.", + "enum": [ + "TLS10", + "TLS11", + "TLS12", + "TLS13" + ], + "type": "string" + }, + "minVersion": { + "description": "Minimum acceptable TLS version.\n\nIt requires Prometheus >= v2.35.0.", + "enum": [ + "TLS10", + "TLS11", + "TLS12", + "TLS13" + ], + "type": "string" + }, + "serverName": { + "description": "Used to verify the hostname for the targets.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "trackTimestampsStaleness": { + "description": "`trackTimestampsStaleness` defines whether Prometheus tracks staleness of\nthe metrics that have an explicit timestamp present in scraped data.\nHas no effect if `honorTimestamps` is false.\n\nIt requires Prometheus >= v2.48.0.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "jobLabel": { + "description": "`jobLabel` selects the label from the associated Kubernetes `Service`\nobject which will be used as the `job` label for all metrics.\n\nFor example if `jobLabel` is set to `foo` and the Kubernetes `Service`\nobject is labeled with `foo: bar`, then Prometheus adds the `job=\"bar\"`\nlabel to all ingested metrics.\n\nIf the value of this field is empty or if the label doesn't exist for\nthe given Service, the `job` label of the metrics defaults to the name\nof the associated Kubernetes `Service`.", + "type": "string" + }, + "keepDroppedTargets": { + "description": "Per-scrape limit on the number of targets dropped by relabeling\nthat will be kept in memory. 0 means no limit.\n\nIt requires Prometheus >= v2.47.0.", + "format": "int64", + "type": "integer" + }, + "labelLimit": { + "description": "Per-scrape limit on number of labels that will be accepted for a sample.\n\nIt requires Prometheus >= v2.27.0.", + "format": "int64", + "type": "integer" + }, + "labelNameLengthLimit": { + "description": "Per-scrape limit on length of labels name that will be accepted for a sample.\n\nIt requires Prometheus >= v2.27.0.", + "format": "int64", + "type": "integer" + }, + "labelValueLengthLimit": { + "description": "Per-scrape limit on length of labels value that will be accepted for a sample.\n\nIt requires Prometheus >= v2.27.0.", + "format": "int64", + "type": "integer" + }, + "namespaceSelector": { + "description": "`namespaceSelector` defines in which namespace(s) Prometheus should discover the services.\nBy default, the services are discovered in the same namespace as the `ServiceMonitor` object but it is possible to select pods across different/all namespaces.", + "properties": { + "any": { + "description": "Boolean describing whether all namespaces are selected in contrast to a\nlist restricting them.", + "type": "boolean" + }, + "matchNames": { + "description": "List of namespace names to select from.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "podTargetLabels": { + "description": "`podTargetLabels` defines the labels which are transferred from the\nassociated Kubernetes `Pod` object onto the ingested metrics.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sampleLimit": { + "description": "`sampleLimit` defines a per-scrape limit on the number of scraped samples\nthat will be accepted.", + "format": "int64", + "type": "integer" + }, + "scrapeClass": { + "description": "The scrape class to apply.", + "minLength": 1, + "type": "string" + }, + "scrapeProtocols": { + "description": "`scrapeProtocols` defines the protocols to negotiate during a scrape. It tells clients the\nprotocols supported by Prometheus in order of preference (from most to least preferred).\n\nIf unset, Prometheus uses its default value.\n\nIt requires Prometheus >= v2.49.0.", + "items": { + "description": "ScrapeProtocol represents a protocol used by Prometheus for scraping metrics.\nSupported values are:\n* `OpenMetricsText0.0.1`\n* `OpenMetricsText1.0.0`\n* `PrometheusProto`\n* `PrometheusText0.0.4`", + "enum": [ + "PrometheusProto", + "OpenMetricsText0.0.1", + "OpenMetricsText1.0.0", + "PrometheusText0.0.4" + ], + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "set" + }, + "selector": { + "description": "Label selector to select the Kubernetes `Endpoints` objects to scrape metrics from.", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + } + }, + "required": [ + "key", + "operator" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object" + } + }, + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "targetLabels": { + "description": "`targetLabels` defines the labels which are transferred from the\nassociated Kubernetes `Service` object onto the ingested metrics.", + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLimit": { + "description": "`targetLimit` defines a limit on the number of scraped targets that will\nbe accepted.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "endpoints", + "selector" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + }, + "numHistoryShards": { + "description": "NumHistoryShards is the desired number of history shards.\nThis field is immutable.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "persistence": { + "description": "Persistence defines temporal persistence configuration.", + "properties": { + "advancedVisibilityStore": { + "description": "AdvancedVisibilityStore holds the advanced visibility datastore specs.", + "properties": { + "cassandra": { + "description": "Cassandra holds all connection parameters for Cassandra datastore.\nNote that cassandra is now deprecated for visibility store.", + "properties": { + "connectTimeout": { + "description": "ConnectTimeout is a timeout for initial dial to cassandra server.", + "type": "string" + }, + "consistency": { + "description": "Consistency configuration.", + "properties": { + "consistency": { + "description": "Consistency sets the default consistency level.\nValues identical to gocql Consistency values. (defaults to LOCAL_QUORUM if not set).", + "enum": [ + "ANY", + "ONE", + "TWO", + "THREE", + "QUORUM", + "ALL", + "LOCAL_QUORUM", + "EACH_QUORUM", + "LOCAL_ONE" + ], + "type": "integer" + }, + "serialConsistency": { + "description": "SerialConsistency sets the consistency for the serial prtion of queries. Values identical to gocql SerialConsistency values.\n(defaults to LOCAL_SERIAL if not set)", + "enum": [ + "SERIAL", + "LOCAL_SERIAL" + ], + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "datacenter": { + "description": "Datacenter is the data center filter arg for cassandra.", + "type": "string" + }, + "disableInitialHostLookup": { + "description": "DisableInitialHostLookup instructs the gocql client to connect only using the supplied hosts.", + "type": "boolean" + }, + "hosts": { + "description": "Hosts is a list of cassandra endpoints.", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyspace": { + "description": "Keyspace is the cassandra keyspace.", + "type": "string" + }, + "maxConns": { + "description": "MaxConns is the max number of connections to this datastore for a single keyspace.", + "type": "integer" + }, + "port": { + "description": "Port is the cassandra port used for connection by gocql client.", + "type": "integer" + }, + "user": { + "description": "User is the cassandra user used for authentication by gocql client.", + "type": "string" + } + }, + "required": [ + "hosts", + "keyspace", + "port", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "elasticsearch": { + "description": "Elasticsearch holds all connection parameters for Elasticsearch datastores.", + "properties": { + "closeIdleConnectionsInterval": { + "description": "CloseIdleConnectionsInterval is the max duration a connection stay open while idle.", + "type": "string" + }, + "enableHealthcheck": { + "description": "EnableHealthcheck enables or disables healthcheck on the temporal cluster's es client.", + "type": "boolean" + }, + "enableSniff": { + "description": "EnableSniff enables or disables sniffer on the temporal cluster's es client.", + "type": "boolean" + }, + "indices": { + "description": "Indices holds visibility index names.", + "properties": { + "secondaryVisibility": { + "description": "SecondaryVisibility defines secondary visibility's index name.", + "type": "string" + }, + "visibility": { + "default": "temporal_visibility_v1", + "description": "Visibility defines visibility's index name.", + "type": "string" + } + }, + "required": [ + "visibility" + ], + "type": "object", + "additionalProperties": false + }, + "logLevel": { + "description": "LogLevel defines the temporal cluster's es client logger level.", + "type": "string" + }, + "url": { + "description": "URL is the connection url to connect to the instance.", + "pattern": "^https?:\\/\\/.+$", + "type": "string" + }, + "username": { + "description": "Username is the username to be used for the connection.", + "type": "string" + }, + "version": { + "default": "v7", + "description": "Version defines the elasticsearch version.", + "pattern": "^v(6|7|8)$", + "type": "string" + } + }, + "required": [ + "indices", + "url", + "username", + "version" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "Name is the name of the datastore.\nIt should be unique and will be referenced within the persistence spec.\nDefaults to \"default\" for default sore, \"visibility\" for visibility store,\n\"secondaryVisibility\" for secondary visibility store and\n\"advancedVisibility\" for advanced visibility store.", + "type": "string" + }, + "passwordSecretRef": { + "description": "PasswordSecret is the reference to the secret holding the password.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "skipCreate": { + "description": "SkipCreate instructs the operator to skip creating the database for SQL datastores or to skip creating keyspace for Cassandra. Use this option if your database or keyspace has already been provisioned by an administrator.", + "type": "boolean" + }, + "sql": { + "description": "SQL holds all connection parameters for SQL datastores.", + "properties": { + "connectAddr": { + "description": "ConnectAddr is the remote addr of the database.", + "type": "string" + }, + "connectAttributes": { + "additionalProperties": { + "type": "string" + }, + "description": "ConnectAttributes is a set of key-value attributes to be sent as part of connect data_source_name url", + "type": "object" + }, + "connectProtocol": { + "description": "ConnectProtocol is the protocol that goes with the ConnectAddr.", + "type": "string" + }, + "databaseName": { + "description": "DatabaseName is the name of SQL database to connect to.", + "type": "string" + }, + "gcpServiceAccount": { + "description": "GCPServiceAccount is the service account to use to authenticate with GCP CloudSQL.", + "type": "string" + }, + "maxConnLifetime": { + "description": "MaxConnLifetime is the maximum time a connection can be alive", + "type": "string" + }, + "maxConns": { + "description": "MaxConns the max number of connections to this datastore.", + "type": "integer" + }, + "maxIdleConns": { + "description": "MaxIdleConns is the max number of idle connections to this datastore.", + "type": "integer" + }, + "pluginName": { + "description": "PluginName is the name of SQL plugin.", + "enum": [ + "postgres", + "postgres12", + "mysql", + "mysql8" + ], + "type": "string" + }, + "taskScanPartitions": { + "description": "TaskScanPartitions is the number of partitions to sequentially scan during ListTaskQueue operations.", + "type": "integer" + }, + "user": { + "description": "User is the username to be used for the connection.", + "type": "string" + } + }, + "required": [ + "connectAddr", + "databaseName", + "pluginName", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "tls": { + "description": "TLS is an optional option to connect to the datastore using TLS.", + "properties": { + "caFileRef": { + "description": "CaFileRef is a reference to a secret containing the ca file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "certFileRef": { + "description": "CertFileRef is a reference to a secret containing the cert file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "enableHostVerification": { + "description": "EnableHostVerification defines if the hostname should be verified when connecting to the datastore.", + "type": "boolean" + }, + "enabled": { + "description": "Enabled defines if the cluster should use a TLS connection to connect to the datastore.", + "type": "boolean" + }, + "keyFileRef": { + "description": "KeyFileRef is a reference to a secret containing the key file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "serverName": { + "description": "ServerName the datastore should present.", + "type": "string" + } + }, + "required": [ + "enableHostVerification", + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "defaultStore": { + "description": "DefaultStore holds the default datastore specs.", + "properties": { + "cassandra": { + "description": "Cassandra holds all connection parameters for Cassandra datastore.\nNote that cassandra is now deprecated for visibility store.", + "properties": { + "connectTimeout": { + "description": "ConnectTimeout is a timeout for initial dial to cassandra server.", + "type": "string" + }, + "consistency": { + "description": "Consistency configuration.", + "properties": { + "consistency": { + "description": "Consistency sets the default consistency level.\nValues identical to gocql Consistency values. (defaults to LOCAL_QUORUM if not set).", + "enum": [ + "ANY", + "ONE", + "TWO", + "THREE", + "QUORUM", + "ALL", + "LOCAL_QUORUM", + "EACH_QUORUM", + "LOCAL_ONE" + ], + "type": "integer" + }, + "serialConsistency": { + "description": "SerialConsistency sets the consistency for the serial prtion of queries. Values identical to gocql SerialConsistency values.\n(defaults to LOCAL_SERIAL if not set)", + "enum": [ + "SERIAL", + "LOCAL_SERIAL" + ], + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "datacenter": { + "description": "Datacenter is the data center filter arg for cassandra.", + "type": "string" + }, + "disableInitialHostLookup": { + "description": "DisableInitialHostLookup instructs the gocql client to connect only using the supplied hosts.", + "type": "boolean" + }, + "hosts": { + "description": "Hosts is a list of cassandra endpoints.", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyspace": { + "description": "Keyspace is the cassandra keyspace.", + "type": "string" + }, + "maxConns": { + "description": "MaxConns is the max number of connections to this datastore for a single keyspace.", + "type": "integer" + }, + "port": { + "description": "Port is the cassandra port used for connection by gocql client.", + "type": "integer" + }, + "user": { + "description": "User is the cassandra user used for authentication by gocql client.", + "type": "string" + } + }, + "required": [ + "hosts", + "keyspace", + "port", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "elasticsearch": { + "description": "Elasticsearch holds all connection parameters for Elasticsearch datastores.", + "properties": { + "closeIdleConnectionsInterval": { + "description": "CloseIdleConnectionsInterval is the max duration a connection stay open while idle.", + "type": "string" + }, + "enableHealthcheck": { + "description": "EnableHealthcheck enables or disables healthcheck on the temporal cluster's es client.", + "type": "boolean" + }, + "enableSniff": { + "description": "EnableSniff enables or disables sniffer on the temporal cluster's es client.", + "type": "boolean" + }, + "indices": { + "description": "Indices holds visibility index names.", + "properties": { + "secondaryVisibility": { + "description": "SecondaryVisibility defines secondary visibility's index name.", + "type": "string" + }, + "visibility": { + "default": "temporal_visibility_v1", + "description": "Visibility defines visibility's index name.", + "type": "string" + } + }, + "required": [ + "visibility" + ], + "type": "object", + "additionalProperties": false + }, + "logLevel": { + "description": "LogLevel defines the temporal cluster's es client logger level.", + "type": "string" + }, + "url": { + "description": "URL is the connection url to connect to the instance.", + "pattern": "^https?:\\/\\/.+$", + "type": "string" + }, + "username": { + "description": "Username is the username to be used for the connection.", + "type": "string" + }, + "version": { + "default": "v7", + "description": "Version defines the elasticsearch version.", + "pattern": "^v(6|7|8)$", + "type": "string" + } + }, + "required": [ + "indices", + "url", + "username", + "version" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "Name is the name of the datastore.\nIt should be unique and will be referenced within the persistence spec.\nDefaults to \"default\" for default sore, \"visibility\" for visibility store,\n\"secondaryVisibility\" for secondary visibility store and\n\"advancedVisibility\" for advanced visibility store.", + "type": "string" + }, + "passwordSecretRef": { + "description": "PasswordSecret is the reference to the secret holding the password.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "skipCreate": { + "description": "SkipCreate instructs the operator to skip creating the database for SQL datastores or to skip creating keyspace for Cassandra. Use this option if your database or keyspace has already been provisioned by an administrator.", + "type": "boolean" + }, + "sql": { + "description": "SQL holds all connection parameters for SQL datastores.", + "properties": { + "connectAddr": { + "description": "ConnectAddr is the remote addr of the database.", + "type": "string" + }, + "connectAttributes": { + "additionalProperties": { + "type": "string" + }, + "description": "ConnectAttributes is a set of key-value attributes to be sent as part of connect data_source_name url", + "type": "object" + }, + "connectProtocol": { + "description": "ConnectProtocol is the protocol that goes with the ConnectAddr.", + "type": "string" + }, + "databaseName": { + "description": "DatabaseName is the name of SQL database to connect to.", + "type": "string" + }, + "gcpServiceAccount": { + "description": "GCPServiceAccount is the service account to use to authenticate with GCP CloudSQL.", + "type": "string" + }, + "maxConnLifetime": { + "description": "MaxConnLifetime is the maximum time a connection can be alive", + "type": "string" + }, + "maxConns": { + "description": "MaxConns the max number of connections to this datastore.", + "type": "integer" + }, + "maxIdleConns": { + "description": "MaxIdleConns is the max number of idle connections to this datastore.", + "type": "integer" + }, + "pluginName": { + "description": "PluginName is the name of SQL plugin.", + "enum": [ + "postgres", + "postgres12", + "mysql", + "mysql8" + ], + "type": "string" + }, + "taskScanPartitions": { + "description": "TaskScanPartitions is the number of partitions to sequentially scan during ListTaskQueue operations.", + "type": "integer" + }, + "user": { + "description": "User is the username to be used for the connection.", + "type": "string" + } + }, + "required": [ + "connectAddr", + "databaseName", + "pluginName", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "tls": { + "description": "TLS is an optional option to connect to the datastore using TLS.", + "properties": { + "caFileRef": { + "description": "CaFileRef is a reference to a secret containing the ca file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "certFileRef": { + "description": "CertFileRef is a reference to a secret containing the cert file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "enableHostVerification": { + "description": "EnableHostVerification defines if the hostname should be verified when connecting to the datastore.", + "type": "boolean" + }, + "enabled": { + "description": "Enabled defines if the cluster should use a TLS connection to connect to the datastore.", + "type": "boolean" + }, + "keyFileRef": { + "description": "KeyFileRef is a reference to a secret containing the key file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "serverName": { + "description": "ServerName the datastore should present.", + "type": "string" + } + }, + "required": [ + "enableHostVerification", + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "secondaryVisibilityStore": { + "description": "SecondaryVisibilityStore holds the secondary visibility datastore specs.\nFeature only available for clusters >= 1.21.0.", + "properties": { + "cassandra": { + "description": "Cassandra holds all connection parameters for Cassandra datastore.\nNote that cassandra is now deprecated for visibility store.", + "properties": { + "connectTimeout": { + "description": "ConnectTimeout is a timeout for initial dial to cassandra server.", + "type": "string" + }, + "consistency": { + "description": "Consistency configuration.", + "properties": { + "consistency": { + "description": "Consistency sets the default consistency level.\nValues identical to gocql Consistency values. (defaults to LOCAL_QUORUM if not set).", + "enum": [ + "ANY", + "ONE", + "TWO", + "THREE", + "QUORUM", + "ALL", + "LOCAL_QUORUM", + "EACH_QUORUM", + "LOCAL_ONE" + ], + "type": "integer" + }, + "serialConsistency": { + "description": "SerialConsistency sets the consistency for the serial prtion of queries. Values identical to gocql SerialConsistency values.\n(defaults to LOCAL_SERIAL if not set)", + "enum": [ + "SERIAL", + "LOCAL_SERIAL" + ], + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "datacenter": { + "description": "Datacenter is the data center filter arg for cassandra.", + "type": "string" + }, + "disableInitialHostLookup": { + "description": "DisableInitialHostLookup instructs the gocql client to connect only using the supplied hosts.", + "type": "boolean" + }, + "hosts": { + "description": "Hosts is a list of cassandra endpoints.", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyspace": { + "description": "Keyspace is the cassandra keyspace.", + "type": "string" + }, + "maxConns": { + "description": "MaxConns is the max number of connections to this datastore for a single keyspace.", + "type": "integer" + }, + "port": { + "description": "Port is the cassandra port used for connection by gocql client.", + "type": "integer" + }, + "user": { + "description": "User is the cassandra user used for authentication by gocql client.", + "type": "string" + } + }, + "required": [ + "hosts", + "keyspace", + "port", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "elasticsearch": { + "description": "Elasticsearch holds all connection parameters for Elasticsearch datastores.", + "properties": { + "closeIdleConnectionsInterval": { + "description": "CloseIdleConnectionsInterval is the max duration a connection stay open while idle.", + "type": "string" + }, + "enableHealthcheck": { + "description": "EnableHealthcheck enables or disables healthcheck on the temporal cluster's es client.", + "type": "boolean" + }, + "enableSniff": { + "description": "EnableSniff enables or disables sniffer on the temporal cluster's es client.", + "type": "boolean" + }, + "indices": { + "description": "Indices holds visibility index names.", + "properties": { + "secondaryVisibility": { + "description": "SecondaryVisibility defines secondary visibility's index name.", + "type": "string" + }, + "visibility": { + "default": "temporal_visibility_v1", + "description": "Visibility defines visibility's index name.", + "type": "string" + } + }, + "required": [ + "visibility" + ], + "type": "object", + "additionalProperties": false + }, + "logLevel": { + "description": "LogLevel defines the temporal cluster's es client logger level.", + "type": "string" + }, + "url": { + "description": "URL is the connection url to connect to the instance.", + "pattern": "^https?:\\/\\/.+$", + "type": "string" + }, + "username": { + "description": "Username is the username to be used for the connection.", + "type": "string" + }, + "version": { + "default": "v7", + "description": "Version defines the elasticsearch version.", + "pattern": "^v(6|7|8)$", + "type": "string" + } + }, + "required": [ + "indices", + "url", + "username", + "version" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "Name is the name of the datastore.\nIt should be unique and will be referenced within the persistence spec.\nDefaults to \"default\" for default sore, \"visibility\" for visibility store,\n\"secondaryVisibility\" for secondary visibility store and\n\"advancedVisibility\" for advanced visibility store.", + "type": "string" + }, + "passwordSecretRef": { + "description": "PasswordSecret is the reference to the secret holding the password.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "skipCreate": { + "description": "SkipCreate instructs the operator to skip creating the database for SQL datastores or to skip creating keyspace for Cassandra. Use this option if your database or keyspace has already been provisioned by an administrator.", + "type": "boolean" + }, + "sql": { + "description": "SQL holds all connection parameters for SQL datastores.", + "properties": { + "connectAddr": { + "description": "ConnectAddr is the remote addr of the database.", + "type": "string" + }, + "connectAttributes": { + "additionalProperties": { + "type": "string" + }, + "description": "ConnectAttributes is a set of key-value attributes to be sent as part of connect data_source_name url", + "type": "object" + }, + "connectProtocol": { + "description": "ConnectProtocol is the protocol that goes with the ConnectAddr.", + "type": "string" + }, + "databaseName": { + "description": "DatabaseName is the name of SQL database to connect to.", + "type": "string" + }, + "gcpServiceAccount": { + "description": "GCPServiceAccount is the service account to use to authenticate with GCP CloudSQL.", + "type": "string" + }, + "maxConnLifetime": { + "description": "MaxConnLifetime is the maximum time a connection can be alive", + "type": "string" + }, + "maxConns": { + "description": "MaxConns the max number of connections to this datastore.", + "type": "integer" + }, + "maxIdleConns": { + "description": "MaxIdleConns is the max number of idle connections to this datastore.", + "type": "integer" + }, + "pluginName": { + "description": "PluginName is the name of SQL plugin.", + "enum": [ + "postgres", + "postgres12", + "mysql", + "mysql8" + ], + "type": "string" + }, + "taskScanPartitions": { + "description": "TaskScanPartitions is the number of partitions to sequentially scan during ListTaskQueue operations.", + "type": "integer" + }, + "user": { + "description": "User is the username to be used for the connection.", + "type": "string" + } + }, + "required": [ + "connectAddr", + "databaseName", + "pluginName", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "tls": { + "description": "TLS is an optional option to connect to the datastore using TLS.", + "properties": { + "caFileRef": { + "description": "CaFileRef is a reference to a secret containing the ca file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "certFileRef": { + "description": "CertFileRef is a reference to a secret containing the cert file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "enableHostVerification": { + "description": "EnableHostVerification defines if the hostname should be verified when connecting to the datastore.", + "type": "boolean" + }, + "enabled": { + "description": "Enabled defines if the cluster should use a TLS connection to connect to the datastore.", + "type": "boolean" + }, + "keyFileRef": { + "description": "KeyFileRef is a reference to a secret containing the key file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "serverName": { + "description": "ServerName the datastore should present.", + "type": "string" + } + }, + "required": [ + "enableHostVerification", + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "visibilityStore": { + "description": "VisibilityStore holds the visibility datastore specs.", + "properties": { + "cassandra": { + "description": "Cassandra holds all connection parameters for Cassandra datastore.\nNote that cassandra is now deprecated for visibility store.", + "properties": { + "connectTimeout": { + "description": "ConnectTimeout is a timeout for initial dial to cassandra server.", + "type": "string" + }, + "consistency": { + "description": "Consistency configuration.", + "properties": { + "consistency": { + "description": "Consistency sets the default consistency level.\nValues identical to gocql Consistency values. (defaults to LOCAL_QUORUM if not set).", + "enum": [ + "ANY", + "ONE", + "TWO", + "THREE", + "QUORUM", + "ALL", + "LOCAL_QUORUM", + "EACH_QUORUM", + "LOCAL_ONE" + ], + "type": "integer" + }, + "serialConsistency": { + "description": "SerialConsistency sets the consistency for the serial prtion of queries. Values identical to gocql SerialConsistency values.\n(defaults to LOCAL_SERIAL if not set)", + "enum": [ + "SERIAL", + "LOCAL_SERIAL" + ], + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "datacenter": { + "description": "Datacenter is the data center filter arg for cassandra.", + "type": "string" + }, + "disableInitialHostLookup": { + "description": "DisableInitialHostLookup instructs the gocql client to connect only using the supplied hosts.", + "type": "boolean" + }, + "hosts": { + "description": "Hosts is a list of cassandra endpoints.", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyspace": { + "description": "Keyspace is the cassandra keyspace.", + "type": "string" + }, + "maxConns": { + "description": "MaxConns is the max number of connections to this datastore for a single keyspace.", + "type": "integer" + }, + "port": { + "description": "Port is the cassandra port used for connection by gocql client.", + "type": "integer" + }, + "user": { + "description": "User is the cassandra user used for authentication by gocql client.", + "type": "string" + } + }, + "required": [ + "hosts", + "keyspace", + "port", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "elasticsearch": { + "description": "Elasticsearch holds all connection parameters for Elasticsearch datastores.", + "properties": { + "closeIdleConnectionsInterval": { + "description": "CloseIdleConnectionsInterval is the max duration a connection stay open while idle.", + "type": "string" + }, + "enableHealthcheck": { + "description": "EnableHealthcheck enables or disables healthcheck on the temporal cluster's es client.", + "type": "boolean" + }, + "enableSniff": { + "description": "EnableSniff enables or disables sniffer on the temporal cluster's es client.", + "type": "boolean" + }, + "indices": { + "description": "Indices holds visibility index names.", + "properties": { + "secondaryVisibility": { + "description": "SecondaryVisibility defines secondary visibility's index name.", + "type": "string" + }, + "visibility": { + "default": "temporal_visibility_v1", + "description": "Visibility defines visibility's index name.", + "type": "string" + } + }, + "required": [ + "visibility" + ], + "type": "object", + "additionalProperties": false + }, + "logLevel": { + "description": "LogLevel defines the temporal cluster's es client logger level.", + "type": "string" + }, + "url": { + "description": "URL is the connection url to connect to the instance.", + "pattern": "^https?:\\/\\/.+$", + "type": "string" + }, + "username": { + "description": "Username is the username to be used for the connection.", + "type": "string" + }, + "version": { + "default": "v7", + "description": "Version defines the elasticsearch version.", + "pattern": "^v(6|7|8)$", + "type": "string" + } + }, + "required": [ + "indices", + "url", + "username", + "version" + ], + "type": "object", + "additionalProperties": false + }, + "name": { + "description": "Name is the name of the datastore.\nIt should be unique and will be referenced within the persistence spec.\nDefaults to \"default\" for default sore, \"visibility\" for visibility store,\n\"secondaryVisibility\" for secondary visibility store and\n\"advancedVisibility\" for advanced visibility store.", + "type": "string" + }, + "passwordSecretRef": { + "description": "PasswordSecret is the reference to the secret holding the password.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "skipCreate": { + "description": "SkipCreate instructs the operator to skip creating the database for SQL datastores or to skip creating keyspace for Cassandra. Use this option if your database or keyspace has already been provisioned by an administrator.", + "type": "boolean" + }, + "sql": { + "description": "SQL holds all connection parameters for SQL datastores.", + "properties": { + "connectAddr": { + "description": "ConnectAddr is the remote addr of the database.", + "type": "string" + }, + "connectAttributes": { + "additionalProperties": { + "type": "string" + }, + "description": "ConnectAttributes is a set of key-value attributes to be sent as part of connect data_source_name url", + "type": "object" + }, + "connectProtocol": { + "description": "ConnectProtocol is the protocol that goes with the ConnectAddr.", + "type": "string" + }, + "databaseName": { + "description": "DatabaseName is the name of SQL database to connect to.", + "type": "string" + }, + "gcpServiceAccount": { + "description": "GCPServiceAccount is the service account to use to authenticate with GCP CloudSQL.", + "type": "string" + }, + "maxConnLifetime": { + "description": "MaxConnLifetime is the maximum time a connection can be alive", + "type": "string" + }, + "maxConns": { + "description": "MaxConns the max number of connections to this datastore.", + "type": "integer" + }, + "maxIdleConns": { + "description": "MaxIdleConns is the max number of idle connections to this datastore.", + "type": "integer" + }, + "pluginName": { + "description": "PluginName is the name of SQL plugin.", + "enum": [ + "postgres", + "postgres12", + "mysql", + "mysql8" + ], + "type": "string" + }, + "taskScanPartitions": { + "description": "TaskScanPartitions is the number of partitions to sequentially scan during ListTaskQueue operations.", + "type": "integer" + }, + "user": { + "description": "User is the username to be used for the connection.", + "type": "string" + } + }, + "required": [ + "connectAddr", + "databaseName", + "pluginName", + "user" + ], + "type": "object", + "additionalProperties": false + }, + "tls": { + "description": "TLS is an optional option to connect to the datastore using TLS.", + "properties": { + "caFileRef": { + "description": "CaFileRef is a reference to a secret containing the ca file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "certFileRef": { + "description": "CertFileRef is a reference to a secret containing the cert file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "enableHostVerification": { + "description": "EnableHostVerification defines if the hostname should be verified when connecting to the datastore.", + "type": "boolean" + }, + "enabled": { + "description": "Enabled defines if the cluster should use a TLS connection to connect to the datastore.", + "type": "boolean" + }, + "keyFileRef": { + "description": "KeyFileRef is a reference to a secret containing the key file.", + "properties": { + "key": { + "description": "Key in the Secret.", + "type": "string" + }, + "name": { + "description": "Name of the Secret.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "serverName": { + "description": "ServerName the datastore should present.", + "type": "string" + } + }, + "required": [ + "enableHostVerification", + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "defaultStore", + "visibilityStore" + ], + "type": "object", + "additionalProperties": false + }, + "services": { + "description": "Services allows customizations for each temporal services deployment.", + "properties": { + "frontend": { + "description": "Frontend service custom specifications.", + "properties": { + "httpPort": { + "description": "HTTPPort defines a custom http port for the service.\nDefault values are:\n7243 for Frontend service", + "format": "int32", + "type": "integer" + }, + "initContainers": { + "description": "InitContainers adds a list of init containers to the service's deployment.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "membershipPort": { + "description": "MembershipPort defines a custom membership port for the service.\nDefault values are:\n6933 for Frontend service\n6934 for History service\n6935 for Matching service\n6939 for Worker service", + "format": "int32", + "type": "integer" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the service.\nThose overrides takes precedence over spec.services.overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "port": { + "description": "Port defines a custom gRPC port for the service.\nDefault values are:\n7233 for Frontend service\n7234 for History service\n7235 for Matching service\n7239 for Worker service", + "format": "int32", + "type": "integer" + }, + "replicas": { + "description": "Number of desired replicas for the service. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by this service.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "history": { + "description": "History service custom specifications.", + "properties": { + "httpPort": { + "description": "HTTPPort defines a custom http port for the service.\nDefault values are:\n7243 for Frontend service", + "format": "int32", + "type": "integer" + }, + "initContainers": { + "description": "InitContainers adds a list of init containers to the service's deployment.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "membershipPort": { + "description": "MembershipPort defines a custom membership port for the service.\nDefault values are:\n6933 for Frontend service\n6934 for History service\n6935 for Matching service\n6939 for Worker service", + "format": "int32", + "type": "integer" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the service.\nThose overrides takes precedence over spec.services.overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "port": { + "description": "Port defines a custom gRPC port for the service.\nDefault values are:\n7233 for Frontend service\n7234 for History service\n7235 for Matching service\n7239 for Worker service", + "format": "int32", + "type": "integer" + }, + "replicas": { + "description": "Number of desired replicas for the service. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by this service.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "internalFrontend": { + "description": "Internal Frontend service custom specifications.\nOnly compatible with temporal >= 1.20.0", + "properties": { + "enabled": { + "default": false, + "description": "Enabled defines if we want to spawn the internal frontend service.", + "type": "boolean" + }, + "httpPort": { + "description": "HTTPPort defines a custom http port for the service.\nDefault values are:\n7243 for Frontend service", + "format": "int32", + "type": "integer" + }, + "initContainers": { + "description": "InitContainers adds a list of init containers to the service's deployment.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "membershipPort": { + "description": "MembershipPort defines a custom membership port for the service.\nDefault values are:\n6933 for Frontend service\n6934 for History service\n6935 for Matching service\n6939 for Worker service", + "format": "int32", + "type": "integer" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the service.\nThose overrides takes precedence over spec.services.overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "port": { + "description": "Port defines a custom gRPC port for the service.\nDefault values are:\n7233 for Frontend service\n7234 for History service\n7235 for Matching service\n7239 for Worker service", + "format": "int32", + "type": "integer" + }, + "replicas": { + "description": "Number of desired replicas for the service. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by this service.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "matching": { + "description": "Matching service custom specifications.", + "properties": { + "httpPort": { + "description": "HTTPPort defines a custom http port for the service.\nDefault values are:\n7243 for Frontend service", + "format": "int32", + "type": "integer" + }, + "initContainers": { + "description": "InitContainers adds a list of init containers to the service's deployment.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "membershipPort": { + "description": "MembershipPort defines a custom membership port for the service.\nDefault values are:\n6933 for Frontend service\n6934 for History service\n6935 for Matching service\n6939 for Worker service", + "format": "int32", + "type": "integer" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the service.\nThose overrides takes precedence over spec.services.overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "port": { + "description": "Port defines a custom gRPC port for the service.\nDefault values are:\n7233 for Frontend service\n7234 for History service\n7235 for Matching service\n7239 for Worker service", + "format": "int32", + "type": "integer" + }, + "replicas": { + "description": "Number of desired replicas for the service. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by this service.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for all temporal services services.\nThose overrides can be customized per service using spec.services..overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "worker": { + "description": "Worker service custom specifications.", + "properties": { + "httpPort": { + "description": "HTTPPort defines a custom http port for the service.\nDefault values are:\n7243 for Frontend service", + "format": "int32", + "type": "integer" + }, + "initContainers": { + "description": "InitContainers adds a list of init containers to the service's deployment.", + "items": { + "description": "A single application container that you want to run within a pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "membershipPort": { + "description": "MembershipPort defines a custom membership port for the service.\nDefault values are:\n6933 for Frontend service\n6934 for History service\n6935 for Matching service\n6939 for Worker service", + "format": "int32", + "type": "integer" + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the service.\nThose overrides takes precedence over spec.services.overrides.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "port": { + "description": "Port defines a custom gRPC port for the service.\nDefault values are:\n7233 for Frontend service\n7234 for History service\n7235 for Matching service\n7239 for Worker service", + "format": "int32", + "type": "integer" + }, + "replicas": { + "description": "Number of desired replicas for the service. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by this service.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "ui": { + "description": "UI allows configuration of the optional temporal web ui deployed alongside the cluster.", + "properties": { + "enabled": { + "description": "Enabled defines if the operator should deploy the web ui alongside the cluster.", + "type": "boolean" + }, + "image": { + "description": "Image defines the temporal ui docker image the instance should run.", + "type": "string" + }, + "ingress": { + "description": "Ingress is an optional ingress configuration for the UI.\nIf lived empty, no ingress configuration will be created and the UI will only by available trough ClusterIP service.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations allows custom annotations on the ingress resource.", + "type": "object" + }, + "hosts": { + "description": "Host is the list of host the ingress should use.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ingressClassName": { + "description": "IngressClassName is the name of the IngressClass the deployed ingress resource should use.", + "type": "string" + }, + "tls": { + "description": "TLS configuration.", + "items": { + "description": "IngressTLS describes the transport layer security associated with an ingress.", + "properties": { + "hosts": { + "description": "hosts is a list of hosts included in the TLS certificate. The values in\nthis list must match the name/s used in the tlsSecret. Defaults to the\nwildcard host setting for the loadbalancer controller fulfilling this\nIngress, if left unspecified.", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "secretName": { + "description": "secretName is the name of the secret used to terminate TLS traffic on\nport 443. Field is left optional to allow TLS routing based on SNI\nhostname alone. If the SNI host in a listener conflicts with the \"Host\"\nheader field used by an IngressRule, the SNI host is used for termination\nand value of the \"Host\" header is used for routing.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "required": [ + "hosts" + ], + "type": "object", + "additionalProperties": false + }, + "overrides": { + "description": "Overrides adds some overrides to the resources deployed for the ui.", + "properties": { + "deployment": { + "description": "Override configuration for the temporal service Deployment.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "properties": { + "template": { + "description": "Template describes the pods that will be created.", + "properties": { + "metadata": { + "description": "ObjectMetaOverride provides the ability to override an object metadata.\nIt's a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "Specification of the desired behavior of the pod.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "replicas": { + "description": "Number of desired replicas for the ui. Default to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "resources": { + "description": "Compute Resources required by the ui.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string" + }, + "request": { + "description": "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "service": { + "description": "Service is an optional service resource configuration for the UI.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.", + "type": "object" + } + }, + "type": "object", + "additionalProperties": false + }, + "version": { + "description": "Version defines the temporal ui version the instance should run.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "version": { + "description": "Version defines the temporal version the cluster to be deployed.\nThis version impacts the underlying persistence schemas versions.", + "type": "string" + } + }, + "required": [ + "numHistoryShards", + "persistence" + ], + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "Most recent observed status of the Temporal cluster.", + "properties": { + "conditions": { + "description": "Conditions represent the latest available observations of the Cluster state.", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource.", + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", + "maxLength": 32768, + "type": "string" + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], + "type": "string" + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase.", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" + } + }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "persistence": { + "description": "Persistence holds all datastores statuses.", + "properties": { + "advancedVisibilityStore": { + "description": "AdvancedVisibilityStore holds the advanced visibility datastore status.", + "properties": { + "created": { + "description": "Created indicates if the database or keyspace has been created.", + "type": "boolean" + }, + "schemaVersion": { + "description": "SchemaVersion report the current schema version.", + "type": "string" + }, + "setup": { + "description": "Setup indicates if tables have been set up.", + "type": "boolean" + }, + "type": { + "description": "Type indicates the datastore type.", + "type": "string" + } + }, + "required": [ + "created", + "setup" + ], + "type": "object", + "additionalProperties": false + }, + "defaultStore": { + "description": "DefaultStore holds the default datastore status.", + "properties": { + "created": { + "description": "Created indicates if the database or keyspace has been created.", + "type": "boolean" + }, + "schemaVersion": { + "description": "SchemaVersion report the current schema version.", + "type": "string" + }, + "setup": { + "description": "Setup indicates if tables have been set up.", + "type": "boolean" + }, + "type": { + "description": "Type indicates the datastore type.", + "type": "string" + } + }, + "required": [ + "created", + "setup" + ], + "type": "object", + "additionalProperties": false + }, + "secondaryVisibilityStore": { + "description": "SecondaryVisibilityStore holds the secondary visibility datastore status.", + "properties": { + "created": { + "description": "Created indicates if the database or keyspace has been created.", + "type": "boolean" + }, + "schemaVersion": { + "description": "SchemaVersion report the current schema version.", + "type": "string" + }, + "setup": { + "description": "Setup indicates if tables have been set up.", + "type": "boolean" + }, + "type": { + "description": "Type indicates the datastore type.", + "type": "string" + } + }, + "required": [ + "created", + "setup" + ], + "type": "object", + "additionalProperties": false + }, + "visibilityStore": { + "description": "VisibilityStore holds the visibility datastore status.", + "properties": { + "created": { + "description": "Created indicates if the database or keyspace has been created.", + "type": "boolean" + }, + "schemaVersion": { + "description": "SchemaVersion report the current schema version.", + "type": "string" + }, + "setup": { + "description": "Setup indicates if tables have been set up.", + "type": "boolean" + }, + "type": { + "description": "Type indicates the datastore type.", + "type": "string" + } + }, + "required": [ + "created", + "setup" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "defaultStore", + "visibilityStore" + ], + "type": "object", + "additionalProperties": false + }, + "services": { + "description": "Services holds all services statuses.", + "items": { + "description": "ServiceStatus reports a service status.", + "properties": { + "name": { + "description": "Name of the temporal service.", + "type": "string" + }, + "ready": { + "description": "Ready defines if the service is ready.", + "type": "boolean" + }, + "version": { + "description": "Current observed version of the service.", + "type": "string" + } + }, + "required": [ + "name", + "ready", + "version" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "version": { + "description": "Version holds the current temporal version.", + "type": "string" + } + }, + "required": [ + "conditions" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/temporal.io/temporalclusterclient_v1beta1.json b/temporal.io/temporalclusterclient_v1beta1.json new file mode 100644 index 00000000..0b97bfa0 --- /dev/null +++ b/temporal.io/temporalclusterclient_v1beta1.json @@ -0,0 +1,69 @@ +{ + "description": "A TemporalClusterClient creates a new mTLS client in the targeted temporal cluster.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "TemporalClusterClientSpec defines the desired state of ClusterClient.", + "properties": { + "clusterRef": { + "description": "Reference to the temporal cluster the client will get access to.", + "properties": { + "name": { + "description": "The name of the temporal object to reference.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the temporal object to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "clusterRef" + ], + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "TemporalClusterClientStatus defines the observed state of ClusterClient.", + "properties": { + "secretRef": { + "description": "Reference to the Kubernetes Secret containing the certificate for the client.", + "properties": { + "name": { + "default": "", + "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + } + }, + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "serverName": { + "description": "ServerName is the hostname returned by the certificate.", + "type": "string" + } + }, + "required": [ + "serverName" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/temporal.io/temporalnamespace_v1beta1.json b/temporal.io/temporalnamespace_v1beta1.json new file mode 100644 index 00000000..a1660b81 --- /dev/null +++ b/temporal.io/temporalnamespace_v1beta1.json @@ -0,0 +1,219 @@ +{ + "description": "A TemporalNamespace creates a namespace in the targeted temporal cluster.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "TemporalNamespaceSpec defines the desired state of Namespace.", + "properties": { + "activeClusterName": { + "description": "The name of active Temporal Cluster.\nOnly applicable if the namespace is a global namespace.", + "type": "string" + }, + "allowDeletion": { + "description": "AllowDeletion makes the controller delete the Temporal namespace if the\nCRD is deleted.", + "type": "boolean" + }, + "archival": { + "description": "Archival is a per-namespace archival configuration.\nIf not set, the default cluster configuration is used.", + "properties": { + "history": { + "description": "History is the config for this namespace history archival.", + "properties": { + "enableRead": { + "default": false, + "description": "EnableRead allows temporal to read from the archived Event History.", + "type": "boolean" + }, + "enabled": { + "default": false, + "description": "Enabled defines if the archival is enabled by default for all namespaces\nor for a particular namespace (depends if it's for a TemporalCluster or a TemporalNamespace).", + "type": "boolean" + }, + "path": { + "description": "Path is ...", + "type": "string" + }, + "paused": { + "default": false, + "description": "Paused defines if the archival is paused.", + "type": "boolean" + } + }, + "required": [ + "enableRead", + "path", + "paused" + ], + "type": "object", + "additionalProperties": false + }, + "visibility": { + "description": "Visibility is the config for this namespace visibility archival.", + "properties": { + "enableRead": { + "default": false, + "description": "EnableRead allows temporal to read from the archived Event History.", + "type": "boolean" + }, + "enabled": { + "default": false, + "description": "Enabled defines if the archival is enabled by default for all namespaces\nor for a particular namespace (depends if it's for a TemporalCluster or a TemporalNamespace).", + "type": "boolean" + }, + "path": { + "description": "Path is ...", + "type": "string" + }, + "paused": { + "default": false, + "description": "Paused defines if the archival is paused.", + "type": "boolean" + } + }, + "required": [ + "enableRead", + "path", + "paused" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "clusterRef": { + "description": "Reference to the temporal cluster the namespace will be created.", + "properties": { + "name": { + "description": "The name of the temporal object to reference.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the temporal object to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "clusters": { + "description": "List of clusters names to which the namespace can fail over.\nOnly applicable if the namespace is a global namespace.", + "items": { + "type": "string" + }, + "type": "array" + }, + "data": { + "additionalProperties": { + "type": "string" + }, + "description": "Data is a key-value map for any customized purpose.", + "type": "object" + }, + "description": { + "description": "Namespace description.", + "type": "string" + }, + "isGlobalNamespace": { + "description": "IsGlobalNamespace defines whether the namespace is a global namespace.", + "type": "boolean" + }, + "ownerEmail": { + "description": "Namespace owner email.", + "type": "string" + }, + "retentionPeriod": { + "description": "RetentionPeriod to apply on closed workflow executions.", + "type": "string" + }, + "securityToken": { + "type": "string" + } + }, + "required": [ + "clusterRef", + "retentionPeriod" + ], + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "TemporalNamespaceStatus defines the observed state of Namespace.", + "properties": { + "conditions": { + "description": "Conditions represent the latest available observations of the Namespace state.", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource.", + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.", + "maxLength": 32768, + "type": "string" + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.", + "format": "int64", + "minimum": 0, + "type": "integer" + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", + "type": "string" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "enum": [ + "True", + "False", + "Unknown" + ], + "type": "string" + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase.", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", + "type": "string" + } + }, + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "required": [ + "conditions" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/temporal.io/temporalschedule_v1beta1.json b/temporal.io/temporalschedule_v1beta1.json new file mode 100644 index 00000000..5fb89afc --- /dev/null +++ b/temporal.io/temporalschedule_v1beta1.json @@ -0,0 +1,884 @@ +{ + "description": "A TemporalSchedule creates a schedule in the targeted temporal cluster.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "TemporalScheduleSpec defines the desired state of Schedule.", + "properties": { + "allowDeletion": { + "description": "AllowDeletion makes the controller delete the Temporal schedule if the\nCRD is deleted.", + "type": "boolean" + }, + "memo": { + "description": "Memo is optional non-indexed info that will be shown in list workflow.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "namespaceRef": { + "description": "Reference to the temporal namespace the schedule will be created in.", + "properties": { + "name": { + "description": "The name of the temporal object to reference.", + "type": "string" + }, + "namespace": { + "description": "The namespace of the temporal object to reference.\nDefaults to the namespace of the requested resource if omitted.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "schedule": { + "description": "Schedule contains all fields related to a schedule.", + "properties": { + "action": { + "description": "ScheduleAction contains the actions that the schedule should perform.", + "properties": { + "workflow": { + "description": "ScheduleWorkflowAction describes a workflow to launch.", + "properties": { + "executionTimeout": { + "description": "WorkflowExecutionTimeout is the timeout for duration of workflow execution.", + "type": "string" + }, + "id": { + "description": "WorkflowID represents the business identifier of the workflow execution.\nThe WorkflowID of the started workflow may not match this exactly,\nit may have a timestamp appended for uniqueness.\nDefaults to a uuid.", + "type": "string" + }, + "inputs": { + "description": "Inputs contains arguments to pass to the workflow.", + "x-kubernetes-preserve-unknown-fields": true + }, + "memo": { + "description": "Memo is optional non-indexed info that will be shown in list workflow.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "retryPolicy": { + "description": "RetryPolicy is the retry policy for the workflow. If a retry policy is specified,\nin case of workflow failure server will start new workflow execution if\nneeded based on the retry policy.", + "properties": { + "backoffCoefficient": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Coefficient used to calculate the next retry interval.\nThe next retry interval is previous interval multiplied by the coefficient.\nMust be 1 or larger.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "initialInterval": { + "description": "Interval of the first retry. If retryBackoffCoefficient is 1.0 then it is used for all retries.", + "type": "string" + }, + "maximumAttempts": { + "description": "Maximum number of attempts. When exceeded the retries stop even if not expired yet.\n1 disables retries. 0 means unlimited (up to the timeouts).", + "format": "int32", + "type": "integer" + }, + "maximumInterval": { + "description": "Maximum interval between retries. Exponential backoff leads to interval increase.\nThis value is the cap of the increase. Default is 100x of the initial interval.", + "type": "string" + }, + "nonRetryableErrorTypes": { + "description": "Non-Retryable errors types. Will stop retrying if the error type matches this list. Note that\nthis is not a substring match, the error *type* (not message) must match exactly.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "runTimeout": { + "description": "WorkflowRunTimeout is the timeout for duration of a single workflow run.", + "type": "string" + }, + "searchAttributes": { + "description": "SearchAttributes is optional indexed info that can be used in query of List/Scan/Count workflow APIs. The key\nand value type must be registered on Temporal server side. For supported operations on different server versions\nsee [Visibility].\n\n[Visibility]: https://docs.temporal.io/visibility", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "taskQueue": { + "description": "TaskQueue represents a workflow task queue.\nThis is also the name of the activity task queue on which activities are scheduled.", + "type": "string" + }, + "taskTimeout": { + "description": "WorkflowTaskTimeout is The timeout for processing workflow task from the time the worker\npulled this task.", + "type": "string" + }, + "type": { + "description": "WorkflowType represents the identifier used by a workflow author to define the workflow\nWorkflow type name.", + "type": "string" + } + }, + "required": [ + "taskQueue", + "type" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "workflow" + ], + "type": "object", + "additionalProperties": false + }, + "policy": { + "description": "SchedulePolicies represent policies for overlaps, catchups, pause on failure, and workflow ID.", + "properties": { + "catchupWindow": { + "description": "CatchupWindow The Temporal Server might be down or unavailable at the time\nwhen a Schedule should take an Action. When the Server comes back up,\nCatchupWindow controls which missed Actions should be taken at that point.", + "type": "string" + }, + "overlap": { + "description": "Overlap controls what happens when an Action would be started by a\nSchedule at the same time that an older Action is still running.\n\nSupported values:\n\n\"skip\" - Default. Nothing happens; the Workflow Execution is not started.\n\n\"bufferOne\" - Starts the Workflow Execution as soon as the current one completes.\nThe buffer is limited to one. If another Workflow Execution is supposed to start,\nbut one is already in the buffer, only the one in the buffer eventually starts.\n\n\"bufferAll\" - Allows an unlimited number of Workflows to buffer. They are started sequentially.\n\n\"cancelOther\" - Cancels the running Workflow Execution, and then starts the new one\nafter the old one completes cancellation.\n\n\"terminateOther\" - Terminates the running Workflow Execution and starts the new one immediately.\n\n\"allowAll\" - Starts any number of concurrent Workflow Executions.\nWith this policy (and only this policy), more than one Workflow Execution,\nstarted by the Schedule, can run simultaneously.", + "enum": [ + "skip", + "bufferOne", + "bufferAll", + "cancelOther", + "terminateOther", + "allowAll" + ], + "type": "string" + }, + "pauseOnFailure": { + "description": "PauseOnFailure if true, and a workflow run fails or times out, turn on \"paused\".\nThis applies after retry policies: the full chain of retries must fail to trigger a pause here.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "spec": { + "description": "ScheduleSpec is a complete description of a set of absolute timestamps.", + "properties": { + "calendars": { + "description": "Calendars represents calendar-based specifications of times.", + "items": { + "description": "ScheduleCalendarSpec is an event specification relative to the calendar, similar to a traditional cron specification.\nA timestamp matches if at least one range of each field matches the\ncorresponding fields of the timestamp, except for year: if year is missing,\nthat means all years match. For all fields besides year, at least one Range must be present to match anything.", + "properties": { + "comment": { + "description": "Comment describes the intention of this schedule.", + "type": "string" + }, + "dayOfMonth": { + "default": [ + { + "end": 31 + } + ], + "description": "DayOfMonth range to match (1-31)\nDefaults to match all days.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "start": { + "default": 1, + "description": "Start of the range (inclusive).\nDefaults to 1.", + "format": "int32", + "maximum": 31, + "minimum": 1, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 31, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "dayOfWeek": { + "default": [ + { + "end": 6 + } + ], + "description": "DayOfWeek range to match (0-6; 0 is Sunday)\nDefaults to match all days of the week.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 6, + "minimum": 0, + "type": "integer" + }, + "start": { + "description": "Start of the range (inclusive).\nDefaults to 0.", + "format": "int32", + "maximum": 6, + "minimum": 0, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 6, + "minimum": 0, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "hour": { + "default": [ + { + "start": 0 + } + ], + "description": "Hour range to match (0-23).\nDefaults to 0.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "start": { + "description": "Start of the range (inclusive).\nDefaults to 0.", + "format": "int32", + "maximum": 23, + "minimum": 0, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 23, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "minute": { + "default": [ + { + "start": 0 + } + ], + "description": "Minute range to match (0-59).\nDefaults to 0.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 59, + "minimum": 0, + "type": "integer" + }, + "start": { + "description": "Start of the range (inclusive).\nDefaults to 0.", + "format": "int32", + "maximum": 59, + "minimum": 0, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 59, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "month": { + "default": [ + { + "end": 12 + } + ], + "description": "Month range to match (1-12).\nDefaults to match all months.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "start": { + "default": 1, + "description": "Start of the range (inclusive).\nDefaults to 1.", + "format": "int32", + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 12, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "second": { + "default": [ + { + "start": 0 + } + ], + "description": "Second range to match (0-59).\nDefaults to 0.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "maximum": 59, + "minimum": 0, + "type": "integer" + }, + "start": { + "description": "Start of the range (inclusive).\nDefaults to 0.", + "format": "int32", + "maximum": 59, + "minimum": 0, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "maximum": 59, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "year": { + "description": "Year range to match.\nDefaults to match all years.", + "items": { + "description": "If end < start, then end is interpreted as\nequal to start. This means you can use a Range with start set to a value, and\nend and step unset to represent a single value.", + "properties": { + "end": { + "description": "End of the range (inclusive).\nDefaults to start.", + "format": "int32", + "minimum": 1970, + "type": "integer" + }, + "start": { + "description": "Start of the range (inclusive).", + "format": "int32", + "minimum": 1970, + "type": "integer" + }, + "step": { + "default": 1, + "description": "Step to be take between each value.\nDefaults to 1.", + "format": "int32", + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "crons": { + "description": "Crons are cron based specifications of times.\nCrons is provided for easy migration from legacy Cron Workflows. For new\nuse cases, we recommend using ScheduleSpec.Calendars or ScheduleSpec.\nIntervals for readability and maintainability. Once a schedule is created all\nexpressions in Crons will be translated to ScheduleSpec.Calendars on the server.\n\nFor example, `0 12 * * MON-WED,FRI` is every M/Tu/W/F at noon\n\nThe string can have 5, 6, or 7 fields, separated by spaces, and they are interpreted in the\nsame way as a ScheduleCalendarSpec:\n\n\t- 5 fields: Minute, Hour, DayOfMonth, Month, DayOfWeek\n\n\t- 6 fields: Minute, Hour, DayOfMonth, Month, DayOfWeek, Year\n\n\t- 7 fields: Second, Minute, Hour, DayOfMonth, Month, DayOfWeek, Year\n\nNotes:\n\t- If Year is not given, it defaults to *.\n\t- If Second is not given, it defaults to 0.\n\t- Shorthands @yearly, @monthly, @weekly, @daily, and @hourly are also\n\t\taccepted instead of the 5-7 time fields.\n\t- @every [/] is accepted and gets compiled into an\n\t\tIntervalSpec instead. and should be a decimal integer\n\t\twith a unit suffix s, m, h, or d.\n\t- Optionally, the string can be preceded by CRON_TZ=