diff --git a/operators/temporal-operator/0.13.1/manifests/temporal-operator-webhook-service_v1_service.yaml b/operators/temporal-operator/0.13.1/manifests/temporal-operator-webhook-service_v1_service.yaml new file mode 100644 index 00000000000..f08f3b74954 --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal-operator-webhook-service_v1_service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: webhook + app.kubernetes.io/created-by: temporal-operator + app.kubernetes.io/instance: webhook-service + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: service + app.kubernetes.io/part-of: temporal-operator + name: temporal-operator-webhook-service +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 9443 + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/temporal-operator/0.13.1/manifests/temporal-operator.clusterserviceversion.yaml b/operators/temporal-operator/0.13.1/manifests/temporal-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..a4fd627797d --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal-operator.clusterserviceversion.yaml @@ -0,0 +1,660 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "temporal.io/v1beta1", + "kind": "TemporalCluster", + "metadata": { + "name": "prod", + "namespace": "demo" + }, + "spec": { + "jobTtlSecondsAfterFinished": 300, + "numHistoryShards": 1, + "persistence": { + "defaultStore": { + "passwordSecretRef": { + "key": "PASSWORD", + "name": "postgres-password" + }, + "sql": { + "connectAddr": "postgres.demo.svc.cluster.local:5432", + "connectProtocol": "tcp", + "databaseName": "temporal", + "pluginName": "postgres", + "user": "temporal" + } + }, + "visibilityStore": { + "passwordSecretRef": { + "key": "PASSWORD", + "name": "postgres-password" + }, + "sql": { + "connectAddr": "postgres.demo.svc.cluster.local:5432", + "connectProtocol": "tcp", + "databaseName": "temporal_visibility", + "pluginName": "postgres", + "user": "temporal" + } + } + }, + "ui": { + "enabled": true + }, + "version": "1.20.0" + } + }, + { + "apiVersion": "temporal.io/v1beta1", + "kind": "TemporalClusterClient", + "metadata": { + "name": "my-worker", + "namespace": "demo" + }, + "spec": { + "clusterRef": { + "name": "prod" + } + } + }, + { + "apiVersion": "temporal.io/v1beta1", + "kind": "TemporalNamespace", + "metadata": { + "name": "accounting" + }, + "spec": { + "clusterRef": { + "name": "prod" + }, + "description": "Accounting team namespace", + "retentionPeriod": "168h" + } + }, + { + "apiVersion": "temporal.io/v1beta1", + "kind": "TemporalWorkerProcess", + "metadata": { + "name": "temporalworkerprocess-sample" + }, + "spec": { + "builder": { + "attempt": 3, + "buildDir": "samples-go/helloworld", + "buildRegistry": { + "passwordSecretRef": { + "key": "PASSWORD", + "name": "docker-password" + }, + "repository": "docker.io", + "username": "ktenzer" + }, + "enabled": false, + "gitRepository": { + "reference": { + "branch": "main" + }, + "url": "https://github.com/ktenzer/samples-go.git" + }, + "image": "quay.io/podman/stable", + "version": "latest" + }, + "clusterRef": { + "name": "prod", + "namespace": "temporal" + }, + "image": "ghcr.io/alexandrevilain/example-worker-process:latest", + "jobTtlSecondsAfterFinished": 300, + "pullPolicy": "Always", + "replicas": 3, + "temporalNamespace": "default", + "version": "latest" + } + } + ] + capabilities: Seamless Upgrades + categories: Application Runtime, Developer Tools, AI/Machine Learning + containerImage: ghcr.io/alexandrevilain/temporal-operator + createdAt: "2023-06-08T08:17:32Z" + operators.operatorframework.io/builder: operator-sdk-v1.26.1 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + name: temporal-operator.v0.13.1 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: A TemporalClusterClient creates a new mTLS client in the targeted + temporal cluster. + displayName: Temporal Cluster Client + kind: TemporalClusterClient + name: temporalclusterclients.temporal.io + version: v1beta1 + - description: TemporalCluster defines a temporal cluster deployment. + displayName: Temporal Cluster + kind: TemporalCluster + name: temporalclusters.temporal.io + version: v1beta1 + - description: A TemporalNamespace creates a namespace in the targeted temporal + cluster. + displayName: Temporal Namespace + kind: TemporalNamespace + name: temporalnamespaces.temporal.io + version: v1beta1 + - description: TemporalWorkerProcess is the Schema for the temporalworkerprocesses + API. + displayName: Temporal Worker Process + kind: TemporalWorkerProcess + name: temporalworkerprocesses.temporal.io + version: v1beta1 + description: | + ## Temporal + Temporal is a durable workflow execution environment for applications. The Temporal operator will deploy all required Temporal server services and dependencies. You will need to deploy database, elasticsearch (optional) and prometheus/grafana (optional) separately. Temporal supports native MySQL, PostgreSQL or Cassandra databases. + + ## Quick Setup + Follow these steps to deploy a Temporal cluster instance with a test PostgreSQL database. + + ### Create Demo Namespace +
+    $ kubectl apply -f https://raw.githubusercontent.com/alexandrevilain/temporal-operator/main/examples/cluster-postgres/00-namespace.yaml
+    
+ + ### Deploy PostgreSQL database +
+    $ kubectl apply -f https://raw.githubusercontent.com/alexandrevilain/temporal-operator/main/examples/cluster-postgres/01-postgresql.yaml
+    
+ + ### Create TemporalCluster CustomResource +
+    $ vi temporalcluster.yaml
+    apiVersion: temporal.io/v1beta1
+    kind: TemporalCluster
+    metadata:
+      name: prod
+    spec:
+      jobTtlSecondsAfterFinished: 300
+      numHistoryShards: 512
+      persistence:
+        defaultStore:
+          passwordSecretRef:
+            key: PASSWORD
+            name: postgres-password
+          sql:
+            connectAddr: 'postgres.demo.svc.cluster.local:5432'
+            connectProtocol: tcp
+            databaseName: temporal
+            pluginName: postgres
+            user: temporal
+        visibilityStore:
+          passwordSecretRef:
+            key: PASSWORD
+            name: postgres-password
+          sql:
+            connectAddr: 'postgres.demo.svc.cluster.local:5432'
+            connectProtocol: tcp
+            databaseName: temporal_visibility
+            pluginName: postgres
+            user: temporal
+      ui:
+        enabled: true
+      version: 1.20.0
+    
+ + ### Apply TemporalCluster CustomResource +
+    $ kubectl apply -f temporal.yaml -n demo
+    
+ displayName: Temporal Operator + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - get + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - services + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - batch + resources: + - jobs + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - cert-manager.io + resources: + - certificates + - issuers + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - networking.istio.io + resources: + - destinationrules + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - security.istio.io + resources: + - peerauthentications + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - temporal.io + resources: + - temporalclusterclients + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - temporal.io + resources: + - temporalclusterclients/finalizers + verbs: + - update + - apiGroups: + - temporal.io + resources: + - temporalclusterclients/status + verbs: + - get + - patch + - update + - apiGroups: + - temporal.io + resources: + - temporalclusters + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - temporal.io + resources: + - temporalclusters/finalizers + verbs: + - update + - apiGroups: + - temporal.io + resources: + - temporalclusters/status + verbs: + - get + - patch + - update + - apiGroups: + - temporal.io + resources: + - temporalnamespaces + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - temporal.io + resources: + - temporalnamespaces/finalizers + verbs: + - update + - apiGroups: + - temporal.io + resources: + - temporalnamespaces/status + verbs: + - get + - patch + - update + - apiGroups: + - temporal.io + resources: + - temporalworkerprocesses + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - temporal.io + resources: + - temporalworkerprocesses/finalizers + verbs: + - update + - apiGroups: + - temporal.io + resources: + - temporalworkerprocesses/status + verbs: + - get + - patch + - update + serviceAccountName: temporal-operator-controller-manager + deployments: + - label: + control-plane: controller-manager + name: temporal-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --leader-elect + command: + - /manager + image: ghcr.io/alexandrevilain/temporal-operator:v0.13.1 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 9443 + name: webhook-server + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + volumeMounts: + - mountPath: /tmp/k8s-webhook-server/serving-certs + name: cert + readOnly: true + securityContext: + runAsNonRoot: true + serviceAccountName: temporal-operator-controller-manager + terminationGracePeriodSeconds: 10 + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: webhook-server-cert + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: temporal-operator-controller-manager + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: true + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - durable + - execution + - workflow + - sdk + - application + - distributed + links: + - name: Temporal Operator + url: https://github.com/alexandrevilain/temporal-operator + maintainers: + - email: alexandre.vilain@me.com + name: alexandrevilain + - email: keith.tenzer@temporal.io + name: ktenzer + maturity: alpha + minKubeVersion: 1.22.0 + provider: + name: Temporal Community + url: https://temporal.io/ + replaces: temporal-operator.v0.13.0 + version: 0.13.1 + webhookdefinitions: + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: temporal-operator-controller-manager + failurePolicy: Fail + generateName: mtemporalc.kb.io + rules: + - apiGroups: + - temporal.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - temporalclusters + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-temporal-io-v1beta1-temporalcluster + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: temporal-operator-controller-manager + failurePolicy: Fail + generateName: mtemporalworkerprocess.kb.io + rules: + - apiGroups: + - temporal.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - temporalworkerprocesses + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-temporal-io-v1beta1-temporalworkerprocess + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: temporal-operator-controller-manager + failurePolicy: Fail + generateName: vtemporalc.kb.io + rules: + - apiGroups: + - temporal.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - temporalclusters + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-temporal-io-v1beta1-temporalcluster + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: temporal-operator-controller-manager + failurePolicy: Fail + generateName: vtemporalworkerprocess.kb.io + rules: + - apiGroups: + - temporal.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - temporalworkerprocesses + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-temporal-io-v1beta1-temporalworkerprocess diff --git a/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusterclients.yaml b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusterclients.yaml new file mode 100644 index 00000000000..739296bab04 --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusterclients.yaml @@ -0,0 +1,83 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.3 + creationTimestamp: null + name: temporalclusterclients.temporal.io +spec: + group: temporal.io + names: + kind: TemporalClusterClient + listKind: TemporalClusterClientList + plural: temporalclusterclients + singular: temporalclusterclient + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + 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. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More 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 TemporalCluster to reference. + type: string + namespace: + description: The namespace of the TemporalCluster to reference. + Defaults to the namespace of the requested resource if omitted. + type: string + type: object + required: + - clusterRef + type: object + 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: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + serverName: + description: ServerName is the hostname returned by the certificate. + type: string + required: + - serverName + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusters.yaml b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusters.yaml new file mode 100644 index 00000000000..273f9b42dbc --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalclusters.yaml @@ -0,0 +1,2662 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.3 + creationTimestamp: null + name: temporalclusters.temporal.io +spec: + group: temporal.io + names: + kind: TemporalCluster + listKind: TemporalClusterList + plural: temporalclusters + singular: temporalcluster + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type == 'Ready')].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type == 'ReconcileSuccess')].status + name: ReconcileSuccess + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: TemporalCluster defines a temporal cluster deployment. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More 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 + type: object + 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. Defaults 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 + value: + description: 'Value is the value for the configuration + key. The type of the Value field depends on the key. + Acceptable types will be one of: int, float64, bool, + string, map[string]any, time.Duration' + x-kubernetes-preserve-unknown-fields: true + required: + - value + type: object + type: array + description: Values contains all dynamic config keys and their + constained values. + type: object + required: + - values + type: object + 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 to use for pulling temporal images from registries. + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + jobTtlSecondsAfterFinished: + default: 300 + description: JobTTLSecondsAfterFinished is amount of time to keep + job pods after jobs are completed. Defaults to 300 seconds. + format: int32 + minimum: 1 + type: integer + mTLS: + description: MTLS allows configuration of the network traffic encryption + for the cluster. + properties: + certificatesDuration: + description: CertificatesDuration allows configuration of maximum + certificates lifetime. Useless if mTLS provider is not cert-manager. + properties: + clientCertificates: + description: ClientCertificates is the 'duration' (i.e. lifetime) + of the client certificates. It defaults to 1 year. + type: string + frontendCertificate: + description: FrontendCertificate is the 'duration' (i.e. lifetime) + of the frontend certificate. It defaults to 1 year. + type: string + intermediateCAsCertificates: + description: IntermediateCACertificates is the 'duration' + (i.e. lifetime) of the intermediate CAs Certificates. It + defaults to 5 years. + type: string + internodeCertificate: + description: InternodeCertificate is the 'duration' (i.e. + lifetime) of the internode certificate. It defaults to 1 + year. + type: string + rootCACertificate: + description: RootCACertificate is the 'duration' (i.e. lifetime) + of the Root CA Certificate. It defaults to 10 years. + type: string + type: object + frontend: + description: Frontend allows configuration of the frontend's public + endpoint traffic encryption. Useless 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 + type: object + internode: + description: Internode allows configuration of the internode traffic + encryption. Useless 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 + 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. Defaults to 1 hour. + Useless if mTLS provider is not cert-manager. + type: string + type: object + 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 + 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 + metricRelabelings: + description: MetricRelabelConfigs to apply to samples + before ingestion. + items: + description: 'RelabelConfig allows dynamic rewriting + of the label set, being applied to samples before + ingestion. It defines ``-section + of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex + matching. Default is 'replace'. uppercase + and lowercase actions require Prometheus >= + 2.36. + 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. + format: int64 + type: integer + regex: + description: Regular expression against which + the extracted value is matched. Default is + '(.*)' + type: string + replacement: + description: Replacement value against which + a regex replace is performed if the regular + expression matches. Regex capture groups are + available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated + source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values + from existing labels. Their content is concatenated + using the configured separator and matched + against the configured regular expression + for the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus + label name which may only contain ASCII + letters, numbers, as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value + is written in a replace action. It is mandatory + for replace actions. Regex capture groups + are available. + type: string + type: object + type: array + override: + description: Override allows customization of the + created ServiceMonitor. All fields can be overritten + except "endpoints", "selector" and "namespaceSelector". + properties: + attachMetadata: + description: Attaches node metadata to discovered + targets. Requires Prometheus v2.37.0 and above. + properties: + node: + description: When set to true, Prometheus + must have permissions to get Nodes. + type: boolean + type: object + endpoints: + description: A list of endpoints allowed as part + of this ServiceMonitor. + items: + description: Endpoint defines a scrapeable endpoint + serving Prometheus metrics. + properties: + authorization: + description: Authorization section for this + endpoint + properties: + credentials: + description: The secret's key that contains + the credentials of the request + properties: + key: + description: The key of the secret + to select from. Must be a valid + secret key. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + type: + description: Set the authentication + type. Defaults to Bearer, Basic will + cause an error + type: string + type: object + basicAuth: + description: 'BasicAuth allow an endpoint + to authenticate over basic authentication + More info: https://prometheus.io/docs/operating/configuration/#endpoints' + properties: + password: + description: The secret in the service + monitor namespace that contains the + password for authentication. + properties: + key: + description: The key of the secret + to select from. Must be a valid + secret key. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + username: + description: The secret in the service + monitor namespace that contains the + username for authentication. + properties: + key: + description: The key of the secret + to select from. Must be a valid + secret key. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + type: object + bearerTokenFile: + description: File to read bearer token for + scraping targets. + type: string + bearerTokenSecret: + description: Secret to mount to read bearer + token for scraping targets. The secret + needs to be in the same namespace as the + service monitor and accessible by the + Prometheus Operator. + properties: + key: + description: The key of the secret to + select from. Must be a valid secret + key. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + 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 + enableHttp2: + description: Whether to enable HTTP2. + type: boolean + filterRunning: + description: 'Drop pods that are not running. + (Failed, Succeeded). Enabled by default. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase' + type: boolean + followRedirects: + description: FollowRedirects configures + whether scrape requests follow HTTP 3xx + redirects. + type: boolean + honorLabels: + description: HonorLabels chooses the metric's + labels on collisions with target labels. + type: boolean + honorTimestamps: + description: HonorTimestamps controls whether + Prometheus respects the timestamps present + in scraped data. + type: boolean + interval: + description: Interval at which metrics should + be scraped If not specified Prometheus' + global scrape interval 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 + metricRelabelings: + description: MetricRelabelConfigs to apply + to samples before ingestion. + items: + description: 'RelabelConfig allows dynamic + rewriting of the label set, being applied + to samples before ingestion. It defines + ``-section of + Prometheus configuration. More info: + https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based + on regex matching. Default is 'replace'. + uppercase and lowercase actions + require Prometheus >= 2.36. + 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. + format: int64 + type: integer + regex: + description: Regular expression against + which the extracted value is matched. + Default is '(.*)' + type: string + replacement: + description: Replacement value against + which a regex replace is performed + if the regular expression matches. + Regex capture groups are available. + Default is '$1' + type: string + separator: + description: Separator placed between + concatenated source label values. + default is ';'. + type: string + sourceLabels: + description: The source labels select + values from existing labels. Their + content is concatenated using the + configured separator and matched + against the configured regular expression + for the replace, keep, and drop + actions. + items: + description: LabelName is a valid + Prometheus label name which may + only contain ASCII letters, numbers, + as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting + value is written in a replace action. + It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + oauth2: + description: OAuth2 for the URL. Only valid + in Prometheus versions 2.27.0 and newer. + properties: + clientId: + description: The secret or configmap + containing the OAuth2 client id + properties: + configMap: + description: ConfigMap containing + data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + type: object + clientSecret: + description: The secret containing the + OAuth2 client secret + properties: + key: + description: The key of the secret + to select from. Must be a valid + secret key. + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + endpointParams: + additionalProperties: + type: string + description: Parameters to append to + the token URL + type: object + scopes: + description: OAuth2 scopes used for + the token request + items: + type: string + type: array + tokenUrl: + description: The URL to fetch the token + from + minLength: 1 + type: string + required: + - clientId + - clientSecret + - tokenUrl + type: object + params: + additionalProperties: + items: + type: string + type: array + description: Optional HTTP URL parameters + type: object + path: + description: HTTP path to scrape for metrics. + If empty, Prometheus uses the default + value (e.g. `/metrics`). + type: string + port: + description: Name of the service port this + endpoint refers to. Mutually exclusive + with targetPort. + type: string + proxyUrl: + description: ProxyURL eg http://proxyserver:2195 + Directs scrapes to proxy through this + endpoint. + type: string + relabelings: + description: 'RelabelConfigs to apply to + samples before scraping. Prometheus Operator + automatically adds relabelings for a few + standard Kubernetes fields. The original + scrape job''s name is available via the + `__tmp_prometheus_job_name` label. More + info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic + rewriting of the label set, being applied + to samples before ingestion. It defines + ``-section of + Prometheus configuration. More info: + https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based + on regex matching. Default is 'replace'. + uppercase and lowercase actions + require Prometheus >= 2.36. + 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. + format: int64 + type: integer + regex: + description: Regular expression against + which the extracted value is matched. + Default is '(.*)' + type: string + replacement: + description: Replacement value against + which a regex replace is performed + if the regular expression matches. + Regex capture groups are available. + Default is '$1' + type: string + separator: + description: Separator placed between + concatenated source label values. + default is ';'. + type: string + sourceLabels: + description: The source labels select + values from existing labels. Their + content is concatenated using the + configured separator and matched + against the configured regular expression + for the replace, keep, and drop + actions. + items: + description: LabelName is a valid + Prometheus label name which may + only contain ASCII letters, numbers, + as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting + value is written in a replace action. + It is mandatory for replace actions. + Regex capture groups are available. + type: string + type: object + type: array + scheme: + description: HTTP scheme to use for scraping. + `http` and `https` are the expected values + unless you rewrite the `__scheme__` label + via relabeling. If empty, Prometheus uses + the default value `http`. + enum: + - http + - https + type: string + scrapeTimeout: + description: Timeout after which the scrape + is ended If not specified, the Prometheus + global scrape timeout is used unless it + is less than `Interval` 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 behind the Service, the + port must be specified with container + port property. Mutually exclusive with + port. + x-kubernetes-int-or-string: true + tlsConfig: + description: TLS configuration to use when + scraping the endpoint + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + type: object + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + type: object + 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: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' + 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 + serverName: + description: Used to verify the hostname + for the targets. + type: string + type: object + type: object + type: array + jobLabel: + description: "JobLabel selects the label from + the associated Kubernetes service which will + be used as the `job` label for all metrics. + \n For example: If in `ServiceMonitor.spec.jobLabel: + foo` and in `Service.metadata.labels.foo: bar`, + then the `job=\"bar\"` label is added to all + metrics. \n If the value of this field is empty + or if the label doesn't exist for the given + Service, the `job` label of the metrics defaults + to the name of the Kubernetes Service." + type: string + labelLimit: + description: Per-scrape limit on number of labels + that will be accepted for a sample. Only valid + in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + labelNameLengthLimit: + description: Per-scrape limit on length of labels + name that will be accepted for a sample. Only + valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + labelValueLengthLimit: + description: Per-scrape limit on length of labels + value that will be accepted for a sample. Only + valid in Prometheus versions 2.27.0 and newer. + format: int64 + type: integer + namespaceSelector: + description: Selector to select which namespaces + the Kubernetes Endpoints objects are discovered + from. + properties: + any: + description: Boolean describing whether all + namespaces are selected in contrast to a + list restricting them. + type: boolean + matchNames: + description: List of namespace names to select + from. + items: + type: string + type: array + type: object + podTargetLabels: + description: PodTargetLabels transfers labels + on the Kubernetes `Pod` onto the created metrics. + items: + type: string + type: array + sampleLimit: + description: SampleLimit defines per-scrape limit + on number of scraped samples that will be accepted. + format: int64 + type: integer + selector: + description: Selector to select Endpoints objects. + 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 relates 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. Valid + 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, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + targetLabels: + description: TargetLabels transfers labels from + the Kubernetes `Service` onto the created metrics. + items: + type: string + type: array + targetLimit: + description: TargetLimit defines a limit on the + number of scraped targets that will be accepted. + format: int64 + type: integer + required: + - endpoints + - selector + type: object + type: object + type: object + type: object + required: + - enabled + type: object + numHistoryShards: + description: NumHistoryShards is the desired number of history shards. + This field is immutable. + format: int32 + minimum: 1 + type: integer + persistence: + description: Persistence defines temporal persistence configuration. + properties: + advancedVisibilityStore: + description: AdvancedVisibilityStore holds the avanced visibility + datastore specs. + properties: + cassandra: + description: Cassandra holds all connection parameters for + Cassandra datastore. + 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. Values 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. (defaults to + LOCAL_SERIAL if not set) + enum: + - SERIAL + - LOCAL_SERIAL + type: integer + type: object + 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: + - datacenter + - hosts + - keyspace + - port + - user + type: object + 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: + description: Visibility defines visibility's index + name. + type: string + required: + - visibility + type: object + 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)$ + type: string + required: + - indices + - url + - username + - version + type: object + name: + description: Name is the name of the datatstore. It should + be unique and will be referenced within the persitence spec. + Defaults to "default" for default sore, "visibility" for + visibility store and "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 + 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 + 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 + 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 + 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 + 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 + serverName: + description: ServerName the datastore should present. + type: string + required: + - enableHostVerification + - enabled + type: object + required: + - passwordSecretRef + type: object + defaultStore: + description: DefaultStore holds the default datastore specs. + properties: + cassandra: + description: Cassandra holds all connection parameters for + Cassandra datastore. + 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. Values 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. (defaults to + LOCAL_SERIAL if not set) + enum: + - SERIAL + - LOCAL_SERIAL + type: integer + type: object + 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: + - datacenter + - hosts + - keyspace + - port + - user + type: object + 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: + description: Visibility defines visibility's index + name. + type: string + required: + - visibility + type: object + 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)$ + type: string + required: + - indices + - url + - username + - version + type: object + name: + description: Name is the name of the datatstore. It should + be unique and will be referenced within the persitence spec. + Defaults to "default" for default sore, "visibility" for + visibility store and "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 + 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 + 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 + 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 + 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 + 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 + serverName: + description: ServerName the datastore should present. + type: string + required: + - enableHostVerification + - enabled + type: object + required: + - passwordSecretRef + type: object + visibilityStore: + description: VisibilityStore holds the visibility datastore specs. + properties: + cassandra: + description: Cassandra holds all connection parameters for + Cassandra datastore. + 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. Values 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. (defaults to + LOCAL_SERIAL if not set) + enum: + - SERIAL + - LOCAL_SERIAL + type: integer + type: object + 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: + - datacenter + - hosts + - keyspace + - port + - user + type: object + 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: + description: Visibility defines visibility's index + name. + type: string + required: + - visibility + type: object + 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)$ + type: string + required: + - indices + - url + - username + - version + type: object + name: + description: Name is the name of the datatstore. It should + be unique and will be referenced within the persitence spec. + Defaults to "default" for default sore, "visibility" for + visibility store and "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 + 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 + 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 + 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 + 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 + 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 + serverName: + description: ServerName the datastore should present. + type: string + required: + - enableHostVerification + - enabled + type: object + required: + - passwordSecretRef + type: object + required: + - defaultStore + - visibilityStore + type: object + services: + description: Services allows customizations for each temporal services + deployment. + properties: + frontend: + description: Frontend service custom specifications. + properties: + membershipPort: + description: 'Port defines a custom membership port for the + service. Default values are: 6933 for Frontend service 6934 + for History service 6935 for Matching service 6939 for Worker + service' + type: integer + overrides: + description: Overrides adds some overrides to the resources + deployed for the service. Those 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. It'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 + set 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 (scope + and select) objects. + type: object + type: object + 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. + It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired + behavior of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + port: + description: 'Port defines a custom gRPC port for the service. + Default values are: 7233 for Frontend service 7234 for History + service 7235 for Matching service 7239 for Worker service' + type: integer + replicas: + description: Number of desired replicas for the service. Default + to 1. + format: int32 + minimum: 1 + type: integer + type: object + history: + description: History service custom specifications. + properties: + membershipPort: + description: 'Port defines a custom membership port for the + service. Default values are: 6933 for Frontend service 6934 + for History service 6935 for Matching service 6939 for Worker + service' + type: integer + overrides: + description: Overrides adds some overrides to the resources + deployed for the service. Those 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. It'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 + set 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 (scope + and select) objects. + type: object + type: object + 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. + It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired + behavior of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + port: + description: 'Port defines a custom gRPC port for the service. + Default values are: 7233 for Frontend service 7234 for History + service 7235 for Matching service 7239 for Worker service' + type: integer + replicas: + description: Number of desired replicas for the service. Default + to 1. + format: int32 + minimum: 1 + type: integer + type: object + internalFrontend: + description: Internal Frontend service custom specifications. + Only compatible with temporal >= 1.20.0 + properties: + enabled: + default: false + description: Enabled defines if we want to spawn the internal + frontend service. + type: boolean + membershipPort: + description: 'Port defines a custom membership port for the + service. Default values are: 6933 for Frontend service 6934 + for History service 6935 for Matching service 6939 for Worker + service' + type: integer + overrides: + description: Overrides adds some overrides to the resources + deployed for the service. Those 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. It'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 + set 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 (scope + and select) objects. + type: object + type: object + 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. + It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired + behavior of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + port: + description: 'Port defines a custom gRPC port for the service. + Default values are: 7233 for Frontend service 7234 for History + service 7235 for Matching service 7239 for Worker service' + type: integer + replicas: + description: Number of desired replicas for the service. Default + to 1. + format: int32 + minimum: 1 + type: integer + type: object + matching: + description: Matching service custom specifications. + properties: + membershipPort: + description: 'Port defines a custom membership port for the + service. Default values are: 6933 for Frontend service 6934 + for History service 6935 for Matching service 6939 for Worker + service' + type: integer + overrides: + description: Overrides adds some overrides to the resources + deployed for the service. Those 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. It'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 + set 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 (scope + and select) objects. + type: object + type: object + 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. + It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired + behavior of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + port: + description: 'Port defines a custom gRPC port for the service. + Default values are: 7233 for Frontend service 7234 for History + service 7235 for Matching service 7239 for Worker service' + type: integer + replicas: + description: Number of desired replicas for the service. Default + to 1. + format: int32 + minimum: 1 + type: integer + type: object + overrides: + description: Overrides adds some overrides to the resources deployed + for all temporal services services. Those 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. It'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 set 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 (scope and select) + objects. + type: object + type: object + 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. It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired behavior + of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + worker: + description: Worker service custom specifications. + properties: + membershipPort: + description: 'Port defines a custom membership port for the + service. Default values are: 6933 for Frontend service 6934 + for History service 6935 for Matching service 6939 for Worker + service' + type: integer + overrides: + description: Overrides adds some overrides to the resources + deployed for the service. Those 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. It'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 + set 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 (scope + and select) objects. + type: object + type: object + 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. + It'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 set 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 + (scope and select) objects. + type: object + type: object + spec: + description: Specification of the desired + behavior of the pod. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + type: object + port: + description: 'Port defines a custom gRPC port for the service. + Default values are: 7233 for Frontend service 7234 for History + service 7235 for Matching service 7239 for Worker service' + type: integer + replicas: + description: Number of desired replicas for the service. Default + to 1. + format: int32 + minimum: 1 + type: integer + type: object + type: object + 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. If 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 ressource. + 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 this list must match + the name/s used in the tlsSecret. Defaults to the + wildcard host setting for the loadbalancer controller + fulfilling this Ingress, 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 port 443. Field is left + optional to allow TLS routing based on SNI hostname + alone. If the SNI host in a listener conflicts with + the "Host" header field used by an IngressRule, the + SNI host is used for termination and value of the + "Host" header is used for routing. + type: string + type: object + type: array + required: + - hosts + type: object + version: + description: Version defines the temporal ui version the instance + should run. + type: string + type: object + version: + description: Version defines the temporal version the cluster to be + deployed. This version impacts the underlying persistence schemas + versions. + type: string + required: + - numHistoryShards + - persistence + type: object + 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. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + \n type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This 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. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with 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. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This 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. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + 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 + type: array + persistence: + description: Persistence holds all datastores statuses. + properties: + advancedVisibilityStore: + description: AdvancedVisibilityStore holds the avanced 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 + required: + - created + - setup + type: object + 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 + required: + - created + - setup + type: object + 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 + required: + - created + - setup + type: object + required: + - defaultStore + - visibilityStore + type: object + 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 + type: array + version: + description: Version holds the current temporal version. + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalnamespaces.yaml b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalnamespaces.yaml new file mode 100644 index 00000000000..f0da6ec9698 --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalnamespaces.yaml @@ -0,0 +1,172 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.3 + creationTimestamp: null + name: temporalnamespaces.temporal.io +spec: + group: temporal.io + names: + kind: TemporalNamespace + listKind: TemporalNamespaceList + plural: temporalnamespaces + singular: temporalnamespace + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + 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. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More 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. Only applicable + if the namespace is a global namespace. + type: string + allowDeletion: + description: AllowDeletion makes the controller delete the Temporal + namespace if the CRD is deleted. + type: boolean + clusterRef: + description: Reference to the temporal cluster the namespace will + be created. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + clusters: + description: List of clusters names to which the namespace can fail + over. Only 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 + 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. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + \n type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This 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. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with 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. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This 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. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + 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 + type: array + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalworkerprocesses.yaml b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalworkerprocesses.yaml new file mode 100644 index 00000000000..0a45c3ebbcf --- /dev/null +++ b/operators/temporal-operator/0.13.1/manifests/temporal.io_temporalworkerprocesses.yaml @@ -0,0 +1,283 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.3 + creationTimestamp: null + name: temporalworkerprocesses.temporal.io +spec: + group: temporal.io + names: + kind: TemporalWorkerProcess + listKind: TemporalWorkerProcessList + plural: temporalworkerprocesses + singular: temporalworkerprocess + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type == 'Ready')].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type == 'ReconcileSuccess')].status + name: ReconcileSuccess + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: TemporalWorkerProcess is the Schema for the temporalworkerprocesses + API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: TemporalWorkerProcessSpec defines the desired state of TemporalWorkerProcess. + properties: + builder: + description: Builder is the configuration for building a TemporalWorkerProcess. + THIS FEATURE IS HIGHLY EXPERIMENTAL. + properties: + attempt: + description: BuildAttempt is the build attempt number of a given + version + format: int32 + type: integer + buildDir: + description: BuildDir is the location of where the sources will + be built. + type: string + buildRegistry: + description: BuildRegistry specifies how to connect to container + registry. + properties: + passwordSecretRef: + description: PasswordSecret is the reference to the secret + holding the docker repo password. + properties: + key: + description: Key in the Secret. + type: string + name: + description: Name of the Secret. + type: string + required: + - name + type: object + repository: + description: Repository is the fqdn to the image repo. + type: string + username: + description: Username is the username for the container repo. + type: string + required: + - passwordSecretRef + - repository + - username + type: object + enabled: + description: Enabled defines if the operator should build the + temporal worker process. + type: boolean + gitRepository: + description: GitRepository specifies how to connect to Git source + control. + properties: + reference: + description: Reference specifies the Git reference to resolve + and monitor for changes, defaults to the 'master' branch. + properties: + branch: + description: Branch to check out, defaults to 'main' if + no other field is defined. + type: string + type: object + url: + description: URL specifies the Git repository URL, it can + be an HTTP/S or SSH address. + pattern: ^(http|https|ssh)://.*$ + type: string + required: + - url + type: object + image: + description: Image is the image that will be used to build worker + image. + type: string + version: + description: Version is the version of the image that will be + used to build worker image. + type: string + required: + - enabled + type: object + clusterRef: + description: Reference to the temporal cluster the worker will connect + to. + properties: + name: + description: The name of the TemporalCluster to reference. + type: string + namespace: + description: The namespace of the TemporalCluster to reference. + Defaults to the namespace of the requested resource if omitted. + type: string + type: object + image: + description: Image defines the temporal worker docker image the instance + should run. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same + namespace to use for pulling temporal images from registries. + items: + description: LocalObjectReference contains enough information to + let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + jobTtlSecondsAfterFinished: + default: 300 + description: JobTTLSecondsAfterFinished is amount of time to keep + job pods after jobs are completed. Defaults to 300 seconds. + format: int32 + minimum: 1 + type: integer + pullPolicy: + description: Image pull policy for determining how to pull worker + process images. + type: string + replicas: + description: Number of desired replicas. Default to 1. + format: int32 + minimum: 1 + type: integer + temporalNamespace: + description: TemporalNamespace that worker will poll. + type: string + version: + description: Version defines the worker process version. + type: string + required: + - clusterRef + - image + - temporalNamespace + type: object + status: + description: TemporalWorkerProcessStatus defines the observed state of + TemporalWorkerProcess. + properties: + attempt: + description: BuildAttempt is the build attempt number of a given version + format: int32 + type: integer + conditions: + description: Conditions represent the latest available observations + of the worker process state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + \n type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This 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. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with 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. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This 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. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + 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 + type: array + created: + description: Created indicates if the worker process image was created. + type: boolean + ready: + description: Ready defines if the worker process is ready. + type: boolean + version: + description: Version is the version of the image that will be used + to build worker image. + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/temporal-operator/0.13.1/metadata/annotations.yaml b/operators/temporal-operator/0.13.1/metadata/annotations.yaml new file mode 100644 index 00000000000..e57b8c775d7 --- /dev/null +++ b/operators/temporal-operator/0.13.1/metadata/annotations.yaml @@ -0,0 +1,10 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: temporal-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.23.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3