# DO NOT EDIT - Generated by Cue OpenAPI generator based on Istio APIs.
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: clusters.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    shortNames:
      - tcs
    singular: cluster
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.state.xcpVersion
          name: XcpVersion
          type: string
        - jsonPath: .spec.state.tsbCpVersion
          name: TsbCpVersion
          type: string
        - jsonPath: .spec.state.provider
          name: Provider
          type: string
        - jsonPath: .spec.tier1Cluster
          name: Tier1
          type: string
        - jsonPath: .spec.locality.region
          name: Region
          type: string
        - jsonPath: .spec.network
          name: Network
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: A Kubernetes cluster managing both pods and VMs.
              properties:
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                installTemplate:
                  properties:
                    helm:
                      description: valid values.yaml to be used with controlplane helm chart.
                      properties:
                        image:
                          description: Values for the TSB operator image.
                          properties:
                            registry:
                              description: Registry used to download the operator image.
                              type: string
                            tag:
                              description: The tag of the operator image.
                              type: string
                          type: object
                        operator:
                          description: Values for the TSB operator application.
                          properties:
                            deployment:
                              description: Values for the TSB operator deployment.
                              properties:
                                affinity:
                                  description: Affinity configuration for the pod.
                                  properties:
                                    nodeAffinity:
                                      description: Group of node affinity scheduling rules.
                                      properties:
                                        preferredDuringSchedulingIgnoredDuringExecution:
                                          items:
                                            properties:
                                              preference:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                  matchFields:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                type: object
                                              weight:
                                                format: int32
                                                type: integer
                                            type: object
                                          type: array
                                        requiredDuringSchedulingIgnoredDuringExecution:
                                          properties:
                                            nodeSelectorTerms:
                                              items:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                  matchFields:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    podAffinity:
                                      description: Group of inter-pod affinity scheduling rules.
                                      properties:
                                        preferredDuringSchedulingIgnoredDuringExecution:
                                          items:
                                            properties:
                                              podAffinityTerm:
                                                properties:
                                                  labelSelector:
                                                    properties:
                                                      matchExpressions:
                                                        description: matchExpressions is a list of label selector requirements.
                                                        items:
                                                          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.
                                                              type: string
                                                            values:
                                                              description: values is an array of string values.
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        type: array
                                                      matchLabels:
                                                        additionalProperties:
                                                          type: string
                                                        description: matchLabels is a map of {key,value} pairs.
                                                        type: object
                                                    type: object
                                                  namespaces:
                                                    items:
                                                      type: string
                                                    type: array
                                                  topologyKey:
                                                    type: string
                                                type: object
                                              weight:
                                                format: int32
                                                type: integer
                                            type: object
                                          type: array
                                        requiredDuringSchedulingIgnoredDuringExecution:
                                          items:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    description: matchExpressions is a list of label selector requirements.
                                                    items:
                                                      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.
                                                          type: string
                                                        values:
                                                          description: values is an array of string values.
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: matchLabels is a map of {key,value} pairs.
                                                    type: object
                                                type: object
                                              namespaces:
                                                items:
                                                  type: string
                                                type: array
                                              topologyKey:
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                    podAntiAffinity:
                                      description: Group of inter-pod anti-affinity scheduling rules.
                                      properties:
                                        preferredDuringSchedulingIgnoredDuringExecution:
                                          items:
                                            properties:
                                              podAffinityTerm:
                                                properties:
                                                  labelSelector:
                                                    properties:
                                                      matchExpressions:
                                                        description: matchExpressions is a list of label selector requirements.
                                                        items:
                                                          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.
                                                              type: string
                                                            values:
                                                              description: values is an array of string values.
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        type: array
                                                      matchLabels:
                                                        additionalProperties:
                                                          type: string
                                                        description: matchLabels is a map of {key,value} pairs.
                                                        type: object
                                                    type: object
                                                  namespaces:
                                                    items:
                                                      type: string
                                                    type: array
                                                  topologyKey:
                                                    type: string
                                                type: object
                                              weight:
                                                format: int32
                                                type: integer
                                            type: object
                                          type: array
                                        requiredDuringSchedulingIgnoredDuringExecution:
                                          items:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    description: matchExpressions is a list of label selector requirements.
                                                    items:
                                                      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.
                                                          type: string
                                                        values:
                                                          description: values is an array of string values.
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    type: array
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: matchLabels is a map of {key,value} pairs.
                                                    type: object
                                                type: object
                                              namespaces:
                                                items:
                                                  type: string
                                                type: array
                                              topologyKey:
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                  type: object
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: Custom collection of annotations to add to the deployment.
                                  type: object
                                env:
                                  description: Custom collection of environment vars to add to the container.
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                      valueFrom:
                                        properties:
                                          configMapKeyRef:
                                            properties:
                                              key:
                                                type: string
                                              localObjectReference:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              optional:
                                                type: boolean
                                            type: object
                                          fieldRef:
                                            properties:
                                              apiVersion:
                                                type: string
                                              fieldPath:
                                                type: string
                                            type: object
                                          resourceFieldRef:
                                            properties:
                                              containerName:
                                                type: string
                                              divisor:
                                                properties:
                                                  intVal:
                                                    maximum: 2147483647
                                                    minimum: -2147483648
                                                    nullable: true
                                                    type: integer
                                                  strVal:
                                                    nullable: true
                                                    type: string
                                                  type:
                                                    format: int64
                                                    type: integer
                                                type: object
                                              resource:
                                                type: string
                                            type: object
                                          secretKeyRef:
                                            properties:
                                              key:
                                                type: string
                                              localObjectReference:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              optional:
                                                type: boolean
                                            type: object
                                        type: object
                                    type: object
                                  type: array
                                podAnnotations:
                                  additionalProperties:
                                    type: string
                                  description: Custom collection of annotations to add to the pod.
                                  type: object
                                replicaCount:
                                  description: Number of replicas managed by the deployment.
                                  format: int32
                                  type: integer
                                strategy:
                                  description: Deployment strategy to use.
                                  properties:
                                    rollingUpdate:
                                      properties:
                                        maxSurge:
                                          properties:
                                            intVal:
                                              maximum: 2147483647
                                              minimum: -2147483648
                                              nullable: true
                                              type: integer
                                            strVal:
                                              nullable: true
                                              type: string
                                            type:
                                              format: int64
                                              type: integer
                                          type: object
                                        maxUnavailable:
                                          properties:
                                            intVal:
                                              maximum: 2147483647
                                              minimum: -2147483648
                                              nullable: true
                                              type: integer
                                            strVal:
                                              nullable: true
                                              type: string
                                            type:
                                              format: int64
                                              type: integer
                                          type: object
                                      type: object
                                    type:
                                      type: string
                                  type: object
                                tolerations:
                                  description: Toleration collection applying to the pod scheduling.
                                  items:
                                    properties:
                                      effect:
                                        description: Effect indicates the taint effect to match.
                                        type: string
                                      key:
                                        description: Key is the taint key that the toleration applies to.
                                        type: string
                                      operator:
                                        description: Operator represents a key's relationship to the value.
                                        type: string
                                      tolerationSeconds:
                                        format: int64
                                        type: integer
                                      value:
                                        description: Value is the taint value the toleration matches to.
                                        type: string
                                    type: object
                                  type: array
                              type: object
                            service:
                              description: Values for the TSB operator service.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: Custom collection of annotations to add to the service.
                                  type: object
                              type: object
                            serviceAccount:
                              description: Values for the TSB operator service account.
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  description: Custom collection of annotations to add to the service account.
                                  type: object
                                imagePullSecrets:
                                  description: Collection of secrets names required to be able to pull images from the registry.
                                  items:
                                    type: string
                                  type: array
                                pullPassword:
                                  type: string
                                pullSecret:
                                  description: A Docker config JSON to be stored in a secret to be used as an image pull secret.
                                  type: string
                                pullUsername:
                                  type: string
                              type: object
                          type: object
                        secrets:
                          description: Values for the Control Plane secrets.
                          properties:
                            clusterServiceAccount:
                              description: Cluster service account used to authenticate to the Management Plane.
                              properties:
                                JWK:
                                  description: Literal JWK used to generate and sign the tokens for all the Control Plane agents.
                                  type: string
                                clusterFQN:
                                  description: TSB FQN of the onboarded cluster resource.
                                  type: string
                                encodedJWK:
                                  description: Base64-encoded JWK used to generate and sign the tokens for all the Control Plane agents.
                                  type: string
                              type: object
                            elasticsearch:
                              description: Secrets to reach the Elasticsearch.
                              properties:
                                cacert:
                                  description: Elasticsearch CA cert TLS used by control plane to verify TLS connection.
                                  type: string
                                password:
                                  description: The password to access Elasticsearch.
                                  type: string
                                username:
                                  description: The username to access Elasticsearch.
                                  type: string
                              type: object
                            tsb:
                              description: Secrets to reach the TSB Management Plane.
                              properties:
                                cacert:
                                  description: CA certificate used to verify TLS certs exposed the Management Plane (front envoy).
                                  type: string
                              type: object
                            xcp:
                              description: Secrets to reach the XCP Central in the Management Plane.
                              properties:
                                autoGenerateCerts:
                                  description: Enabling this will auto generate XCP Edge certificate if mTLS is enabled to authenticate to XCP Central.
                                  type: boolean
                                edge:
                                  description: Secrets for the XCP Edge component.
                                  properties:
                                    cert:
                                      description: Edge certificate used for mTLS with XCP Central.
                                      type: string
                                    key:
                                      description: Key of the Edge certificate used for mTLS with XCP Central.
                                      type: string
                                    token:
                                      description: JWT token used to authenticate XCP Edge against the XCP Central.
                                      type: string
                                  type: object
                                rootca:
                                  description: CA certificate of XCP components.
                                  type: string
                                rootcakey:
                                  description: Key of the CA certificate of XCP components.
                                  type: string
                              type: object
                          type: object
                        spec:
                          description: Values for the Control Plane CR spec.
                          properties:
                            components:
                              description: The set of components that make up the control plane.
                              properties:
                                awsController:
                                  description: Configuration for AWS Controller components.
                                  properties:
                                    kubeSpec:
                                      description: Configure Kubernetes specific settings.
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                                collector:
                                  properties:
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevel:
                                      description: Specifies the log level for OTEL collector component.
                                      type: string
                                  type: object
                                defaultKubeSpec:
                                  description: Configure Kubernetes default settings for all components.
                                  properties:
                                    account:
                                      properties:
                                        imagePullSecrets:
                                          items:
                                            properties:
                                              name:
                                                description: Name of the referent.
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                    deployment:
                                      properties:
                                        affinity:
                                          description: The scheduling constraints for the pod.
                                          properties:
                                            nodeAffinity:
                                              description: Group of node affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      preference:
                                                        properties:
                                                          matchExpressions:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchFields:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  properties:
                                                    nodeSelectorTerms:
                                                      items:
                                                        properties:
                                                          matchExpressions:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchFields:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            podAffinity:
                                              description: Group of inter-pod affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      podAffinityTerm:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      labelSelector:
                                                        properties:
                                                          matchExpressions:
                                                            description: matchExpressions is a list of label selector requirements.
                                                            items:
                                                              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.
                                                                  type: string
                                                                values:
                                                                  description: values is an array of string values.
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchLabels:
                                                            additionalProperties:
                                                              type: string
                                                            description: matchLabels is a map of {key,value} pairs.
                                                            type: object
                                                        type: object
                                                      namespaces:
                                                        items:
                                                          type: string
                                                        type: array
                                                      topologyKey:
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                            podAntiAffinity:
                                              description: Group of inter-pod anti-affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      podAffinityTerm:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      labelSelector:
                                                        properties:
                                                          matchExpressions:
                                                            description: matchExpressions is a list of label selector requirements.
                                                            items:
                                                              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.
                                                                  type: string
                                                                values:
                                                                  description: values is an array of string values.
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchLabels:
                                                            additionalProperties:
                                                              type: string
                                                            description: matchLabels is a map of {key,value} pairs.
                                                            type: object
                                                        type: object
                                                      namespaces:
                                                        items:
                                                          type: string
                                                        type: array
                                                      topologyKey:
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                          type: object
                                        containerSecurityContext:
                                          properties:
                                            allowPrivilegeEscalation:
                                              type: boolean
                                            capabilities:
                                              properties:
                                                add:
                                                  items:
                                                    type: string
                                                  type: array
                                                drop:
                                                  items:
                                                    type: string
                                                  type: array
                                              type: object
                                            privileged:
                                              type: boolean
                                            procMount:
                                              type: string
                                            readOnlyRootFilesystem:
                                              type: boolean
                                            runAsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            runAsNonRoot:
                                              type: boolean
                                            runAsUser:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            seLinuxOptions:
                                              properties:
                                                level:
                                                  type: string
                                                role:
                                                  type: string
                                                type:
                                                  type: string
                                                user:
                                                  type: string
                                              type: object
                                            seccompProfile:
                                              properties:
                                                localhostProfile:
                                                  type: string
                                                type:
                                                  type: string
                                              type: object
                                            windowsOptions:
                                              properties:
                                                gmsaCredentialSpec:
                                                  type: string
                                                gmsaCredentialSpecName:
                                                  type: string
                                                runAsUserName:
                                                  type: string
                                              type: object
                                          type: object
                                        env:
                                          description: Environment variables for all containers in the deployment.
                                          items:
                                            properties:
                                              name:
                                                type: string
                                              value:
                                                type: string
                                              valueFrom:
                                                properties:
                                                  configMapKeyRef:
                                                    properties:
                                                      key:
                                                        type: string
                                                      localObjectReference:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      optional:
                                                        type: boolean
                                                    type: object
                                                  fieldRef:
                                                    properties:
                                                      apiVersion:
                                                        type: string
                                                      fieldPath:
                                                        type: string
                                                    type: object
                                                  resourceFieldRef:
                                                    properties:
                                                      containerName:
                                                        type: string
                                                      divisor:
                                                        properties:
                                                          intVal:
                                                            maximum: 2147483647
                                                            minimum: -2147483648
                                                            nullable: true
                                                            type: integer
                                                          strVal:
                                                            nullable: true
                                                            type: string
                                                          type:
                                                            format: int64
                                                            type: integer
                                                        type: object
                                                      resource:
                                                        type: string
                                                    type: object
                                                  secretKeyRef:
                                                    properties:
                                                      key:
                                                        type: string
                                                      localObjectReference:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      optional:
                                                        type: boolean
                                                    type: object
                                                type: object
                                            type: object
                                          type: array
                                        podAnnotations:
                                          additionalProperties:
                                            type: string
                                          description: Pod annotations are an unstructured key value map stored with the pod.
                                          type: object
                                        podSecurityContext:
                                          properties:
                                            fsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            fsGroupChangePolicy:
                                              type: string
                                            runAsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            runAsNonRoot:
                                              type: boolean
                                            runAsUser:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            seLinuxOptions:
                                              properties:
                                                level:
                                                  type: string
                                                role:
                                                  type: string
                                                type:
                                                  type: string
                                                user:
                                                  type: string
                                              type: object
                                            seccompProfile:
                                              properties:
                                                localhostProfile:
                                                  type: string
                                                type:
                                                  type: string
                                              type: object
                                            supplementalGroups:
                                              items:
                                                maximum: 4294967295
                                                minimum: 0
                                                type: integer
                                              type: array
                                            sysctls:
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                type: object
                                              type: array
                                            windowsOptions:
                                              properties:
                                                gmsaCredentialSpec:
                                                  type: string
                                                gmsaCredentialSpecName:
                                                  type: string
                                                runAsUserName:
                                                  type: string
                                              type: object
                                          type: object
                                        strategy:
                                          description: The deployment strategy to use to replace existing pods with new ones.
                                          properties:
                                            rollingUpdate:
                                              properties:
                                                maxSurge:
                                                  properties:
                                                    intVal:
                                                      maximum: 2147483647
                                                      minimum: -2147483648
                                                      nullable: true
                                                      type: integer
                                                    strVal:
                                                      nullable: true
                                                      type: string
                                                    type:
                                                      format: int64
                                                      type: integer
                                                  type: object
                                                maxUnavailable:
                                                  properties:
                                                    intVal:
                                                      maximum: 2147483647
                                                      minimum: -2147483648
                                                      nullable: true
                                                      type: integer
                                                    strVal:
                                                      nullable: true
                                                      type: string
                                                    type:
                                                      format: int64
                                                      type: integer
                                                  type: object
                                              type: object
                                            type:
                                              type: string
                                          type: object
                                        tolerations:
                                          items:
                                            properties:
                                              effect:
                                                description: Effect indicates the taint effect to match.
                                                type: string
                                              key:
                                                description: Key is the taint key that the toleration applies to.
                                                type: string
                                              operator:
                                                description: Operator represents a key's relationship to the value.
                                                type: string
                                              tolerationSeconds:
                                                format: int64
                                                type: integer
                                              value:
                                                description: Value is the taint value the toleration matches to.
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                    job:
                                      properties:
                                        affinity:
                                          description: The scheduling constraints for the pod.
                                          properties:
                                            nodeAffinity:
                                              description: Group of node affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      preference:
                                                        properties:
                                                          matchExpressions:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchFields:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  properties:
                                                    nodeSelectorTerms:
                                                      items:
                                                        properties:
                                                          matchExpressions:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchFields:
                                                            items:
                                                              properties:
                                                                key:
                                                                  type: string
                                                                operator:
                                                                  type: string
                                                                values:
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            podAffinity:
                                              description: Group of inter-pod affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      podAffinityTerm:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      labelSelector:
                                                        properties:
                                                          matchExpressions:
                                                            description: matchExpressions is a list of label selector requirements.
                                                            items:
                                                              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.
                                                                  type: string
                                                                values:
                                                                  description: values is an array of string values.
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchLabels:
                                                            additionalProperties:
                                                              type: string
                                                            description: matchLabels is a map of {key,value} pairs.
                                                            type: object
                                                        type: object
                                                      namespaces:
                                                        items:
                                                          type: string
                                                        type: array
                                                      topologyKey:
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                            podAntiAffinity:
                                              description: Group of inter-pod anti-affinity scheduling rules.
                                              properties:
                                                preferredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      podAffinityTerm:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      weight:
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  type: array
                                                requiredDuringSchedulingIgnoredDuringExecution:
                                                  items:
                                                    properties:
                                                      labelSelector:
                                                        properties:
                                                          matchExpressions:
                                                            description: matchExpressions is a list of label selector requirements.
                                                            items:
                                                              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.
                                                                  type: string
                                                                values:
                                                                  description: values is an array of string values.
                                                                  items:
                                                                    type: string
                                                                  type: array
                                                              type: object
                                                            type: array
                                                          matchLabels:
                                                            additionalProperties:
                                                              type: string
                                                            description: matchLabels is a map of {key,value} pairs.
                                                            type: object
                                                        type: object
                                                      namespaces:
                                                        items:
                                                          type: string
                                                        type: array
                                                      topologyKey:
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                          type: object
                                        containerSecurityContext:
                                          properties:
                                            allowPrivilegeEscalation:
                                              type: boolean
                                            capabilities:
                                              properties:
                                                add:
                                                  items:
                                                    type: string
                                                  type: array
                                                drop:
                                                  items:
                                                    type: string
                                                  type: array
                                              type: object
                                            privileged:
                                              type: boolean
                                            procMount:
                                              type: string
                                            readOnlyRootFilesystem:
                                              type: boolean
                                            runAsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            runAsNonRoot:
                                              type: boolean
                                            runAsUser:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            seLinuxOptions:
                                              properties:
                                                level:
                                                  type: string
                                                role:
                                                  type: string
                                                type:
                                                  type: string
                                                user:
                                                  type: string
                                              type: object
                                            seccompProfile:
                                              properties:
                                                localhostProfile:
                                                  type: string
                                                type:
                                                  type: string
                                              type: object
                                            windowsOptions:
                                              properties:
                                                gmsaCredentialSpec:
                                                  type: string
                                                gmsaCredentialSpecName:
                                                  type: string
                                                runAsUserName:
                                                  type: string
                                              type: object
                                          type: object
                                        podAnnotations:
                                          additionalProperties:
                                            type: string
                                          description: Pod annotations are an unstructured key value map stored with the pod.
                                          type: object
                                        podSecurityContext:
                                          properties:
                                            fsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            fsGroupChangePolicy:
                                              type: string
                                            runAsGroup:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            runAsNonRoot:
                                              type: boolean
                                            runAsUser:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            seLinuxOptions:
                                              properties:
                                                level:
                                                  type: string
                                                role:
                                                  type: string
                                                type:
                                                  type: string
                                                user:
                                                  type: string
                                              type: object
                                            seccompProfile:
                                              properties:
                                                localhostProfile:
                                                  type: string
                                                type:
                                                  type: string
                                              type: object
                                            supplementalGroups:
                                              items:
                                                maximum: 4294967295
                                                minimum: 0
                                                type: integer
                                              type: array
                                            sysctls:
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                type: object
                                              type: array
                                            windowsOptions:
                                              properties:
                                                gmsaCredentialSpec:
                                                  type: string
                                                gmsaCredentialSpecName:
                                                  type: string
                                                runAsUserName:
                                                  type: string
                                              type: object
                                          type: object
                                        tolerations:
                                          items:
                                            properties:
                                              effect:
                                                description: Effect indicates the taint effect to match.
                                                type: string
                                              key:
                                                description: Key is the taint key that the toleration applies to.
                                                type: string
                                              operator:
                                                description: Operator represents a key's relationship to the value.
                                                type: string
                                              tolerationSeconds:
                                                format: int64
                                                type: integer
                                              value:
                                                description: Value is the taint value the toleration matches to.
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                    service:
                                      properties:
                                        annotations:
                                          additionalProperties:
                                            type: string
                                          description: Pod annotations are an unstructured key value map stored with the service.
                                          type: object
                                      type: object
                                  type: object
                                defaultLogLevel:
                                  description: The default log level for all components if the per component log level config is not specified.
                                  type: string
                                gitops:
                                  description: Configuration for the integration of the Control Plane with Continuous Deployment pipelines.
                                  properties:
                                    batchWindow:
                                      description: When configured, all admission requests will be paused for the configured duration.
                                      type: string
                                    enabled:
                                      description: The GitOps component is in beta and disabled by default.
                                      type: boolean
                                    managementplaneRequestTimeout:
                                      description: The GitOps component performs operations against the management plane through the k8s webhook.
                                      type: string
                                    reconcileInterval:
                                      description: Interval at which the reconcile process will run.
                                      type: string
                                    reconcileRequestTimeout:
                                      description: The GitOps component performs operations against the management plane internal reconcile loop.
                                      type: string
                                    webhookTimeout:
                                      description: Timeout that will be set in the k8s gitops webhook resource.
                                      type: string
                                  type: object
                                hpaAdapter:
                                  properties:
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                                internalCertProvider:
                                  description: Configure the Kubernetes CSR certificate provider for TSB internal purposes like Webhook TLS certificates.
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - certManager
                                          - required:
                                              - custom
                                    - required:
                                        - certManager
                                    - required:
                                        - custom
                                  properties:
                                    certManager:
                                      properties:
                                        certManagerCaInjector:
                                          description: Configure kubernetes specific settings for cert-manager-cainjector.
                                          properties:
                                            kubeSpec:
                                              description: Configure kubernetes specific settings for cert-manager-cainjector.
                                              properties:
                                                deployment:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the deployment.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    hpaSpec:
                                                      properties:
                                                        maxReplicas:
                                                          format: int32
                                                          type: integer
                                                        metrics:
                                                          items:
                                                            properties:
                                                              external:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  metricSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              object:
                                                                properties:
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  target:
                                                                    properties:
                                                                      apiVersion:
                                                                        type: string
                                                                      kind:
                                                                        type: string
                                                                      name:
                                                                        type: string
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              pods:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              resource:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  target:
                                                                    properties:
                                                                      averageUtilization:
                                                                        format: int32
                                                                        type: integer
                                                                      averageValue:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                      value:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                    type: object
                                                                  targetAverageUtilization:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              type:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        minReplicas:
                                                          format: int32
                                                          type: integer
                                                      type: object
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    replicaCount:
                                                      description: Number of desired pods.
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    resources:
                                                      properties:
                                                        limits:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                        requests:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                    strategy:
                                                      description: The deployment strategy to use to replace existing pods with new ones.
                                                      properties:
                                                        rollingUpdate:
                                                          properties:
                                                            maxSurge:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                            maxUnavailable:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                          type: object
                                                        type:
                                                          type: string
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                overlays:
                                                  items:
                                                    properties:
                                                      apiVersion:
                                                        description: Resource API version.
                                                        type: string
                                                      kind:
                                                        description: Resource kind.
                                                        type: string
                                                      name:
                                                        description: Name of resource.
                                                        type: string
                                                      patches:
                                                        description: List of patches to apply to resource.
                                                        items:
                                                          properties:
                                                            path:
                                                              type: string
                                                            value:
                                                              description: Value to add, delete or replace.
                                                              type: object
                                                              x-kubernetes-preserve-unknown-fields: true
                                                          type: object
                                                        type: array
                                                    type: object
                                                  type: array
                                                service:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the service.
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Labels are an unstructured key value map stored with the deployment.
                                                      type: object
                                                    ports:
                                                      description: The set of ports on which this service is exposed.
                                                      items:
                                                        properties:
                                                          kubernetesNodePort:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          name:
                                                            description: Name assigned to the port.
                                                            type: string
                                                          number:
                                                            description: A valid non-negative integer port number.
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    type:
                                                      description: Determines how the Service is exposed.
                                                      type: string
                                                  type: object
                                                serviceAccount:
                                                  properties:
                                                    imagePullSecrets:
                                                      items:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                          type: object
                                        certManagerSpec:
                                          description: Configure kubernetes specific settings for cert-manager.
                                          properties:
                                            kubeSpec:
                                              description: Configure kubernetes specific settings for cert-manager.
                                              properties:
                                                deployment:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the deployment.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    hpaSpec:
                                                      properties:
                                                        maxReplicas:
                                                          format: int32
                                                          type: integer
                                                        metrics:
                                                          items:
                                                            properties:
                                                              external:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  metricSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              object:
                                                                properties:
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  target:
                                                                    properties:
                                                                      apiVersion:
                                                                        type: string
                                                                      kind:
                                                                        type: string
                                                                      name:
                                                                        type: string
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              pods:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              resource:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  target:
                                                                    properties:
                                                                      averageUtilization:
                                                                        format: int32
                                                                        type: integer
                                                                      averageValue:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                      value:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                    type: object
                                                                  targetAverageUtilization:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              type:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        minReplicas:
                                                          format: int32
                                                          type: integer
                                                      type: object
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    replicaCount:
                                                      description: Number of desired pods.
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    resources:
                                                      properties:
                                                        limits:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                        requests:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                    strategy:
                                                      description: The deployment strategy to use to replace existing pods with new ones.
                                                      properties:
                                                        rollingUpdate:
                                                          properties:
                                                            maxSurge:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                            maxUnavailable:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                          type: object
                                                        type:
                                                          type: string
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                overlays:
                                                  items:
                                                    properties:
                                                      apiVersion:
                                                        description: Resource API version.
                                                        type: string
                                                      kind:
                                                        description: Resource kind.
                                                        type: string
                                                      name:
                                                        description: Name of resource.
                                                        type: string
                                                      patches:
                                                        description: List of patches to apply to resource.
                                                        items:
                                                          properties:
                                                            path:
                                                              type: string
                                                            value:
                                                              description: Value to add, delete or replace.
                                                              type: object
                                                              x-kubernetes-preserve-unknown-fields: true
                                                          type: object
                                                        type: array
                                                    type: object
                                                  type: array
                                                service:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the service.
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Labels are an unstructured key value map stored with the deployment.
                                                      type: object
                                                    ports:
                                                      description: The set of ports on which this service is exposed.
                                                      items:
                                                        properties:
                                                          kubernetesNodePort:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          name:
                                                            description: Name assigned to the port.
                                                            type: string
                                                          number:
                                                            description: A valid non-negative integer port number.
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    type:
                                                      description: Determines how the Service is exposed.
                                                      type: string
                                                  type: object
                                                serviceAccount:
                                                  properties:
                                                    imagePullSecrets:
                                                      items:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                          type: object
                                        certManagerStartupapicheck:
                                          description: Configure kubernetes specific settings for cert-manager-startupapicheck.
                                          properties:
                                            kubeSpec:
                                              description: Configure kubernetes specific settings for cert-manager-startupapicheck.
                                              properties:
                                                deployment:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the deployment.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    hpaSpec:
                                                      properties:
                                                        maxReplicas:
                                                          format: int32
                                                          type: integer
                                                        metrics:
                                                          items:
                                                            properties:
                                                              external:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  metricSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              object:
                                                                properties:
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  target:
                                                                    properties:
                                                                      apiVersion:
                                                                        type: string
                                                                      kind:
                                                                        type: string
                                                                      name:
                                                                        type: string
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              pods:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              resource:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  target:
                                                                    properties:
                                                                      averageUtilization:
                                                                        format: int32
                                                                        type: integer
                                                                      averageValue:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                      value:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                    type: object
                                                                  targetAverageUtilization:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              type:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        minReplicas:
                                                          format: int32
                                                          type: integer
                                                      type: object
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    replicaCount:
                                                      description: Number of desired pods.
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    resources:
                                                      properties:
                                                        limits:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                        requests:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                    strategy:
                                                      description: The deployment strategy to use to replace existing pods with new ones.
                                                      properties:
                                                        rollingUpdate:
                                                          properties:
                                                            maxSurge:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                            maxUnavailable:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                          type: object
                                                        type:
                                                          type: string
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                job:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the job.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                overlays:
                                                  items:
                                                    properties:
                                                      apiVersion:
                                                        description: Resource API version.
                                                        type: string
                                                      kind:
                                                        description: Resource kind.
                                                        type: string
                                                      name:
                                                        description: Name of resource.
                                                        type: string
                                                      patches:
                                                        description: List of patches to apply to resource.
                                                        items:
                                                          properties:
                                                            path:
                                                              type: string
                                                            value:
                                                              description: Value to add, delete or replace.
                                                              type: object
                                                              x-kubernetes-preserve-unknown-fields: true
                                                          type: object
                                                        type: array
                                                    type: object
                                                  type: array
                                                service:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the service.
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Labels are an unstructured key value map stored with the deployment.
                                                      type: object
                                                    ports:
                                                      description: The set of ports on which this service is exposed.
                                                      items:
                                                        properties:
                                                          kubernetesNodePort:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          name:
                                                            description: Name assigned to the port.
                                                            type: string
                                                          number:
                                                            description: A valid non-negative integer port number.
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    type:
                                                      description: Determines how the Service is exposed.
                                                      type: string
                                                  type: object
                                                serviceAccount:
                                                  properties:
                                                    imagePullSecrets:
                                                      items:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                          type: object
                                        certManagerWebhookSpec:
                                          description: Configure kubernetes specific settings for cert-manager-webhook.
                                          properties:
                                            kubeSpec:
                                              description: Configure kubernetes specific settings for cert-manager-webhook.
                                              properties:
                                                deployment:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the deployment.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    hpaSpec:
                                                      properties:
                                                        maxReplicas:
                                                          format: int32
                                                          type: integer
                                                        metrics:
                                                          items:
                                                            properties:
                                                              external:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  metricSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              object:
                                                                properties:
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  target:
                                                                    properties:
                                                                      apiVersion:
                                                                        type: string
                                                                      kind:
                                                                        type: string
                                                                      name:
                                                                        type: string
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              pods:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              resource:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  target:
                                                                    properties:
                                                                      averageUtilization:
                                                                        format: int32
                                                                        type: integer
                                                                      averageValue:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                      value:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                    type: object
                                                                  targetAverageUtilization:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              type:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        minReplicas:
                                                          format: int32
                                                          type: integer
                                                      type: object
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    replicaCount:
                                                      description: Number of desired pods.
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    resources:
                                                      properties:
                                                        limits:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                        requests:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                    strategy:
                                                      description: The deployment strategy to use to replace existing pods with new ones.
                                                      properties:
                                                        rollingUpdate:
                                                          properties:
                                                            maxSurge:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                            maxUnavailable:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                          type: object
                                                        type:
                                                          type: string
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                overlays:
                                                  items:
                                                    properties:
                                                      apiVersion:
                                                        description: Resource API version.
                                                        type: string
                                                      kind:
                                                        description: Resource kind.
                                                        type: string
                                                      name:
                                                        description: Name of resource.
                                                        type: string
                                                      patches:
                                                        description: List of patches to apply to resource.
                                                        items:
                                                          properties:
                                                            path:
                                                              type: string
                                                            value:
                                                              description: Value to add, delete or replace.
                                                              type: object
                                                              x-kubernetes-preserve-unknown-fields: true
                                                          type: object
                                                        type: array
                                                    type: object
                                                  type: array
                                                service:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the service.
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Labels are an unstructured key value map stored with the deployment.
                                                      type: object
                                                    ports:
                                                      description: The set of ports on which this service is exposed.
                                                      items:
                                                        properties:
                                                          kubernetesNodePort:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          name:
                                                            description: Name assigned to the port.
                                                            type: string
                                                          number:
                                                            description: A valid non-negative integer port number.
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    type:
                                                      description: Determines how the Service is exposed.
                                                      type: string
                                                  type: object
                                                serviceAccount:
                                                  properties:
                                                    imagePullSecrets:
                                                      items:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                          type: object
                                        managed:
                                          description: Managed specifies whether TSB should manage the lifecycle of cert-manager.
                                          enum:
                                            - AUTO
                                            - EXTERNAL
                                            - INTERNAL
                                          type: string
                                      type: object
                                    custom:
                                      properties:
                                        caBundleSecretName:
                                          description: Configure the CABundleSecretName to be used to verify the signed CSR request by different TSB components.
                                          type: string
                                        csrSignerName:
                                          description: Name of Kubernetes CSR signer to be used to sign the CSR request by different TSB components for internal purposes.
                                          type: string
                                      type: object
                                  type: object
                                istio:
                                  properties:
                                    baseOverlays:
                                      description: The overlays applied to the Istio base component.
                                      items:
                                        properties:
                                          apiVersion:
                                            description: Resource API version.
                                            type: string
                                          kind:
                                            description: Resource kind.
                                            type: string
                                          name:
                                            description: Name of resource.
                                            type: string
                                          patches:
                                            description: List of patches to apply to resource.
                                            items:
                                              properties:
                                                path:
                                                  type: string
                                                value:
                                                  description: Value to add, delete or replace.
                                                  type: object
                                                  x-kubernetes-preserve-unknown-fields: true
                                              type: object
                                            type: array
                                        type: object
                                      type: array
                                    cniOverlays:
                                      description: The overlays applied to the Istio CNI component.
                                      items:
                                        properties:
                                          apiVersion:
                                            description: Resource API version.
                                            type: string
                                          kind:
                                            description: Resource kind.
                                            type: string
                                          name:
                                            description: Name of resource.
                                            type: string
                                          patches:
                                            description: List of patches to apply to resource.
                                            items:
                                              properties:
                                                path:
                                                  type: string
                                                value:
                                                  description: Value to add, delete or replace.
                                                  type: object
                                                  x-kubernetes-preserve-unknown-fields: true
                                              type: object
                                            type: array
                                        type: object
                                      type: array
                                    defaultWorkloadCertTTL:
                                      description: The default TTL of issued workload certificates.
                                      type: string
                                    kubeSpec:
                                      description: Configure Kubernetes specific settings.
                                      properties:
                                        CNI:
                                          properties:
                                            binaryDirectory:
                                              description: Directory on the host to install the CNI binary.
                                              type: string
                                            chained:
                                              type: boolean
                                            clusterRole:
                                              description: The ClusterRole Istio CNI will bind to in the ControlPlane namespace.
                                              type: string
                                            configurationDirectory:
                                              description: Directory on the host to install the CNI config.
                                              type: string
                                            configurationFileName:
                                              type: string
                                            revision:
                                              description: The revisioned istio-operator that will reconcile the Istio CNI component.
                                              type: string
                                          type: object
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevels:
                                      additionalProperties:
                                        type: string
                                      description: Specifies the global logging level settings for the Istio control plane components.
                                      type: object
                                    maxWorkloadCertTTL:
                                      description: The maximum TTL that can be set in issued workload certificates.
                                      type: string
                                    mountInternalWasmExtensions:
                                      nullable: true
                                      type: boolean
                                    pilotOverlays:
                                      description: The overlays applied to the Istio pilot component.
                                      items:
                                        properties:
                                          apiVersion:
                                            description: Resource API version.
                                            type: string
                                          kind:
                                            description: Resource kind.
                                            type: string
                                          name:
                                            description: Name of resource.
                                            type: string
                                          patches:
                                            description: List of patches to apply to resource.
                                            items:
                                              properties:
                                                path:
                                                  type: string
                                                value:
                                                  description: Value to add, delete or replace.
                                                  type: object
                                                  x-kubernetes-preserve-unknown-fields: true
                                              type: object
                                            type: array
                                        type: object
                                      type: array
                                    traceSamplingRate:
                                      description: The percentage of traces Envoy will sample.
                                      format: double
                                      type: number
                                    trustDomain:
                                      description: The trust domain corresponds to the trust root of a system.
                                      type: string
                                    tsbVersion:
                                      description: Specifies the tsb release version.
                                      type: string
                                  type: object
                                n2ac:
                                  description: Configuration for N2AC components.
                                  properties:
                                    enabled:
                                      description: Enable the ngac runtime enforcement.
                                      type: boolean
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevels:
                                      additionalProperties:
                                        type: string
                                      description: The log level configuration by scopes.
                                      type: object
                                    pep:
                                      description: Settings for the Envoy Policy Enforcement Point (PEP) access decision calls.
                                      properties:
                                        cache:
                                          description: PEP Cache settings which caches access decisions from NGAC Cluster Server (PDP) (Enabled by default).
                                          properties:
                                            disabled:
                                              description: Disable caching of access decisions from NGAC Cluster Server (PDP).
                                              type: boolean
                                            ignoreNoCacheHeader:
                                              description: Ignore the 'no-cache' header.
                                              type: boolean
                                            ttl:
                                              description: 'TTL for the cache (Default: 10s).'
                                              type: string
                                          type: object
                                        disableTls:
                                          description: Setting for disabling TLS for connections from Envoy PEP to NGAC Cluster Server (PDP).
                                          type: boolean
                                        skipTlsVerify:
                                          description: Skip TLS verification for connections from Envoy PEP to NGAC Cluster Server (PDP).
                                          type: boolean
                                        timeout:
                                          description: 'Timeout in seconds for the PEP access decision calls to NGAC Cluster Server (PDP) (Default: 5s).'
                                          type: string
                                      type: object
                                  type: object
                                ngac:
                                  properties:
                                    enabled:
                                      description: NGAC is an experimental component.
                                      type: boolean
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevels:
                                      additionalProperties:
                                        type: string
                                      description: The log level configuration by scopes.
                                      type: object
                                  type: object
                                oap:
                                  properties:
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevel:
                                      description: Specifies the log level for OAP component.
                                      type: string
                                    onDemandEnvoyMetricsEnabled:
                                      type: boolean
                                    storageIndexMergingEnabled:
                                      type: boolean
                                    streamingLogEnabled:
                                      type: boolean
                                  type: object
                                onboarding:
                                  description: Workload Onboarding.
                                  properties:
                                    operator:
                                      description: Configure `Workload Onboarding Operator` component.
                                      properties:
                                        kubeSpec:
                                          description: Configure Kubernetes specific settings.
                                          properties:
                                            deployment:
                                              properties:
                                                affinity:
                                                  description: The scheduling constraints for the pod.
                                                  properties:
                                                    nodeAffinity:
                                                      description: Group of node affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              preference:
                                                                properties:
                                                                  matchExpressions:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchFields:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          properties:
                                                            nodeSelectorTerms:
                                                              items:
                                                                properties:
                                                                  matchExpressions:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchFields:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    podAffinity:
                                                      description: Group of inter-pod affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              podAffinityTerm:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          type: array
                                                      type: object
                                                    podAntiAffinity:
                                                      description: Group of inter-pod anti-affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              podAffinityTerm:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                containerSecurityContext:
                                                  properties:
                                                    allowPrivilegeEscalation:
                                                      type: boolean
                                                    capabilities:
                                                      properties:
                                                        add:
                                                          items:
                                                            type: string
                                                          type: array
                                                        drop:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    privileged:
                                                      type: boolean
                                                    procMount:
                                                      type: string
                                                    readOnlyRootFilesystem:
                                                      type: boolean
                                                    runAsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    runAsNonRoot:
                                                      type: boolean
                                                    runAsUser:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    seLinuxOptions:
                                                      properties:
                                                        level:
                                                          type: string
                                                        role:
                                                          type: string
                                                        type:
                                                          type: string
                                                        user:
                                                          type: string
                                                      type: object
                                                    seccompProfile:
                                                      properties:
                                                        localhostProfile:
                                                          type: string
                                                        type:
                                                          type: string
                                                      type: object
                                                    windowsOptions:
                                                      properties:
                                                        gmsaCredentialSpec:
                                                          type: string
                                                        gmsaCredentialSpecName:
                                                          type: string
                                                        runAsUserName:
                                                          type: string
                                                      type: object
                                                  type: object
                                                env:
                                                  description: Environment variables for all containers in the deployment.
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                      valueFrom:
                                                        properties:
                                                          configMapKeyRef:
                                                            properties:
                                                              key:
                                                                type: string
                                                              localObjectReference:
                                                                properties:
                                                                  name:
                                                                    description: Name of the referent.
                                                                    type: string
                                                                type: object
                                                              optional:
                                                                type: boolean
                                                            type: object
                                                          fieldRef:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              fieldPath:
                                                                type: string
                                                            type: object
                                                          resourceFieldRef:
                                                            properties:
                                                              containerName:
                                                                type: string
                                                              divisor:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              resource:
                                                                type: string
                                                            type: object
                                                          secretKeyRef:
                                                            properties:
                                                              key:
                                                                type: string
                                                              localObjectReference:
                                                                properties:
                                                                  name:
                                                                    description: Name of the referent.
                                                                    type: string
                                                                type: object
                                                              optional:
                                                                type: boolean
                                                            type: object
                                                        type: object
                                                    type: object
                                                  type: array
                                                hpaSpec:
                                                  properties:
                                                    maxReplicas:
                                                      format: int32
                                                      type: integer
                                                    metrics:
                                                      items:
                                                        properties:
                                                          external:
                                                            properties:
                                                              metricName:
                                                                type: string
                                                              metricSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              targetValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          object:
                                                            properties:
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              metricName:
                                                                type: string
                                                              selector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              target:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  kind:
                                                                    type: string
                                                                  name:
                                                                    type: string
                                                                type: object
                                                              targetValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          pods:
                                                            properties:
                                                              metricName:
                                                                type: string
                                                              selector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          resource:
                                                            properties:
                                                              name:
                                                                type: string
                                                              target:
                                                                properties:
                                                                  averageUtilization:
                                                                    format: int32
                                                                    type: integer
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  type:
                                                                    type: string
                                                                  value:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              targetAverageUtilization:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          type:
                                                            type: string
                                                        type: object
                                                      type: array
                                                    minReplicas:
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                podAnnotations:
                                                  additionalProperties:
                                                    type: string
                                                  description: Pod annotations are an unstructured key value map stored with the pod.
                                                  type: object
                                                podSecurityContext:
                                                  properties:
                                                    fsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    fsGroupChangePolicy:
                                                      type: string
                                                    runAsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    runAsNonRoot:
                                                      type: boolean
                                                    runAsUser:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    seLinuxOptions:
                                                      properties:
                                                        level:
                                                          type: string
                                                        role:
                                                          type: string
                                                        type:
                                                          type: string
                                                        user:
                                                          type: string
                                                      type: object
                                                    seccompProfile:
                                                      properties:
                                                        localhostProfile:
                                                          type: string
                                                        type:
                                                          type: string
                                                      type: object
                                                    supplementalGroups:
                                                      items:
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                      type: array
                                                    sysctls:
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                        type: object
                                                      type: array
                                                    windowsOptions:
                                                      properties:
                                                        gmsaCredentialSpec:
                                                          type: string
                                                        gmsaCredentialSpecName:
                                                          type: string
                                                        runAsUserName:
                                                          type: string
                                                      type: object
                                                  type: object
                                                replicaCount:
                                                  description: Number of desired pods.
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                resources:
                                                  properties:
                                                    limits:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                    requests:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  type: object
                                                strategy:
                                                  description: The deployment strategy to use to replace existing pods with new ones.
                                                  properties:
                                                    rollingUpdate:
                                                      properties:
                                                        maxSurge:
                                                          properties:
                                                            intVal:
                                                              maximum: 2147483647
                                                              minimum: -2147483648
                                                              nullable: true
                                                              type: integer
                                                            strVal:
                                                              nullable: true
                                                              type: string
                                                            type:
                                                              format: int64
                                                              type: integer
                                                          type: object
                                                        maxUnavailable:
                                                          properties:
                                                            intVal:
                                                              maximum: 2147483647
                                                              minimum: -2147483648
                                                              nullable: true
                                                              type: integer
                                                            strVal:
                                                              nullable: true
                                                              type: string
                                                            type:
                                                              format: int64
                                                              type: integer
                                                          type: object
                                                      type: object
                                                    type:
                                                      type: string
                                                  type: object
                                                tolerations:
                                                  items:
                                                    properties:
                                                      effect:
                                                        description: Effect indicates the taint effect to match.
                                                        type: string
                                                      key:
                                                        description: Key is the taint key that the toleration applies to.
                                                        type: string
                                                      operator:
                                                        description: Operator represents a key's relationship to the value.
                                                        type: string
                                                      tolerationSeconds:
                                                        format: int64
                                                        type: integer
                                                      value:
                                                        description: Value is the taint value the toleration matches to.
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                            overlays:
                                              items:
                                                properties:
                                                  apiVersion:
                                                    description: Resource API version.
                                                    type: string
                                                  kind:
                                                    description: Resource kind.
                                                    type: string
                                                  name:
                                                    description: Name of resource.
                                                    type: string
                                                  patches:
                                                    description: List of patches to apply to resource.
                                                    items:
                                                      properties:
                                                        path:
                                                          type: string
                                                        value:
                                                          description: Value to add, delete or replace.
                                                          type: object
                                                          x-kubernetes-preserve-unknown-fields: true
                                                      type: object
                                                    type: array
                                                type: object
                                              type: array
                                            service:
                                              properties:
                                                annotations:
                                                  additionalProperties:
                                                    type: string
                                                  description: Pod annotations are an unstructured key value map stored with the service.
                                                  type: object
                                                labels:
                                                  additionalProperties:
                                                    type: string
                                                  description: Labels are an unstructured key value map stored with the deployment.
                                                  type: object
                                                ports:
                                                  description: The set of ports on which this service is exposed.
                                                  items:
                                                    properties:
                                                      kubernetesNodePort:
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                      name:
                                                        description: Name assigned to the port.
                                                        type: string
                                                      number:
                                                        description: A valid non-negative integer port number.
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                    type: object
                                                  type: array
                                                type:
                                                  description: Determines how the Service is exposed.
                                                  type: string
                                              type: object
                                            serviceAccount:
                                              properties:
                                                imagePullSecrets:
                                                  items:
                                                    properties:
                                                      name:
                                                        description: Name of the referent.
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                          type: object
                                        logLevels:
                                          additionalProperties:
                                            type: string
                                          description: The log level configuration by scopes.
                                          type: object
                                      type: object
                                    plane:
                                      description: Configure `Workload Onboarding Plane` component.
                                      properties:
                                        instance:
                                          description: Kubernetes settings for the `Workload Onboarding Plane Instance` component.
                                          properties:
                                            kubeSpec:
                                              description: Configure Kubernetes specific settings.
                                              properties:
                                                deployment:
                                                  properties:
                                                    affinity:
                                                      description: The scheduling constraints for the pod.
                                                      properties:
                                                        nodeAffinity:
                                                          description: Group of node affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  preference:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              properties:
                                                                nodeSelectorTerms:
                                                                  items:
                                                                    properties:
                                                                      matchExpressions:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchFields:
                                                                        items:
                                                                          properties:
                                                                            key:
                                                                              type: string
                                                                            operator:
                                                                              type: string
                                                                            values:
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                    type: object
                                                                  type: array
                                                              type: object
                                                          type: object
                                                        podAffinity:
                                                          description: Group of inter-pod affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        podAntiAffinity:
                                                          description: Group of inter-pod anti-affinity scheduling rules.
                                                          properties:
                                                            preferredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  podAffinityTerm:
                                                                    properties:
                                                                      labelSelector:
                                                                        properties:
                                                                          matchExpressions:
                                                                            description: matchExpressions is a list of label selector requirements.
                                                                            items:
                                                                              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.
                                                                                  type: string
                                                                                values:
                                                                                  description: values is an array of string values.
                                                                                  items:
                                                                                    type: string
                                                                                  type: array
                                                                              type: object
                                                                            type: array
                                                                          matchLabels:
                                                                            additionalProperties:
                                                                              type: string
                                                                            description: matchLabels is a map of {key,value} pairs.
                                                                            type: object
                                                                        type: object
                                                                      namespaces:
                                                                        items:
                                                                          type: string
                                                                        type: array
                                                                      topologyKey:
                                                                        type: string
                                                                    type: object
                                                                  weight:
                                                                    format: int32
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            requiredDuringSchedulingIgnoredDuringExecution:
                                                              items:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    containerSecurityContext:
                                                      properties:
                                                        allowPrivilegeEscalation:
                                                          type: boolean
                                                        capabilities:
                                                          properties:
                                                            add:
                                                              items:
                                                                type: string
                                                              type: array
                                                            drop:
                                                              items:
                                                                type: string
                                                              type: array
                                                          type: object
                                                        privileged:
                                                          type: boolean
                                                        procMount:
                                                          type: string
                                                        readOnlyRootFilesystem:
                                                          type: boolean
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    env:
                                                      description: Environment variables for all containers in the deployment.
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                          valueFrom:
                                                            properties:
                                                              configMapKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                              fieldRef:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  fieldPath:
                                                                    type: string
                                                                type: object
                                                              resourceFieldRef:
                                                                properties:
                                                                  containerName:
                                                                    type: string
                                                                  divisor:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  resource:
                                                                    type: string
                                                                type: object
                                                              secretKeyRef:
                                                                properties:
                                                                  key:
                                                                    type: string
                                                                  localObjectReference:
                                                                    properties:
                                                                      name:
                                                                        description: Name of the referent.
                                                                        type: string
                                                                    type: object
                                                                  optional:
                                                                    type: boolean
                                                                type: object
                                                            type: object
                                                        type: object
                                                      type: array
                                                    hpaSpec:
                                                      properties:
                                                        maxReplicas:
                                                          format: int32
                                                          type: integer
                                                        metrics:
                                                          items:
                                                            properties:
                                                              external:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  metricSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              object:
                                                                properties:
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  target:
                                                                    properties:
                                                                      apiVersion:
                                                                        type: string
                                                                      kind:
                                                                        type: string
                                                                      name:
                                                                        type: string
                                                                    type: object
                                                                  targetValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              pods:
                                                                properties:
                                                                  metricName:
                                                                    type: string
                                                                  selector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              resource:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  target:
                                                                    properties:
                                                                      averageUtilization:
                                                                        format: int32
                                                                        type: integer
                                                                      averageValue:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                      value:
                                                                        properties:
                                                                          intVal:
                                                                            maximum: 2147483647
                                                                            minimum: -2147483648
                                                                            nullable: true
                                                                            type: integer
                                                                          strVal:
                                                                            nullable: true
                                                                            type: string
                                                                          type:
                                                                            format: int64
                                                                            type: integer
                                                                        type: object
                                                                    type: object
                                                                  targetAverageUtilization:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  targetAverageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              type:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        minReplicas:
                                                          format: int32
                                                          type: integer
                                                      type: object
                                                    podAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the pod.
                                                      type: object
                                                    podSecurityContext:
                                                      properties:
                                                        fsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        fsGroupChangePolicy:
                                                          type: string
                                                        runAsGroup:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        runAsNonRoot:
                                                          type: boolean
                                                        runAsUser:
                                                          maximum: 4294967295
                                                          minimum: 0
                                                          type: integer
                                                        seLinuxOptions:
                                                          properties:
                                                            level:
                                                              type: string
                                                            role:
                                                              type: string
                                                            type:
                                                              type: string
                                                            user:
                                                              type: string
                                                          type: object
                                                        seccompProfile:
                                                          properties:
                                                            localhostProfile:
                                                              type: string
                                                            type:
                                                              type: string
                                                          type: object
                                                        supplementalGroups:
                                                          items:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          type: array
                                                        sysctls:
                                                          items:
                                                            properties:
                                                              name:
                                                                type: string
                                                              value:
                                                                type: string
                                                            type: object
                                                          type: array
                                                        windowsOptions:
                                                          properties:
                                                            gmsaCredentialSpec:
                                                              type: string
                                                            gmsaCredentialSpecName:
                                                              type: string
                                                            runAsUserName:
                                                              type: string
                                                          type: object
                                                      type: object
                                                    replicaCount:
                                                      description: Number of desired pods.
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    resources:
                                                      properties:
                                                        limits:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                        requests:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                    strategy:
                                                      description: The deployment strategy to use to replace existing pods with new ones.
                                                      properties:
                                                        rollingUpdate:
                                                          properties:
                                                            maxSurge:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                            maxUnavailable:
                                                              properties:
                                                                intVal:
                                                                  maximum: 2147483647
                                                                  minimum: -2147483648
                                                                  nullable: true
                                                                  type: integer
                                                                strVal:
                                                                  nullable: true
                                                                  type: string
                                                                type:
                                                                  format: int64
                                                                  type: integer
                                                              type: object
                                                          type: object
                                                        type:
                                                          type: string
                                                      type: object
                                                    tolerations:
                                                      items:
                                                        properties:
                                                          effect:
                                                            description: Effect indicates the taint effect to match.
                                                            type: string
                                                          key:
                                                            description: Key is the taint key that the toleration applies to.
                                                            type: string
                                                          operator:
                                                            description: Operator represents a key's relationship to the value.
                                                            type: string
                                                          tolerationSeconds:
                                                            format: int64
                                                            type: integer
                                                          value:
                                                            description: Value is the taint value the toleration matches to.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                overlays:
                                                  items:
                                                    properties:
                                                      apiVersion:
                                                        description: Resource API version.
                                                        type: string
                                                      kind:
                                                        description: Resource kind.
                                                        type: string
                                                      name:
                                                        description: Name of resource.
                                                        type: string
                                                      patches:
                                                        description: List of patches to apply to resource.
                                                        items:
                                                          properties:
                                                            path:
                                                              type: string
                                                            value:
                                                              description: Value to add, delete or replace.
                                                              type: object
                                                              x-kubernetes-preserve-unknown-fields: true
                                                          type: object
                                                        type: array
                                                    type: object
                                                  type: array
                                                service:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      description: Pod annotations are an unstructured key value map stored with the service.
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Labels are an unstructured key value map stored with the deployment.
                                                      type: object
                                                    ports:
                                                      description: The set of ports on which this service is exposed.
                                                      items:
                                                        properties:
                                                          kubernetesNodePort:
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                          name:
                                                            description: Name assigned to the port.
                                                            type: string
                                                          number:
                                                            description: A valid non-negative integer port number.
                                                            maximum: 4294967295
                                                            minimum: 0
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    type:
                                                      description: Determines how the Service is exposed.
                                                      type: string
                                                  type: object
                                                serviceAccount:
                                                  properties:
                                                    imagePullSecrets:
                                                      items:
                                                        properties:
                                                          name:
                                                            description: Name of the referent.
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            logLevels:
                                              additionalProperties:
                                                type: string
                                              description: The log level configuration by scopes.
                                              type: object
                                          type: object
                                      type: object
                                    repository:
                                      description: Configure `Workload Onboarding Repository` component.
                                      properties:
                                        kubeSpec:
                                          description: Configure Kubernetes specific settings.
                                          properties:
                                            deployment:
                                              properties:
                                                affinity:
                                                  description: The scheduling constraints for the pod.
                                                  properties:
                                                    nodeAffinity:
                                                      description: Group of node affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              preference:
                                                                properties:
                                                                  matchExpressions:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchFields:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          properties:
                                                            nodeSelectorTerms:
                                                              items:
                                                                properties:
                                                                  matchExpressions:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchFields:
                                                                    items:
                                                                      properties:
                                                                        key:
                                                                          type: string
                                                                        operator:
                                                                          type: string
                                                                        values:
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    podAffinity:
                                                      description: Group of inter-pod affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              podAffinityTerm:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          type: array
                                                      type: object
                                                    podAntiAffinity:
                                                      description: Group of inter-pod anti-affinity scheduling rules.
                                                      properties:
                                                        preferredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              podAffinityTerm:
                                                                properties:
                                                                  labelSelector:
                                                                    properties:
                                                                      matchExpressions:
                                                                        description: matchExpressions is a list of label selector requirements.
                                                                        items:
                                                                          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.
                                                                              type: string
                                                                            values:
                                                                              description: values is an array of string values.
                                                                              items:
                                                                                type: string
                                                                              type: array
                                                                          type: object
                                                                        type: array
                                                                      matchLabels:
                                                                        additionalProperties:
                                                                          type: string
                                                                        description: matchLabels is a map of {key,value} pairs.
                                                                        type: object
                                                                    type: object
                                                                  namespaces:
                                                                    items:
                                                                      type: string
                                                                    type: array
                                                                  topologyKey:
                                                                    type: string
                                                                type: object
                                                              weight:
                                                                format: int32
                                                                type: integer
                                                            type: object
                                                          type: array
                                                        requiredDuringSchedulingIgnoredDuringExecution:
                                                          items:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                containerSecurityContext:
                                                  properties:
                                                    allowPrivilegeEscalation:
                                                      type: boolean
                                                    capabilities:
                                                      properties:
                                                        add:
                                                          items:
                                                            type: string
                                                          type: array
                                                        drop:
                                                          items:
                                                            type: string
                                                          type: array
                                                      type: object
                                                    privileged:
                                                      type: boolean
                                                    procMount:
                                                      type: string
                                                    readOnlyRootFilesystem:
                                                      type: boolean
                                                    runAsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    runAsNonRoot:
                                                      type: boolean
                                                    runAsUser:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    seLinuxOptions:
                                                      properties:
                                                        level:
                                                          type: string
                                                        role:
                                                          type: string
                                                        type:
                                                          type: string
                                                        user:
                                                          type: string
                                                      type: object
                                                    seccompProfile:
                                                      properties:
                                                        localhostProfile:
                                                          type: string
                                                        type:
                                                          type: string
                                                      type: object
                                                    windowsOptions:
                                                      properties:
                                                        gmsaCredentialSpec:
                                                          type: string
                                                        gmsaCredentialSpecName:
                                                          type: string
                                                        runAsUserName:
                                                          type: string
                                                      type: object
                                                  type: object
                                                env:
                                                  description: Environment variables for all containers in the deployment.
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                      valueFrom:
                                                        properties:
                                                          configMapKeyRef:
                                                            properties:
                                                              key:
                                                                type: string
                                                              localObjectReference:
                                                                properties:
                                                                  name:
                                                                    description: Name of the referent.
                                                                    type: string
                                                                type: object
                                                              optional:
                                                                type: boolean
                                                            type: object
                                                          fieldRef:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              fieldPath:
                                                                type: string
                                                            type: object
                                                          resourceFieldRef:
                                                            properties:
                                                              containerName:
                                                                type: string
                                                              divisor:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              resource:
                                                                type: string
                                                            type: object
                                                          secretKeyRef:
                                                            properties:
                                                              key:
                                                                type: string
                                                              localObjectReference:
                                                                properties:
                                                                  name:
                                                                    description: Name of the referent.
                                                                    type: string
                                                                type: object
                                                              optional:
                                                                type: boolean
                                                            type: object
                                                        type: object
                                                    type: object
                                                  type: array
                                                hpaSpec:
                                                  properties:
                                                    maxReplicas:
                                                      format: int32
                                                      type: integer
                                                    metrics:
                                                      items:
                                                        properties:
                                                          external:
                                                            properties:
                                                              metricName:
                                                                type: string
                                                              metricSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              targetValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          object:
                                                            properties:
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              metricName:
                                                                type: string
                                                              selector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              target:
                                                                properties:
                                                                  apiVersion:
                                                                    type: string
                                                                  kind:
                                                                    type: string
                                                                  name:
                                                                    type: string
                                                                type: object
                                                              targetValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          pods:
                                                            properties:
                                                              metricName:
                                                                type: string
                                                              selector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          resource:
                                                            properties:
                                                              name:
                                                                type: string
                                                              target:
                                                                properties:
                                                                  averageUtilization:
                                                                    format: int32
                                                                    type: integer
                                                                  averageValue:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                  type:
                                                                    type: string
                                                                  value:
                                                                    properties:
                                                                      intVal:
                                                                        maximum: 2147483647
                                                                        minimum: -2147483648
                                                                        nullable: true
                                                                        type: integer
                                                                      strVal:
                                                                        nullable: true
                                                                        type: string
                                                                      type:
                                                                        format: int64
                                                                        type: integer
                                                                    type: object
                                                                type: object
                                                              targetAverageUtilization:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              targetAverageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          type:
                                                            type: string
                                                        type: object
                                                      type: array
                                                    minReplicas:
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                podAnnotations:
                                                  additionalProperties:
                                                    type: string
                                                  description: Pod annotations are an unstructured key value map stored with the pod.
                                                  type: object
                                                podSecurityContext:
                                                  properties:
                                                    fsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    fsGroupChangePolicy:
                                                      type: string
                                                    runAsGroup:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    runAsNonRoot:
                                                      type: boolean
                                                    runAsUser:
                                                      maximum: 4294967295
                                                      minimum: 0
                                                      type: integer
                                                    seLinuxOptions:
                                                      properties:
                                                        level:
                                                          type: string
                                                        role:
                                                          type: string
                                                        type:
                                                          type: string
                                                        user:
                                                          type: string
                                                      type: object
                                                    seccompProfile:
                                                      properties:
                                                        localhostProfile:
                                                          type: string
                                                        type:
                                                          type: string
                                                      type: object
                                                    supplementalGroups:
                                                      items:
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                      type: array
                                                    sysctls:
                                                      items:
                                                        properties:
                                                          name:
                                                            type: string
                                                          value:
                                                            type: string
                                                        type: object
                                                      type: array
                                                    windowsOptions:
                                                      properties:
                                                        gmsaCredentialSpec:
                                                          type: string
                                                        gmsaCredentialSpecName:
                                                          type: string
                                                        runAsUserName:
                                                          type: string
                                                      type: object
                                                  type: object
                                                replicaCount:
                                                  description: Number of desired pods.
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                resources:
                                                  properties:
                                                    limits:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                    requests:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  type: object
                                                strategy:
                                                  description: The deployment strategy to use to replace existing pods with new ones.
                                                  properties:
                                                    rollingUpdate:
                                                      properties:
                                                        maxSurge:
                                                          properties:
                                                            intVal:
                                                              maximum: 2147483647
                                                              minimum: -2147483648
                                                              nullable: true
                                                              type: integer
                                                            strVal:
                                                              nullable: true
                                                              type: string
                                                            type:
                                                              format: int64
                                                              type: integer
                                                          type: object
                                                        maxUnavailable:
                                                          properties:
                                                            intVal:
                                                              maximum: 2147483647
                                                              minimum: -2147483648
                                                              nullable: true
                                                              type: integer
                                                            strVal:
                                                              nullable: true
                                                              type: string
                                                            type:
                                                              format: int64
                                                              type: integer
                                                          type: object
                                                      type: object
                                                    type:
                                                      type: string
                                                  type: object
                                                tolerations:
                                                  items:
                                                    properties:
                                                      effect:
                                                        description: Effect indicates the taint effect to match.
                                                        type: string
                                                      key:
                                                        description: Key is the taint key that the toleration applies to.
                                                        type: string
                                                      operator:
                                                        description: Operator represents a key's relationship to the value.
                                                        type: string
                                                      tolerationSeconds:
                                                        format: int64
                                                        type: integer
                                                      value:
                                                        description: Value is the taint value the toleration matches to.
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                            overlays:
                                              items:
                                                properties:
                                                  apiVersion:
                                                    description: Resource API version.
                                                    type: string
                                                  kind:
                                                    description: Resource kind.
                                                    type: string
                                                  name:
                                                    description: Name of resource.
                                                    type: string
                                                  patches:
                                                    description: List of patches to apply to resource.
                                                    items:
                                                      properties:
                                                        path:
                                                          type: string
                                                        value:
                                                          description: Value to add, delete or replace.
                                                          type: object
                                                          x-kubernetes-preserve-unknown-fields: true
                                                      type: object
                                                    type: array
                                                type: object
                                              type: array
                                            service:
                                              properties:
                                                annotations:
                                                  additionalProperties:
                                                    type: string
                                                  description: Pod annotations are an unstructured key value map stored with the service.
                                                  type: object
                                                labels:
                                                  additionalProperties:
                                                    type: string
                                                  description: Labels are an unstructured key value map stored with the deployment.
                                                  type: object
                                                ports:
                                                  description: The set of ports on which this service is exposed.
                                                  items:
                                                    properties:
                                                      kubernetesNodePort:
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                      name:
                                                        description: Name assigned to the port.
                                                        type: string
                                                      number:
                                                        description: A valid non-negative integer port number.
                                                        maximum: 4294967295
                                                        minimum: 0
                                                        type: integer
                                                    type: object
                                                  type: array
                                                type:
                                                  description: Determines how the Service is exposed.
                                                  type: string
                                              type: object
                                            serviceAccount:
                                              properties:
                                                imagePullSecrets:
                                                  items:
                                                    properties:
                                                      name:
                                                        description: Name of the referent.
                                                        type: string
                                                    type: object
                                                  type: array
                                              type: object
                                          type: object
                                      type: object
                                  type: object
                                rateLimitServer:
                                  properties:
                                    backend:
                                      description: Configure Database backend settings.
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - redis
                                        - required:
                                            - redis
                                      properties:
                                        redis:
                                          description: Settings for redis database backend.
                                          properties:
                                            uri:
                                              description: The Redis Database URI.
                                              type: string
                                          type: object
                                      type: object
                                    domain:
                                      type: string
                                    kubeSpec:
                                      description: Configure Kubernetes specific settings.
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                                route53Controller:
                                  properties:
                                    kubeSpec:
                                      description: Configure Kubernetes specific settings.
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                                satellite:
                                  description: Satellite provide load balancing capabilities for data content before the data from Envoy reaches the SPM in Control Plane.
                                  properties:
                                    enabled:
                                      description: Satellite is an optional component.
                                      type: boolean
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevel:
                                      description: Specifies the log level for the component.
                                      type: string
                                  type: object
                                wasmfetcher:
                                  description: Configuration for the WASM Fetcher component.
                                  properties:
                                    cacheDisableInsecureRegistries:
                                      description: Denies insecure registries to be used for fetching WASM modules.
                                      type: boolean
                                    cacheExpiration:
                                      description: WASM Module cache expiration time.
                                      type: string
                                    cacheMaxRetries:
                                      description: Maximum number of retries when fetching WASM modules from the OCI registry.
                                      format: int32
                                      type: integer
                                    cachePurgeInterval:
                                      description: WASM cache purge interval to periodically clean up the stale WASM modules.
                                      type: string
                                    cacheRequestTimeout:
                                      description: Specifies the timeout used when retrieving the WASM plugin from the OCI registry.
                                      type: string
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevels:
                                      additionalProperties:
                                        type: string
                                      description: The log level configuration by scopes.
                                      type: object
                                  type: object
                                xcp:
                                  properties:
                                    centralAuthMode:
                                      description: Authentication mode for connections from XCP Edges to XCP Central.
                                      enum:
                                        - UNKNOWN
                                        - MUTUAL_TLS
                                        - JWT
                                      type: string
                                    centralProvidedCaCert:
                                      description: If true, obtain the CA cert for Istio from XCP central.
                                      nullable: true
                                      type: boolean
                                    configProtection:
                                      properties:
                                        authorizedUsers:
                                          description: List of usernames of authorized users or svc accounts to create/update/delete XCP configs when config protection is enabled.
                                          items:
                                            type: string
                                          type: array
                                        enableAuthorizedCreateUpdateDeleteOnXcpConfigs:
                                          type: boolean
                                        enableAuthorizedUpdateDeleteOnXcpConfigs:
                                          type: boolean
                                      type: object
                                    enableHttpMeshInternalIdentityPropagation:
                                      nullable: true
                                      type: boolean
                                    isolationBoundaries:
                                      description: Configures Isolated Istio environments along with Istio revisions for each environment.
                                      items:
                                        properties:
                                          meshExpansion:
                                            description: Configure mesh expansion to connect workloads external to Kubernetes to the mesh.
                                            properties:
                                              customGateway:
                                                description: A custom mesh expansion gateway.
                                                properties:
                                                  host:
                                                    description: Mesh expansion gateway host address (can be hostname or IP address).
                                                    type: string
                                                  port:
                                                    description: Port mesh expansion gateway is listening on.
                                                    format: int32
                                                    type: integer
                                                type: object
                                              onboarding:
                                                description: Configuration of the `Workload Onboarding Plane`.
                                                properties:
                                                  endpoint:
                                                    properties:
                                                      hosts:
                                                        description: List of hosts included in the TLS certificate.
                                                        items:
                                                          type: string
                                                        type: array
                                                      secretName:
                                                        description: Name of the secret that holds TLS certificate chain and private key.
                                                        type: string
                                                    type: object
                                                  localRepository:
                                                    type: object
                                                  tokenIssuer:
                                                    description: Configuration of the built-in `Workload Onboarding Token Issuer`.
                                                    oneOf:
                                                      - not:
                                                          anyOf:
                                                            - required:
                                                                - jwt
                                                      - required:
                                                          - jwt
                                                    properties:
                                                      jwt:
                                                        description: Configuration of the built-in JWT Token Issuer.
                                                        properties:
                                                          expiration:
                                                            description: Expiration is the duration issued tokens are valid for.
                                                            type: string
                                                        type: object
                                                    type: object
                                                  uid:
                                                    description: Unique identifier of this particular installation of the `Workload Onboarding Plane`.
                                                    type: string
                                                  workloads:
                                                    description: Configuration of the workload handling.
                                                    properties:
                                                      authentication:
                                                        description: Workload authentication configuration.
                                                        properties:
                                                          jwt:
                                                            description: JWT authentication configuration.
                                                            properties:
                                                              issuers:
                                                                description: List of permitted JWT issuers.
                                                                items:
                                                                  oneOf:
                                                                    - not:
                                                                        anyOf:
                                                                          - required:
                                                                              - jwksUri
                                                                          - required:
                                                                              - jwks
                                                                    - required:
                                                                        - jwksUri
                                                                    - required:
                                                                        - jwks
                                                                  properties:
                                                                    issuer:
                                                                      description: JWT `Issuer` identifier.
                                                                      type: string
                                                                    jwks:
                                                                      description: Inlined JSON Web Key Set document.
                                                                      type: string
                                                                    jwksUri:
                                                                      description: URL of the JSON Web Key Set document.
                                                                      type: string
                                                                    shortName:
                                                                      description: Unique short name associated with the issuer.
                                                                      type: string
                                                                    tokenFields:
                                                                      properties:
                                                                        attributes:
                                                                          properties:
                                                                            jsonPath:
                                                                              type: string
                                                                          type: object
                                                                      type: object
                                                                  type: object
                                                                type: array
                                                            type: object
                                                        type: object
                                                      deregistration:
                                                        description: Workload deregistration configuration.
                                                        properties:
                                                          propagationDelay:
                                                            type: string
                                                        type: object
                                                    type: object
                                                type: object
                                            type: object
                                          name:
                                            description: Name of the IsolationBoundary.
                                            type: string
                                          revisions:
                                            description: Configure multiple Istio Revisions under the IsolationBoundary.
                                            items:
                                              properties:
                                                disable:
                                                  type: boolean
                                                istio:
                                                  description: Istio overlay configuration for the revision.
                                                  properties:
                                                    baseOverlays:
                                                      description: The overlays applied to the Istio base component.
                                                      items:
                                                        properties:
                                                          apiVersion:
                                                            description: Resource API version.
                                                            type: string
                                                          kind:
                                                            description: Resource kind.
                                                            type: string
                                                          name:
                                                            description: Name of resource.
                                                            type: string
                                                          patches:
                                                            description: List of patches to apply to resource.
                                                            items:
                                                              properties:
                                                                path:
                                                                  type: string
                                                                value:
                                                                  description: Value to add, delete or replace.
                                                                  type: object
                                                                  x-kubernetes-preserve-unknown-fields: true
                                                              type: object
                                                            type: array
                                                        type: object
                                                      type: array
                                                    cniOverlays:
                                                      description: The overlays applied to the Istio CNI component.
                                                      items:
                                                        properties:
                                                          apiVersion:
                                                            description: Resource API version.
                                                            type: string
                                                          kind:
                                                            description: Resource kind.
                                                            type: string
                                                          name:
                                                            description: Name of resource.
                                                            type: string
                                                          patches:
                                                            description: List of patches to apply to resource.
                                                            items:
                                                              properties:
                                                                path:
                                                                  type: string
                                                                value:
                                                                  description: Value to add, delete or replace.
                                                                  type: object
                                                                  x-kubernetes-preserve-unknown-fields: true
                                                              type: object
                                                            type: array
                                                        type: object
                                                      type: array
                                                    defaultWorkloadCertTTL:
                                                      description: The default TTL of issued workload certificates.
                                                      type: string
                                                    kubeSpec:
                                                      description: Configure Kubernetes specific settings.
                                                      properties:
                                                        CNI:
                                                          properties:
                                                            binaryDirectory:
                                                              description: Directory on the host to install the CNI binary.
                                                              type: string
                                                            chained:
                                                              type: boolean
                                                            clusterRole:
                                                              description: The ClusterRole Istio CNI will bind to in the ControlPlane namespace.
                                                              type: string
                                                            configurationDirectory:
                                                              description: Directory on the host to install the CNI config.
                                                              type: string
                                                            configurationFileName:
                                                              type: string
                                                            revision:
                                                              description: The revisioned istio-operator that will reconcile the Istio CNI component.
                                                              type: string
                                                          type: object
                                                        deployment:
                                                          properties:
                                                            affinity:
                                                              description: The scheduling constraints for the pod.
                                                              properties:
                                                                nodeAffinity:
                                                                  description: Group of node affinity scheduling rules.
                                                                  properties:
                                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                                      items:
                                                                        properties:
                                                                          preference:
                                                                            properties:
                                                                              matchExpressions:
                                                                                items:
                                                                                  properties:
                                                                                    key:
                                                                                      type: string
                                                                                    operator:
                                                                                      type: string
                                                                                    values:
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchFields:
                                                                                items:
                                                                                  properties:
                                                                                    key:
                                                                                      type: string
                                                                                    operator:
                                                                                      type: string
                                                                                    values:
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                            type: object
                                                                          weight:
                                                                            format: int32
                                                                            type: integer
                                                                        type: object
                                                                      type: array
                                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                                      properties:
                                                                        nodeSelectorTerms:
                                                                          items:
                                                                            properties:
                                                                              matchExpressions:
                                                                                items:
                                                                                  properties:
                                                                                    key:
                                                                                      type: string
                                                                                    operator:
                                                                                      type: string
                                                                                    values:
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchFields:
                                                                                items:
                                                                                  properties:
                                                                                    key:
                                                                                      type: string
                                                                                    operator:
                                                                                      type: string
                                                                                    values:
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                            type: object
                                                                          type: array
                                                                      type: object
                                                                  type: object
                                                                podAffinity:
                                                                  description: Group of inter-pod affinity scheduling rules.
                                                                  properties:
                                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                                      items:
                                                                        properties:
                                                                          podAffinityTerm:
                                                                            properties:
                                                                              labelSelector:
                                                                                properties:
                                                                                  matchExpressions:
                                                                                    description: matchExpressions is a list of label selector requirements.
                                                                                    items:
                                                                                      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.
                                                                                          type: string
                                                                                        values:
                                                                                          description: values is an array of string values.
                                                                                          items:
                                                                                            type: string
                                                                                          type: array
                                                                                      type: object
                                                                                    type: array
                                                                                  matchLabels:
                                                                                    additionalProperties:
                                                                                      type: string
                                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                                    type: object
                                                                                type: object
                                                                              namespaces:
                                                                                items:
                                                                                  type: string
                                                                                type: array
                                                                              topologyKey:
                                                                                type: string
                                                                            type: object
                                                                          weight:
                                                                            format: int32
                                                                            type: integer
                                                                        type: object
                                                                      type: array
                                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                                      items:
                                                                        properties:
                                                                          labelSelector:
                                                                            properties:
                                                                              matchExpressions:
                                                                                description: matchExpressions is a list of label selector requirements.
                                                                                items:
                                                                                  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.
                                                                                      type: string
                                                                                    values:
                                                                                      description: values is an array of string values.
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchLabels:
                                                                                additionalProperties:
                                                                                  type: string
                                                                                description: matchLabels is a map of {key,value} pairs.
                                                                                type: object
                                                                            type: object
                                                                          namespaces:
                                                                            items:
                                                                              type: string
                                                                            type: array
                                                                          topologyKey:
                                                                            type: string
                                                                        type: object
                                                                      type: array
                                                                  type: object
                                                                podAntiAffinity:
                                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                                  properties:
                                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                                      items:
                                                                        properties:
                                                                          podAffinityTerm:
                                                                            properties:
                                                                              labelSelector:
                                                                                properties:
                                                                                  matchExpressions:
                                                                                    description: matchExpressions is a list of label selector requirements.
                                                                                    items:
                                                                                      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.
                                                                                          type: string
                                                                                        values:
                                                                                          description: values is an array of string values.
                                                                                          items:
                                                                                            type: string
                                                                                          type: array
                                                                                      type: object
                                                                                    type: array
                                                                                  matchLabels:
                                                                                    additionalProperties:
                                                                                      type: string
                                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                                    type: object
                                                                                type: object
                                                                              namespaces:
                                                                                items:
                                                                                  type: string
                                                                                type: array
                                                                              topologyKey:
                                                                                type: string
                                                                            type: object
                                                                          weight:
                                                                            format: int32
                                                                            type: integer
                                                                        type: object
                                                                      type: array
                                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                                      items:
                                                                        properties:
                                                                          labelSelector:
                                                                            properties:
                                                                              matchExpressions:
                                                                                description: matchExpressions is a list of label selector requirements.
                                                                                items:
                                                                                  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.
                                                                                      type: string
                                                                                    values:
                                                                                      description: values is an array of string values.
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchLabels:
                                                                                additionalProperties:
                                                                                  type: string
                                                                                description: matchLabels is a map of {key,value} pairs.
                                                                                type: object
                                                                            type: object
                                                                          namespaces:
                                                                            items:
                                                                              type: string
                                                                            type: array
                                                                          topologyKey:
                                                                            type: string
                                                                        type: object
                                                                      type: array
                                                                  type: object
                                                              type: object
                                                            containerSecurityContext:
                                                              properties:
                                                                allowPrivilegeEscalation:
                                                                  type: boolean
                                                                capabilities:
                                                                  properties:
                                                                    add:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                    drop:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                privileged:
                                                                  type: boolean
                                                                procMount:
                                                                  type: string
                                                                readOnlyRootFilesystem:
                                                                  type: boolean
                                                                runAsGroup:
                                                                  maximum: 4294967295
                                                                  minimum: 0
                                                                  type: integer
                                                                runAsNonRoot:
                                                                  type: boolean
                                                                runAsUser:
                                                                  maximum: 4294967295
                                                                  minimum: 0
                                                                  type: integer
                                                                seLinuxOptions:
                                                                  properties:
                                                                    level:
                                                                      type: string
                                                                    role:
                                                                      type: string
                                                                    type:
                                                                      type: string
                                                                    user:
                                                                      type: string
                                                                  type: object
                                                                seccompProfile:
                                                                  properties:
                                                                    localhostProfile:
                                                                      type: string
                                                                    type:
                                                                      type: string
                                                                  type: object
                                                                windowsOptions:
                                                                  properties:
                                                                    gmsaCredentialSpec:
                                                                      type: string
                                                                    gmsaCredentialSpecName:
                                                                      type: string
                                                                    runAsUserName:
                                                                      type: string
                                                                  type: object
                                                              type: object
                                                            env:
                                                              description: Environment variables for all containers in the deployment.
                                                              items:
                                                                properties:
                                                                  name:
                                                                    type: string
                                                                  value:
                                                                    type: string
                                                                  valueFrom:
                                                                    properties:
                                                                      configMapKeyRef:
                                                                        properties:
                                                                          key:
                                                                            type: string
                                                                          localObjectReference:
                                                                            properties:
                                                                              name:
                                                                                description: Name of the referent.
                                                                                type: string
                                                                            type: object
                                                                          optional:
                                                                            type: boolean
                                                                        type: object
                                                                      fieldRef:
                                                                        properties:
                                                                          apiVersion:
                                                                            type: string
                                                                          fieldPath:
                                                                            type: string
                                                                        type: object
                                                                      resourceFieldRef:
                                                                        properties:
                                                                          containerName:
                                                                            type: string
                                                                          divisor:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                          resource:
                                                                            type: string
                                                                        type: object
                                                                      secretKeyRef:
                                                                        properties:
                                                                          key:
                                                                            type: string
                                                                          localObjectReference:
                                                                            properties:
                                                                              name:
                                                                                description: Name of the referent.
                                                                                type: string
                                                                            type: object
                                                                          optional:
                                                                            type: boolean
                                                                        type: object
                                                                    type: object
                                                                type: object
                                                              type: array
                                                            hpaSpec:
                                                              properties:
                                                                maxReplicas:
                                                                  format: int32
                                                                  type: integer
                                                                metrics:
                                                                  items:
                                                                    properties:
                                                                      external:
                                                                        properties:
                                                                          metricName:
                                                                            type: string
                                                                          metricSelector:
                                                                            properties:
                                                                              matchExpressions:
                                                                                description: matchExpressions is a list of label selector requirements.
                                                                                items:
                                                                                  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.
                                                                                      type: string
                                                                                    values:
                                                                                      description: values is an array of string values.
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchLabels:
                                                                                additionalProperties:
                                                                                  type: string
                                                                                description: matchLabels is a map of {key,value} pairs.
                                                                                type: object
                                                                            type: object
                                                                          targetAverageValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                          targetValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                        type: object
                                                                      object:
                                                                        properties:
                                                                          averageValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                          metricName:
                                                                            type: string
                                                                          selector:
                                                                            properties:
                                                                              matchExpressions:
                                                                                description: matchExpressions is a list of label selector requirements.
                                                                                items:
                                                                                  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.
                                                                                      type: string
                                                                                    values:
                                                                                      description: values is an array of string values.
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchLabels:
                                                                                additionalProperties:
                                                                                  type: string
                                                                                description: matchLabels is a map of {key,value} pairs.
                                                                                type: object
                                                                            type: object
                                                                          target:
                                                                            properties:
                                                                              apiVersion:
                                                                                type: string
                                                                              kind:
                                                                                type: string
                                                                              name:
                                                                                type: string
                                                                            type: object
                                                                          targetValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                        type: object
                                                                      pods:
                                                                        properties:
                                                                          metricName:
                                                                            type: string
                                                                          selector:
                                                                            properties:
                                                                              matchExpressions:
                                                                                description: matchExpressions is a list of label selector requirements.
                                                                                items:
                                                                                  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.
                                                                                      type: string
                                                                                    values:
                                                                                      description: values is an array of string values.
                                                                                      items:
                                                                                        type: string
                                                                                      type: array
                                                                                  type: object
                                                                                type: array
                                                                              matchLabels:
                                                                                additionalProperties:
                                                                                  type: string
                                                                                description: matchLabels is a map of {key,value} pairs.
                                                                                type: object
                                                                            type: object
                                                                          targetAverageValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                        type: object
                                                                      resource:
                                                                        properties:
                                                                          name:
                                                                            type: string
                                                                          target:
                                                                            properties:
                                                                              averageUtilization:
                                                                                format: int32
                                                                                type: integer
                                                                              averageValue:
                                                                                properties:
                                                                                  intVal:
                                                                                    maximum: 2147483647
                                                                                    minimum: -2147483648
                                                                                    nullable: true
                                                                                    type: integer
                                                                                  strVal:
                                                                                    nullable: true
                                                                                    type: string
                                                                                  type:
                                                                                    format: int64
                                                                                    type: integer
                                                                                type: object
                                                                              type:
                                                                                type: string
                                                                              value:
                                                                                properties:
                                                                                  intVal:
                                                                                    maximum: 2147483647
                                                                                    minimum: -2147483648
                                                                                    nullable: true
                                                                                    type: integer
                                                                                  strVal:
                                                                                    nullable: true
                                                                                    type: string
                                                                                  type:
                                                                                    format: int64
                                                                                    type: integer
                                                                                type: object
                                                                            type: object
                                                                          targetAverageUtilization:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                          targetAverageValue:
                                                                            properties:
                                                                              intVal:
                                                                                maximum: 2147483647
                                                                                minimum: -2147483648
                                                                                nullable: true
                                                                                type: integer
                                                                              strVal:
                                                                                nullable: true
                                                                                type: string
                                                                              type:
                                                                                format: int64
                                                                                type: integer
                                                                            type: object
                                                                        type: object
                                                                      type:
                                                                        type: string
                                                                    type: object
                                                                  type: array
                                                                minReplicas:
                                                                  format: int32
                                                                  type: integer
                                                              type: object
                                                            podAnnotations:
                                                              additionalProperties:
                                                                type: string
                                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                                              type: object
                                                            podSecurityContext:
                                                              properties:
                                                                fsGroup:
                                                                  maximum: 4294967295
                                                                  minimum: 0
                                                                  type: integer
                                                                fsGroupChangePolicy:
                                                                  type: string
                                                                runAsGroup:
                                                                  maximum: 4294967295
                                                                  minimum: 0
                                                                  type: integer
                                                                runAsNonRoot:
                                                                  type: boolean
                                                                runAsUser:
                                                                  maximum: 4294967295
                                                                  minimum: 0
                                                                  type: integer
                                                                seLinuxOptions:
                                                                  properties:
                                                                    level:
                                                                      type: string
                                                                    role:
                                                                      type: string
                                                                    type:
                                                                      type: string
                                                                    user:
                                                                      type: string
                                                                  type: object
                                                                seccompProfile:
                                                                  properties:
                                                                    localhostProfile:
                                                                      type: string
                                                                    type:
                                                                      type: string
                                                                  type: object
                                                                supplementalGroups:
                                                                  items:
                                                                    maximum: 4294967295
                                                                    minimum: 0
                                                                    type: integer
                                                                  type: array
                                                                sysctls:
                                                                  items:
                                                                    properties:
                                                                      name:
                                                                        type: string
                                                                      value:
                                                                        type: string
                                                                    type: object
                                                                  type: array
                                                                windowsOptions:
                                                                  properties:
                                                                    gmsaCredentialSpec:
                                                                      type: string
                                                                    gmsaCredentialSpecName:
                                                                      type: string
                                                                    runAsUserName:
                                                                      type: string
                                                                  type: object
                                                              type: object
                                                            replicaCount:
                                                              description: Number of desired pods.
                                                              maximum: 4294967295
                                                              minimum: 0
                                                              type: integer
                                                            resources:
                                                              properties:
                                                                limits:
                                                                  additionalProperties:
                                                                    type: string
                                                                  type: object
                                                                requests:
                                                                  additionalProperties:
                                                                    type: string
                                                                  type: object
                                                              type: object
                                                            strategy:
                                                              description: The deployment strategy to use to replace existing pods with new ones.
                                                              properties:
                                                                rollingUpdate:
                                                                  properties:
                                                                    maxSurge:
                                                                      properties:
                                                                        intVal:
                                                                          maximum: 2147483647
                                                                          minimum: -2147483648
                                                                          nullable: true
                                                                          type: integer
                                                                        strVal:
                                                                          nullable: true
                                                                          type: string
                                                                        type:
                                                                          format: int64
                                                                          type: integer
                                                                      type: object
                                                                    maxUnavailable:
                                                                      properties:
                                                                        intVal:
                                                                          maximum: 2147483647
                                                                          minimum: -2147483648
                                                                          nullable: true
                                                                          type: integer
                                                                        strVal:
                                                                          nullable: true
                                                                          type: string
                                                                        type:
                                                                          format: int64
                                                                          type: integer
                                                                      type: object
                                                                  type: object
                                                                type:
                                                                  type: string
                                                              type: object
                                                            tolerations:
                                                              items:
                                                                properties:
                                                                  effect:
                                                                    description: Effect indicates the taint effect to match.
                                                                    type: string
                                                                  key:
                                                                    description: Key is the taint key that the toleration applies to.
                                                                    type: string
                                                                  operator:
                                                                    description: Operator represents a key's relationship to the value.
                                                                    type: string
                                                                  tolerationSeconds:
                                                                    format: int64
                                                                    type: integer
                                                                  value:
                                                                    description: Value is the taint value the toleration matches to.
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                        overlays:
                                                          items:
                                                            properties:
                                                              apiVersion:
                                                                description: Resource API version.
                                                                type: string
                                                              kind:
                                                                description: Resource kind.
                                                                type: string
                                                              name:
                                                                description: Name of resource.
                                                                type: string
                                                              patches:
                                                                description: List of patches to apply to resource.
                                                                items:
                                                                  properties:
                                                                    path:
                                                                      type: string
                                                                    value:
                                                                      description: Value to add, delete or replace.
                                                                      type: object
                                                                      x-kubernetes-preserve-unknown-fields: true
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                        service:
                                                          properties:
                                                            annotations:
                                                              additionalProperties:
                                                                type: string
                                                              description: Pod annotations are an unstructured key value map stored with the service.
                                                              type: object
                                                            labels:
                                                              additionalProperties:
                                                                type: string
                                                              description: Labels are an unstructured key value map stored with the deployment.
                                                              type: object
                                                            ports:
                                                              description: The set of ports on which this service is exposed.
                                                              items:
                                                                properties:
                                                                  kubernetesNodePort:
                                                                    maximum: 4294967295
                                                                    minimum: 0
                                                                    type: integer
                                                                  name:
                                                                    description: Name assigned to the port.
                                                                    type: string
                                                                  number:
                                                                    description: A valid non-negative integer port number.
                                                                    maximum: 4294967295
                                                                    minimum: 0
                                                                    type: integer
                                                                type: object
                                                              type: array
                                                            type:
                                                              description: Determines how the Service is exposed.
                                                              type: string
                                                          type: object
                                                        serviceAccount:
                                                          properties:
                                                            imagePullSecrets:
                                                              items:
                                                                properties:
                                                                  name:
                                                                    description: Name of the referent.
                                                                    type: string
                                                                type: object
                                                              type: array
                                                          type: object
                                                      type: object
                                                    logLevels:
                                                      additionalProperties:
                                                        type: string
                                                      description: Specifies the global logging level settings for the Istio control plane components.
                                                      type: object
                                                    maxWorkloadCertTTL:
                                                      description: The maximum TTL that can be set in issued workload certificates.
                                                      type: string
                                                    mountInternalWasmExtensions:
                                                      nullable: true
                                                      type: boolean
                                                    pilotOverlays:
                                                      description: The overlays applied to the Istio pilot component.
                                                      items:
                                                        properties:
                                                          apiVersion:
                                                            description: Resource API version.
                                                            type: string
                                                          kind:
                                                            description: Resource kind.
                                                            type: string
                                                          name:
                                                            description: Name of resource.
                                                            type: string
                                                          patches:
                                                            description: List of patches to apply to resource.
                                                            items:
                                                              properties:
                                                                path:
                                                                  type: string
                                                                value:
                                                                  description: Value to add, delete or replace.
                                                                  type: object
                                                                  x-kubernetes-preserve-unknown-fields: true
                                                              type: object
                                                            type: array
                                                        type: object
                                                      type: array
                                                    traceSamplingRate:
                                                      description: The percentage of traces Envoy will sample.
                                                      format: double
                                                      type: number
                                                    trustDomain:
                                                      description: The trust domain corresponds to the trust root of a system.
                                                      type: string
                                                    tsbVersion:
                                                      description: Specifies the tsb release version.
                                                      type: string
                                                  type: object
                                                name:
                                                  description: Name of the IstioRevision.
                                                  type: string
                                              type: object
                                            type: array
                                        type: object
                                      type: array
                                    kubeSpec:
                                      properties:
                                        deployment:
                                          properties:
                                            affinity:
                                              description: The scheduling constraints for the pod.
                                              properties:
                                                nodeAffinity:
                                                  description: Group of node affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          preference:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      properties:
                                                        nodeSelectorTerms:
                                                          items:
                                                            properties:
                                                              matchExpressions:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchFields:
                                                                items:
                                                                  properties:
                                                                    key:
                                                                      type: string
                                                                    operator:
                                                                      type: string
                                                                    values:
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                            type: object
                                                          type: array
                                                      type: object
                                                  type: object
                                                podAffinity:
                                                  description: Group of inter-pod affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                                podAntiAffinity:
                                                  description: Group of inter-pod anti-affinity scheduling rules.
                                                  properties:
                                                    preferredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          podAffinityTerm:
                                                            properties:
                                                              labelSelector:
                                                                properties:
                                                                  matchExpressions:
                                                                    description: matchExpressions is a list of label selector requirements.
                                                                    items:
                                                                      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.
                                                                          type: string
                                                                        values:
                                                                          description: values is an array of string values.
                                                                          items:
                                                                            type: string
                                                                          type: array
                                                                      type: object
                                                                    type: array
                                                                  matchLabels:
                                                                    additionalProperties:
                                                                      type: string
                                                                    description: matchLabels is a map of {key,value} pairs.
                                                                    type: object
                                                                type: object
                                                              namespaces:
                                                                items:
                                                                  type: string
                                                                type: array
                                                              topologyKey:
                                                                type: string
                                                            type: object
                                                          weight:
                                                            format: int32
                                                            type: integer
                                                        type: object
                                                      type: array
                                                    requiredDuringSchedulingIgnoredDuringExecution:
                                                      items:
                                                        properties:
                                                          labelSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          namespaces:
                                                            items:
                                                              type: string
                                                            type: array
                                                          topologyKey:
                                                            type: string
                                                        type: object
                                                      type: array
                                                  type: object
                                              type: object
                                            containerSecurityContext:
                                              properties:
                                                allowPrivilegeEscalation:
                                                  type: boolean
                                                capabilities:
                                                  properties:
                                                    add:
                                                      items:
                                                        type: string
                                                      type: array
                                                    drop:
                                                      items:
                                                        type: string
                                                      type: array
                                                  type: object
                                                privileged:
                                                  type: boolean
                                                procMount:
                                                  type: string
                                                readOnlyRootFilesystem:
                                                  type: boolean
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            env:
                                              description: Environment variables for all containers in the deployment.
                                              items:
                                                properties:
                                                  name:
                                                    type: string
                                                  value:
                                                    type: string
                                                  valueFrom:
                                                    properties:
                                                      configMapKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        type: object
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          resource:
                                                            type: string
                                                        type: object
                                                      secretKeyRef:
                                                        properties:
                                                          key:
                                                            type: string
                                                          localObjectReference:
                                                            properties:
                                                              name:
                                                                description: Name of the referent.
                                                                type: string
                                                            type: object
                                                          optional:
                                                            type: boolean
                                                        type: object
                                                    type: object
                                                type: object
                                              type: array
                                            hpaSpec:
                                              properties:
                                                maxReplicas:
                                                  format: int32
                                                  type: integer
                                                metrics:
                                                  items:
                                                    properties:
                                                      external:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          metricSelector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      object:
                                                        properties:
                                                          averageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          target:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              kind:
                                                                type: string
                                                              name:
                                                                type: string
                                                            type: object
                                                          targetValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      pods:
                                                        properties:
                                                          metricName:
                                                            type: string
                                                          selector:
                                                            properties:
                                                              matchExpressions:
                                                                description: matchExpressions is a list of label selector requirements.
                                                                items:
                                                                  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.
                                                                      type: string
                                                                    values:
                                                                      description: values is an array of string values.
                                                                      items:
                                                                        type: string
                                                                      type: array
                                                                  type: object
                                                                type: array
                                                              matchLabels:
                                                                additionalProperties:
                                                                  type: string
                                                                description: matchLabels is a map of {key,value} pairs.
                                                                type: object
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      resource:
                                                        properties:
                                                          name:
                                                            type: string
                                                          target:
                                                            properties:
                                                              averageUtilization:
                                                                format: int32
                                                                type: integer
                                                              averageValue:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                              type:
                                                                type: string
                                                              value:
                                                                properties:
                                                                  intVal:
                                                                    maximum: 2147483647
                                                                    minimum: -2147483648
                                                                    nullable: true
                                                                    type: integer
                                                                  strVal:
                                                                    nullable: true
                                                                    type: string
                                                                  type:
                                                                    format: int64
                                                                    type: integer
                                                                type: object
                                                            type: object
                                                          targetAverageUtilization:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                          targetAverageValue:
                                                            properties:
                                                              intVal:
                                                                maximum: 2147483647
                                                                minimum: -2147483648
                                                                nullable: true
                                                                type: integer
                                                              strVal:
                                                                nullable: true
                                                                type: string
                                                              type:
                                                                format: int64
                                                                type: integer
                                                            type: object
                                                        type: object
                                                      type:
                                                        type: string
                                                    type: object
                                                  type: array
                                                minReplicas:
                                                  format: int32
                                                  type: integer
                                              type: object
                                            podAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the pod.
                                              type: object
                                            podSecurityContext:
                                              properties:
                                                fsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                fsGroupChangePolicy:
                                                  type: string
                                                runAsGroup:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                runAsNonRoot:
                                                  type: boolean
                                                runAsUser:
                                                  maximum: 4294967295
                                                  minimum: 0
                                                  type: integer
                                                seLinuxOptions:
                                                  properties:
                                                    level:
                                                      type: string
                                                    role:
                                                      type: string
                                                    type:
                                                      type: string
                                                    user:
                                                      type: string
                                                  type: object
                                                seccompProfile:
                                                  properties:
                                                    localhostProfile:
                                                      type: string
                                                    type:
                                                      type: string
                                                  type: object
                                                supplementalGroups:
                                                  items:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  type: array
                                                sysctls:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    type: object
                                                  type: array
                                                windowsOptions:
                                                  properties:
                                                    gmsaCredentialSpec:
                                                      type: string
                                                    gmsaCredentialSpecName:
                                                      type: string
                                                    runAsUserName:
                                                      type: string
                                                  type: object
                                              type: object
                                            replicaCount:
                                              description: Number of desired pods.
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                            resources:
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            strategy:
                                              description: The deployment strategy to use to replace existing pods with new ones.
                                              properties:
                                                rollingUpdate:
                                                  properties:
                                                    maxSurge:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                    maxUnavailable:
                                                      properties:
                                                        intVal:
                                                          maximum: 2147483647
                                                          minimum: -2147483648
                                                          nullable: true
                                                          type: integer
                                                        strVal:
                                                          nullable: true
                                                          type: string
                                                        type:
                                                          format: int64
                                                          type: integer
                                                      type: object
                                                  type: object
                                                type:
                                                  type: string
                                              type: object
                                            tolerations:
                                              items:
                                                properties:
                                                  effect:
                                                    description: Effect indicates the taint effect to match.
                                                    type: string
                                                  key:
                                                    description: Key is the taint key that the toleration applies to.
                                                    type: string
                                                  operator:
                                                    description: Operator represents a key's relationship to the value.
                                                    type: string
                                                  tolerationSeconds:
                                                    format: int64
                                                    type: integer
                                                  value:
                                                    description: Value is the taint value the toleration matches to.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                        overlays:
                                          items:
                                            properties:
                                              apiVersion:
                                                description: Resource API version.
                                                type: string
                                              kind:
                                                description: Resource kind.
                                                type: string
                                              name:
                                                description: Name of resource.
                                                type: string
                                              patches:
                                                description: List of patches to apply to resource.
                                                items:
                                                  properties:
                                                    path:
                                                      type: string
                                                    value:
                                                      description: Value to add, delete or replace.
                                                      type: object
                                                      x-kubernetes-preserve-unknown-fields: true
                                                  type: object
                                                type: array
                                            type: object
                                          type: array
                                        service:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              description: Pod annotations are an unstructured key value map stored with the service.
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              description: Labels are an unstructured key value map stored with the deployment.
                                              type: object
                                            ports:
                                              description: The set of ports on which this service is exposed.
                                              items:
                                                properties:
                                                  kubernetesNodePort:
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                  name:
                                                    description: Name assigned to the port.
                                                    type: string
                                                  number:
                                                    description: A valid non-negative integer port number.
                                                    maximum: 4294967295
                                                    minimum: 0
                                                    type: integer
                                                type: object
                                              type: array
                                            type:
                                              description: Determines how the Service is exposed.
                                              type: string
                                          type: object
                                        serviceAccount:
                                          properties:
                                            imagePullSecrets:
                                              items:
                                                properties:
                                                  name:
                                                    description: Name of the referent.
                                                    type: string
                                                type: object
                                              type: array
                                          type: object
                                      type: object
                                    logLevels:
                                      additionalProperties:
                                        type: string
                                      description: Loglevel for XCP.
                                      type: object
                                    revision:
                                      type: string
                                  type: object
                              type: object
                            hub:
                              description: TSB container hub path e.g.
                              type: string
                            imagePullSecrets:
                              items:
                                properties:
                                  name:
                                    description: Name of the referent.
                                    type: string
                                type: object
                              type: array
                            managementPlane:
                              description: Configure the management plane to retrieve configuration from.
                              properties:
                                clusterName:
                                  type: string
                                host:
                                  description: Management plane host address (can be hostname or IPv4/IPv6 address).
                                  type: string
                                port:
                                  description: Port management plane is listening on.
                                  format: int32
                                  type: integer
                                selfSigned:
                                  description: Management plane uses a self signed or private TLS certificate.
                                  type: boolean
                              type: object
                            meshExpansion:
                              description: Configure mesh expansion to connect workloads external to Kubernetes to the mesh.
                              properties:
                                customGateway:
                                  description: A custom mesh expansion gateway.
                                  properties:
                                    host:
                                      description: Mesh expansion gateway host address (can be hostname or IP address).
                                      type: string
                                    port:
                                      description: Port mesh expansion gateway is listening on.
                                      format: int32
                                      type: integer
                                  type: object
                                onboarding:
                                  description: Configuration of the `Workload Onboarding Plane`.
                                  properties:
                                    endpoint:
                                      properties:
                                        hosts:
                                          description: List of hosts included in the TLS certificate.
                                          items:
                                            type: string
                                          type: array
                                        secretName:
                                          description: Name of the secret that holds TLS certificate chain and private key.
                                          type: string
                                      type: object
                                    localRepository:
                                      type: object
                                    tokenIssuer:
                                      description: Configuration of the built-in `Workload Onboarding Token Issuer`.
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwt
                                        - required:
                                            - jwt
                                      properties:
                                        jwt:
                                          description: Configuration of the built-in JWT Token Issuer.
                                          properties:
                                            expiration:
                                              description: Expiration is the duration issued tokens are valid for.
                                              type: string
                                          type: object
                                      type: object
                                    uid:
                                      description: Unique identifier of this particular installation of the `Workload Onboarding Plane`.
                                      type: string
                                    workloads:
                                      description: Configuration of the workload handling.
                                      properties:
                                        authentication:
                                          description: Workload authentication configuration.
                                          properties:
                                            jwt:
                                              description: JWT authentication configuration.
                                              properties:
                                                issuers:
                                                  description: List of permitted JWT issuers.
                                                  items:
                                                    oneOf:
                                                      - not:
                                                          anyOf:
                                                            - required:
                                                                - jwksUri
                                                            - required:
                                                                - jwks
                                                      - required:
                                                          - jwksUri
                                                      - required:
                                                          - jwks
                                                    properties:
                                                      issuer:
                                                        description: JWT `Issuer` identifier.
                                                        type: string
                                                      jwks:
                                                        description: Inlined JSON Web Key Set document.
                                                        type: string
                                                      jwksUri:
                                                        description: URL of the JSON Web Key Set document.
                                                        type: string
                                                      shortName:
                                                        description: Unique short name associated with the issuer.
                                                        type: string
                                                      tokenFields:
                                                        properties:
                                                          attributes:
                                                            properties:
                                                              jsonPath:
                                                                type: string
                                                            type: object
                                                        type: object
                                                    type: object
                                                  type: array
                                              type: object
                                          type: object
                                        deregistration:
                                          description: Workload deregistration configuration.
                                          properties:
                                            propagationDelay:
                                              type: string
                                          type: object
                                      type: object
                                  type: object
                              type: object
                            meshObservability:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - demoSettings
                                      - required:
                                          - settings
                                - required:
                                    - demoSettings
                                - required:
                                    - settings
                              properties:
                                demoSettings:
                                  properties:
                                    apiEndpointMetricsEnabled:
                                      description: Toggle to process, analyze, and generate api endpoints RED metrics.
                                      type: boolean
                                  type: object
                                settings:
                                  properties:
                                    apiEndpointMetricsEnabled:
                                      description: Toggle to process, analyze, and generate api endpoints RED metrics.
                                      type: boolean
                                  type: object
                              type: object
                            providerSettings:
                              description: Configures Kubernetes provider specific settings.
                              properties:
                                aws:
                                  description: Global settings to AWS.
                                  properties:
                                    serviceAccountName:
                                      description: Service account name to use with IAM role association.
                                      type: string
                                  type: object
                                eks:
                                  description: Settings specific to EKS.
                                  properties:
                                    useNlbByDefault:
                                      type: boolean
                                  type: object
                                lattice:
                                  description: Settings specific to Lattice.
                                  properties:
                                    enabled:
                                      description: Enable/disable the Lattice integration controller.
                                      type: boolean
                                  type: object
                                route53:
                                  description: Settings specific to Route53.
                                  properties:
                                    domainFilter:
                                      description: List of domains to limit possible target zones by a domain suffix.
                                      items:
                                        type: string
                                      type: array
                                    enabled:
                                      description: Enable/disable the Route53 integration controller.
                                      type: boolean
                                    evaluateTargetHealth:
                                      description: Control whether to evaluate the health of a DNS target.
                                      nullable: true
                                      type: boolean
                                    filterSettings:
                                      description: Filter target settings.
                                      properties:
                                        annotationFilter:
                                          description: Filter out (remove) targets that matches annotation using label selector semantics.
                                          type: string
                                        excludeDomain:
                                          description: Exclude subdomains.
                                          items:
                                            type: string
                                          type: array
                                        labelFilter:
                                          description: Filter out (remove) targets that matches label selector.
                                          type: string
                                        zoneIdFilter:
                                          description: When using the AWS provider, filter for zones with this ID.
                                          items:
                                            type: string
                                          type: array
                                        zoneTagFilter:
                                          description: When using the AWS provider, filter for zones with this tag.
                                          items:
                                            type: string
                                          type: array
                                        zoneType:
                                          description: Filter out (removes) zones of this type.
                                          enum:
                                            - NONE
                                            - PUBLIC
                                            - PRIVATE
                                          type: string
                                      type: object
                                    interval:
                                      description: Duration of interval between individual synchronizations.
                                      type: string
                                    namespaceSelector:
                                      description: Specifies the namespace to watch.
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - namespace
                                              - required:
                                                  - ignoreNamespaces
                                        - required:
                                            - namespace
                                        - required:
                                            - ignoreNamespaces
                                      properties:
                                        ignoreNamespaces:
                                          description: Comma separated list of namespaces to ignore when watching for DNS endpoints.
                                          type: string
                                        namespace:
                                          description: Specifies the namespace to watch for resources.
                                          type: string
                                      type: object
                                    policy:
                                      description: Specifies the policy to use when managing DNS records.
                                      enum:
                                        - SYNC
                                        - UPSERT_ONLY
                                        - CREATE_ONLY
                                      type: string
                                    serviceAccountName:
                                      description: Service account name to use for IAM role.
                                      type: string
                                    ttl:
                                      description: Default TTL (in seconds) value for DNS records.
                                      format: int64
                                      type: integer
                                  type: object
                              type: object
                            telemetryStore:
                              description: Configure the store that TSB will use to persist application telemetry data.
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - elastic
                                - required:
                                    - elastic
                              properties:
                                elastic:
                                  properties:
                                    host:
                                      description: Elasticsearch host address (can be hostname or IP address).
                                      type: string
                                    port:
                                      description: Port Elasticsearch is listening on.
                                      format: int32
                                      type: integer
                                    protocol:
                                      description: Protocol to communicate with Elasticsearch, defaults to https.
                                      enum:
                                        - https
                                        - http
                                      type: string
                                    selfSigned:
                                      description: Use Self-Signed certificates.
                                      type: boolean
                                    version:
                                      description: 'DEPRECATED: Major version of the Elasticsearch cluster.'
                                      format: int32
                                      type: integer
                                  type: object
                              type: object
                            tier1Cluster:
                              type: boolean
                          type: object
                      type: object
                    message:
                      type: string
                  type: object
                labels:
                  additionalProperties:
                    type: string
                  type: object
                locality:
                  description: Deprecated.
                  properties:
                    region:
                      description: The geographic location of the cluster.
                      type: string
                  type: object
                namespaceScope:
                  description: Configure the default scoping of namespaces in this cluster.
                  properties:
                    exceptions:
                      description: Namespaces to be excluded form the default scope.
                      items:
                        type: string
                      type: array
                    scope:
                      enum:
                        - GLOBAL
                        - LOCAL
                      type: string
                  type: object
                namespaces:
                  items:
                    properties:
                      name:
                        type: string
                      services:
                        items:
                          properties:
                            canonicalName:
                              type: string
                            gatewayHost:
                              type: boolean
                            hostname:
                              description: The hostname by which this service is accessed.
                              type: string
                            kubernetesExternalAddresses:
                              items:
                                type: string
                              type: array
                            kubernetesServiceFqdn:
                              type: string
                            kubernetesServiceIp:
                              type: string
                            meshExternal:
                              type: boolean
                            name:
                              type: string
                            namespace:
                              description: namespace associated with the service.
                              type: string
                            numHops:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            numKubernetesEndpoints:
                              description: The number of kubernetes pods providing this service.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            numVmEndpoints:
                              description: The number of VMs providing this service.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            ports:
                              description: The set of ports on which this service is exposed.
                              items:
                                properties:
                                  kubernetesNodePort:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                  name:
                                    description: Name assigned to the port.
                                    type: string
                                  number:
                                    description: A valid non-negative integer port number.
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                            selector:
                              additionalProperties:
                                type: string
                              description: label selectors associated with the service.
                              type: object
                            spiffeIds:
                              description: List of SPIFFE identities used by the workloads of the service.
                              items:
                                type: string
                              type: array
                            subsets:
                              items:
                                type: string
                              type: array
                            tier1GatewayHost:
                              type: boolean
                            workloads:
                              description: Workloads implementing the Service.
                              items:
                                properties:
                                  address:
                                    description: Routable address of the workload.
                                    type: string
                                  isVm:
                                    description: Indicates whether the workload is kubernetes endpoint or vm.
                                    type: boolean
                                  name:
                                    description: Instance name of the workload.
                                    type: string
                                  proxy:
                                    description: Proxy details.
                                    properties:
                                      controlPlaneAddress:
                                        type: string
                                      envoyVersion:
                                        description: Envoy version of the proxy.
                                        type: string
                                      istioVersion:
                                        description: Istio version of the proxy.
                                        type: string
                                      status:
                                        additionalProperties:
                                          type: string
                                        description: Sync status for each xDS component.
                                        type: object
                                    type: object
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                network:
                  description: The network (e.g., VPC) where this cluster is present.
                  type: string
                serviceAccount:
                  description: The service account created with permissions to manage the current cluster.
                  properties:
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    etag:
                      description: The etag for the resource.
                      type: string
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    keys:
                      description: Keys associated with the service account.
                      items:
                        properties:
                          defaultToken:
                            type: string
                          encoding:
                            description: Format in which the public and private keys are encoded.
                            enum:
                              - PEM
                              - JWK
                            type: string
                          id:
                            description: Unique identifier for this key-pair.
                            type: string
                          privateKey:
                            description: The encoded private key associated with the service account.
                            type: string
                          publicKey:
                            description: The encoded public key associated with the service account.
                            type: string
                        type: object
                      type: array
                  type: object
                state:
                  properties:
                    discoveredLocality:
                      properties:
                        region:
                          description: The geographic location of the cluster.
                          type: string
                      type: object
                    istioVersions:
                      description: This shows currently running istio versions in the cluster.
                      items:
                        type: string
                      type: array
                    lastSyncTime:
                      format: date-time
                      type: string
                    provider:
                      description: cluster provider.
                      type: string
                    tsbCpVersion:
                      type: string
                    xcpVersion:
                      type: string
                  type: object
                tier1Cluster:
                  description: 'Deprecated: This flag is still honored for backward compatibility but will be ignored in future releases.'
                  nullable: true
                  type: boolean
                tokenTtl:
                  description: Lifetime of the tokens.
                  type: string
                trustDomain:
                  description: Trust domain for this cluster, used for multi-cluster routing.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: organizations.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: Organization
    listKind: OrganizationList
    plural: organizations
    shortNames:
      - to
    singular: organization
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`Organization` is the root of the Service Bridge object hierarchy.'
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: organizationsettings.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: OrganizationSetting
    listKind: OrganizationSettingList
    plural: organizationsettings
    shortNames:
      - tos
    singular: organizationsetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: Settings that apply globally to the entire organization.
              properties:
                defaultSecuritySetting:
                  description: Security settings for all proxy workloads in this organization.
                  properties:
                    authentication:
                      enum:
                        - UNSET
                        - OPTIONAL
                        - REQUIRED
                      type: string
                    authenticationSettings:
                      properties:
                        http:
                          oneOf:
                            - not:
                                anyOf:
                                  - properties:
                                      jwt:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    required:
                                      - jwt
                                  - required:
                                      - rules
                            - properties:
                                jwt:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                              required:
                                - jwt
                            - required:
                                - rules
                          properties:
                            jwt:
                              description: Authenticate an HTTP request from a JWT Token attached to it.
                              properties:
                                audiences:
                                  items:
                                    type: string
                                  type: array
                                fromHeaders:
                                  description: This field specifies the locations to extract JWT token.
                                  items:
                                    properties:
                                      name:
                                        description: The HTTP header name.
                                        type: string
                                      prefix:
                                        description: The prefix that should be stripped before decoding the token.
                                        type: string
                                    type: object
                                  type: array
                                issuer:
                                  description: Identifies the issuer that issued the JWT.
                                  type: string
                                jwks:
                                  description: JSON Web Key Set of public keys to validate signature of the JWT.
                                  type: string
                                jwksUri:
                                  type: string
                                outputClaimToHeaders:
                                  description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                  items:
                                    properties:
                                      claim:
                                        description: The name of the claim to be copied from.
                                        type: string
                                      header:
                                        description: The name of the header to be created.
                                        type: string
                                    type: object
                                  type: array
                                outputPayloadToHeader:
                                  type: string
                              type: object
                            oidc:
                              properties:
                                authScopes:
                                  description: Optional list of OAuth scopes to be claimed in the authorization request.
                                  items:
                                    type: string
                                  type: array
                                authType:
                                  description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                  enum:
                                    - DEFAULT_AUTH_TYPE
                                    - URL_ENCODED_BODY
                                    - BASIC_AUTH
                                  type: string
                                clientId:
                                  description: The client_id to be used in the authorize calls.
                                  type: string
                                clientTokenSecret:
                                  description: The name of the Kubernetes secret containing the client secret.
                                  type: string
                                grantType:
                                  enum:
                                    - DEFAULT_GRANT_TYPE
                                    - AUTHORIZATION_CODE
                                  type: string
                                provider:
                                  description: The OIDC Provider configuration.
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    authorizationEndpoint:
                                      description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                      type: string
                                    issuer:
                                      description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                      type: string
                                    jwks:
                                      description: JSON string with the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    jwksUri:
                                      description: URI for the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    tokenEndpoint:
                                      description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                      type: string
                                  type: object
                                redirectPathMatcher:
                                  type: string
                                redirectUri:
                                  type: string
                                signoutPath:
                                  description: The path to sign a user out, clearing their credential cookies.
                                  type: string
                              type: object
                            rules:
                              description: List of rules how to authenticate an HTTP request.
                              properties:
                                jwt:
                                  description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                  items:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                    properties:
                                      audiences:
                                        items:
                                          type: string
                                        type: array
                                      fromHeaders:
                                        description: This field specifies the locations to extract JWT token.
                                        items:
                                          properties:
                                            name:
                                              description: The HTTP header name.
                                              type: string
                                            prefix:
                                              description: The prefix that should be stripped before decoding the token.
                                              type: string
                                          type: object
                                        type: array
                                      issuer:
                                        description: Identifies the issuer that issued the JWT.
                                        type: string
                                      jwks:
                                        description: JSON Web Key Set of public keys to validate signature of the JWT.
                                        type: string
                                      jwksUri:
                                        type: string
                                      outputClaimToHeaders:
                                        description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                        items:
                                          properties:
                                            claim:
                                              description: The name of the claim to be copied from.
                                              type: string
                                            header:
                                              description: The name of the header to be created.
                                              type: string
                                          type: object
                                        type: array
                                      outputPayloadToHeader:
                                        type: string
                                    type: object
                                  type: array
                              type: object
                          type: object
                        trafficMode:
                          enum:
                            - UNSET
                            - OPTIONAL
                            - REQUIRED
                          type: string
                      type: object
                    authorization:
                      properties:
                        http:
                          description: This is for configuring HTTP request authorization.
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - external
                                  - required:
                                      - local
                            - required:
                                - external
                            - required:
                                - local
                          properties:
                            external:
                              properties:
                                includeRequestHeaders:
                                  items:
                                    type: string
                                  type: array
                                tls:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - files
                                          - required:
                                              - secretName
                                    - required:
                                        - files
                                    - required:
                                        - secretName
                                  properties:
                                    files:
                                      description: TLS key source from files.
                                      properties:
                                        caCertificates:
                                          type: string
                                        clientCertificate:
                                          description: Certificate file to authenticate the client.
                                          type: string
                                        privateKey:
                                          description: Private key file associated with the client certificate.
                                          type: string
                                      type: object
                                    mode:
                                      enum:
                                        - DISABLED
                                        - SIMPLE
                                        - MUTUAL
                                      type: string
                                    secretName:
                                      description: TLS key source from a Kubernetes Secret.
                                      type: string
                                    subjectAltNames:
                                      items:
                                        type: string
                                      type: array
                                  type: object
                                uri:
                                  type: string
                              type: object
                            local:
                              properties:
                                rules:
                                  items:
                                    properties:
                                      from:
                                        items:
                                          properties:
                                            jwt:
                                              description: JWT configuration to identity the subject.
                                              properties:
                                                iss:
                                                  type: string
                                                other:
                                                  additionalProperties:
                                                    type: string
                                                  description: A set of arbitrary claims that are required to qualify the subject.
                                                  type: object
                                                sub:
                                                  type: string
                                              type: object
                                          type: object
                                        type: array
                                      name:
                                        description: A friendly name to identify the binding.
                                        type: string
                                      to:
                                        items:
                                          properties:
                                            methods:
                                              description: The HTTP methods that are allowed by this rule.
                                              items:
                                                type: string
                                              type: array
                                            paths:
                                              description: The request path where the request is made against.
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              type: object
                          type: object
                        mode:
                          description: A short cut for specifying the set of allowed callers.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - DISABLED
                            - CUSTOM
                            - RULES
                          type: string
                        rules:
                          properties:
                            allow:
                              description: Allow specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            deny:
                              description: Deny specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            denyAll:
                              description: Deny all specifies whether all requests should be rejected.
                              type: boolean
                          type: object
                        serviceAccounts:
                          items:
                            type: string
                          type: array
                      type: object
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    etag:
                      description: The etag for the resource.
                      type: string
                    extension:
                      items:
                        properties:
                          config:
                            description: Configuration parameters sent to the WASM plugin execution.
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          fqn:
                            description: Fqn of the extension to be executed.
                            type: string
                          match:
                            description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                            items:
                              properties:
                                mode:
                                  description: Criteria for selecting traffic by their direction.
                                  enum:
                                    - UNDEFINED
                                    - CLIENT
                                    - SERVER
                                    - CLIENT_AND_SERVER
                                  type: string
                                ports:
                                  description: Criteria for selecting traffic by their destination port.
                                  items:
                                    properties:
                                      number:
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      type: array
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    propagationStrategy:
                      enum:
                        - REPLACE
                        - STRICTER
                      type: string
                    waf:
                      description: 'NOTICE: this feature is in alpha stage and under active development.'
                      properties:
                        rules:
                          description: Rules to be leveraged by WAF.
                          items:
                            type: string
                          type: array
                      type: object
                  type: object
                defaultTrafficSetting:
                  description: Traffic settings for all proxy workloads in this organization.
                  properties:
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    egress:
                      properties:
                        host:
                          description: Specifies the egress gateway hostname.
                          type: string
                        port:
                          description: Deprecated.
                          format: int32
                          type: integer
                      type: object
                    etag:
                      description: The etag for the resource.
                      type: string
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    rateLimiting:
                      description: Configuration for rate limiting requests.
                      oneOf:
                        - not:
                            anyOf:
                              - required:
                                  - settings
                              - required:
                                  - externalService
                        - required:
                            - settings
                        - required:
                            - externalService
                      properties:
                        externalService:
                          description: Configure ratelimiting using an external ratelimit server.
                          properties:
                            domain:
                              description: The rate limit domain to use when calling the rate limit service.
                              type: string
                            failClosed:
                              type: boolean
                            rateLimitServerUri:
                              description: The URI at which the external rate limit server can be reached.
                              type: string
                            rules:
                              description: A set of rate limit rules.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions that are to be applied for this rate limit configuration.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - sourceCluster
                                              - required:
                                                  - destinationCluster
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - requestHeaders
                                              - required:
                                                  - headerValueMatch
                                        - required:
                                            - sourceCluster
                                        - required:
                                            - destinationCluster
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - requestHeaders
                                        - required:
                                            - headerValueMatch
                                      properties:
                                        destinationCluster:
                                          description: Rate limit on destination envoy cluster.
                                          type: object
                                        headerValueMatch:
                                          description: Rate limit on the existence of certain request headers.
                                          properties:
                                            descriptorValue:
                                              description: The value to use in the descriptor entry.
                                              type: string
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            headers:
                                              additionalProperties:
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on remote address of client.
                                          type: object
                                        requestHeaders:
                                          description: Rate limit on the value of certain request headers.
                                          properties:
                                            descriptorKey:
                                              description: The key to use in the descriptor entry.
                                              type: string
                                            headerName:
                                              description: The header name to be queried from the request headers.
                                              type: string
                                          type: object
                                        sourceCluster:
                                          description: Rate limit on source envoy cluster.
                                          type: object
                                      type: object
                                    type: array
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the external rate limit server RPC.
                              type: string
                            tls:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - files
                                      - required:
                                          - secretName
                                - required:
                                    - files
                                - required:
                                    - secretName
                              properties:
                                files:
                                  description: TLS key source from files.
                                  properties:
                                    caCertificates:
                                      type: string
                                    clientCertificate:
                                      description: Certificate file to authenticate the client.
                                      type: string
                                    privateKey:
                                      description: Private key file associated with the client certificate.
                                      type: string
                                  type: object
                                mode:
                                  enum:
                                    - DISABLED
                                    - SIMPLE
                                    - MUTUAL
                                  type: string
                                secretName:
                                  description: TLS key source from a Kubernetes Secret.
                                  type: string
                                subjectAltNames:
                                  items:
                                    type: string
                                  type: array
                              type: object
                          type: object
                        settings:
                          properties:
                            failClosed:
                              type: boolean
                            rules:
                              description: A list of rules for ratelimiting.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions to define each ratelimit rule.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - header
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - header
                                      properties:
                                        header:
                                          description: Rate limit on certain HTTP headers.
                                          properties:
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            name:
                                              description: Name of the header to match on.
                                              type: string
                                            value:
                                              description: Value of the header to match on if matching on a specific value.
                                              oneOf:
                                                - not:
                                                    anyOf:
                                                      - required:
                                                          - exact
                                                      - required:
                                                          - prefix
                                                      - required:
                                                          - regex
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                              properties:
                                                exact:
                                                  description: Exact string match.
                                                  type: string
                                                prefix:
                                                  description: Prefix-based match.
                                                  type: string
                                                regex:
                                                  description: ECMAscript style regex-based match.
                                                  type: string
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on the remote address of client.
                                          properties:
                                            value:
                                              description: Ratelimit on a specific remote address.
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  limit:
                                    description: The ratelimit value that will be configured for the above rules.
                                    properties:
                                      requestsPerUnit:
                                        description: Specifies the value of the rate limit.
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                      unit:
                                        description: Specifies the unit of time for rate limit.
                                        enum:
                                          - UNKNOWN
                                          - SECOND
                                          - MINUTE
                                          - HOUR
                                          - DAY
                                        type: string
                                    type: object
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the rate limit server RPC.
                              type: string
                          type: object
                      type: object
                    reachability:
                      properties:
                        hosts:
                          items:
                            type: string
                          type: array
                        mode:
                          description: A short cut for specifying the set of services accessed by the workload.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - CUSTOM
                          type: string
                      type: object
                    resilience:
                      properties:
                        circuitBreakerSensitivity:
                          enum:
                            - UNSET
                            - LOW
                            - MEDIUM
                            - HIGH
                          type: string
                        httpRequestTimeout:
                          description: Timeout for HTTP requests.
                          type: string
                        httpRetries:
                          description: Retry policy for HTTP requests.
                          properties:
                            attempts:
                              description: Number of retries for a given request.
                              format: int32
                              type: integer
                            perTryTimeout:
                              description: Timeout per retry attempt for a given request.
                              type: string
                            retryOn:
                              description: Specifies the conditions under which retry takes place.
                              type: string
                          type: object
                        keepAlive:
                          description: Keep Alive Settings.
                          properties:
                            tcp:
                              description: TCP Keep Alive settings associated with the upstream and downstream TCP connections.
                              properties:
                                downstream:
                                  description: TCP Keep Alive Settings associated with the downstream (client) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                                upstream:
                                  description: TCP Keep Alive Settings associated with the upstream (backend) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                              type: object
                          type: object
                        tcpKeepalive:
                          description: Deprecated.
                          nullable: true
                          type: boolean
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                networkSettings:
                  description: Reachability between clusters on various networks.
                  properties:
                    networkReachability:
                      additionalProperties:
                        type: string
                      description: Reachability between clusters on various networks.
                      type: object
                  type: object
                regionalFailover:
                  description: Default locality routing settings for all gateways.
                  items:
                    properties:
                      from:
                        description: Originating region.
                        type: string
                      to:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: serviceaccounts.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: ServiceAccount
    listKind: ServiceAccountList
    plural: serviceaccounts
    shortNames:
      - tsa
    singular: serviceaccount
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`ServiceAccount` represents a service account that can be used to access the TSB platform.'
              properties:
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                keys:
                  description: Keys associated with the service account.
                  items:
                    properties:
                      defaultToken:
                        type: string
                      encoding:
                        description: Format in which the public and private keys are encoded.
                        enum:
                          - PEM
                          - JWK
                        type: string
                      id:
                        description: Unique identifier for this key-pair.
                        type: string
                      privateKey:
                        description: The encoded private key associated with the service account.
                        type: string
                      publicKey:
                        description: The encoded public key associated with the service account.
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: teams.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: Team
    listKind: TeamList
    plural: teams
    shortNames:
      - ttm
    singular: team
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.sourceType
          name: Source
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`Team` is a named collection of users under a tenant.'
              properties:
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                members:
                  description: List of members under the team.
                  items:
                    type: string
                  type: array
                sourceType:
                  description: Where the team comes from.
                  enum:
                    - INVALID
                    - LDAP
                    - LOCAL
                    - AZURE
                    - MANUAL
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tenants.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: Tenant
    listKind: TenantList
    plural: tenants
    shortNames:
      - tt
    singular: tenant
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`Tenant` is a self-contained entity within an organization in the Service Bridge hierarchy.'
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                securityDomain:
                  description: Security domains can be used to group different resources under the same security domain.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tenantsettings.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: TenantSetting
    listKind: TenantSettingList
    plural: tenantsettings
    shortNames:
      - tts
    singular: tenantsetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: Default settings that apply to all workspaces under a tenant.
              properties:
                defaultSecuritySetting:
                  description: Security settings for all proxy workloads in this tenant.
                  properties:
                    authentication:
                      enum:
                        - UNSET
                        - OPTIONAL
                        - REQUIRED
                      type: string
                    authenticationSettings:
                      properties:
                        http:
                          oneOf:
                            - not:
                                anyOf:
                                  - properties:
                                      jwt:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    required:
                                      - jwt
                                  - required:
                                      - rules
                            - properties:
                                jwt:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                              required:
                                - jwt
                            - required:
                                - rules
                          properties:
                            jwt:
                              description: Authenticate an HTTP request from a JWT Token attached to it.
                              properties:
                                audiences:
                                  items:
                                    type: string
                                  type: array
                                fromHeaders:
                                  description: This field specifies the locations to extract JWT token.
                                  items:
                                    properties:
                                      name:
                                        description: The HTTP header name.
                                        type: string
                                      prefix:
                                        description: The prefix that should be stripped before decoding the token.
                                        type: string
                                    type: object
                                  type: array
                                issuer:
                                  description: Identifies the issuer that issued the JWT.
                                  type: string
                                jwks:
                                  description: JSON Web Key Set of public keys to validate signature of the JWT.
                                  type: string
                                jwksUri:
                                  type: string
                                outputClaimToHeaders:
                                  description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                  items:
                                    properties:
                                      claim:
                                        description: The name of the claim to be copied from.
                                        type: string
                                      header:
                                        description: The name of the header to be created.
                                        type: string
                                    type: object
                                  type: array
                                outputPayloadToHeader:
                                  type: string
                              type: object
                            oidc:
                              properties:
                                authScopes:
                                  description: Optional list of OAuth scopes to be claimed in the authorization request.
                                  items:
                                    type: string
                                  type: array
                                authType:
                                  description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                  enum:
                                    - DEFAULT_AUTH_TYPE
                                    - URL_ENCODED_BODY
                                    - BASIC_AUTH
                                  type: string
                                clientId:
                                  description: The client_id to be used in the authorize calls.
                                  type: string
                                clientTokenSecret:
                                  description: The name of the Kubernetes secret containing the client secret.
                                  type: string
                                grantType:
                                  enum:
                                    - DEFAULT_GRANT_TYPE
                                    - AUTHORIZATION_CODE
                                  type: string
                                provider:
                                  description: The OIDC Provider configuration.
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    authorizationEndpoint:
                                      description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                      type: string
                                    issuer:
                                      description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                      type: string
                                    jwks:
                                      description: JSON string with the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    jwksUri:
                                      description: URI for the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    tokenEndpoint:
                                      description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                      type: string
                                  type: object
                                redirectPathMatcher:
                                  type: string
                                redirectUri:
                                  type: string
                                signoutPath:
                                  description: The path to sign a user out, clearing their credential cookies.
                                  type: string
                              type: object
                            rules:
                              description: List of rules how to authenticate an HTTP request.
                              properties:
                                jwt:
                                  description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                  items:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                    properties:
                                      audiences:
                                        items:
                                          type: string
                                        type: array
                                      fromHeaders:
                                        description: This field specifies the locations to extract JWT token.
                                        items:
                                          properties:
                                            name:
                                              description: The HTTP header name.
                                              type: string
                                            prefix:
                                              description: The prefix that should be stripped before decoding the token.
                                              type: string
                                          type: object
                                        type: array
                                      issuer:
                                        description: Identifies the issuer that issued the JWT.
                                        type: string
                                      jwks:
                                        description: JSON Web Key Set of public keys to validate signature of the JWT.
                                        type: string
                                      jwksUri:
                                        type: string
                                      outputClaimToHeaders:
                                        description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                        items:
                                          properties:
                                            claim:
                                              description: The name of the claim to be copied from.
                                              type: string
                                            header:
                                              description: The name of the header to be created.
                                              type: string
                                          type: object
                                        type: array
                                      outputPayloadToHeader:
                                        type: string
                                    type: object
                                  type: array
                              type: object
                          type: object
                        trafficMode:
                          enum:
                            - UNSET
                            - OPTIONAL
                            - REQUIRED
                          type: string
                      type: object
                    authorization:
                      properties:
                        http:
                          description: This is for configuring HTTP request authorization.
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - external
                                  - required:
                                      - local
                            - required:
                                - external
                            - required:
                                - local
                          properties:
                            external:
                              properties:
                                includeRequestHeaders:
                                  items:
                                    type: string
                                  type: array
                                tls:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - files
                                          - required:
                                              - secretName
                                    - required:
                                        - files
                                    - required:
                                        - secretName
                                  properties:
                                    files:
                                      description: TLS key source from files.
                                      properties:
                                        caCertificates:
                                          type: string
                                        clientCertificate:
                                          description: Certificate file to authenticate the client.
                                          type: string
                                        privateKey:
                                          description: Private key file associated with the client certificate.
                                          type: string
                                      type: object
                                    mode:
                                      enum:
                                        - DISABLED
                                        - SIMPLE
                                        - MUTUAL
                                      type: string
                                    secretName:
                                      description: TLS key source from a Kubernetes Secret.
                                      type: string
                                    subjectAltNames:
                                      items:
                                        type: string
                                      type: array
                                  type: object
                                uri:
                                  type: string
                              type: object
                            local:
                              properties:
                                rules:
                                  items:
                                    properties:
                                      from:
                                        items:
                                          properties:
                                            jwt:
                                              description: JWT configuration to identity the subject.
                                              properties:
                                                iss:
                                                  type: string
                                                other:
                                                  additionalProperties:
                                                    type: string
                                                  description: A set of arbitrary claims that are required to qualify the subject.
                                                  type: object
                                                sub:
                                                  type: string
                                              type: object
                                          type: object
                                        type: array
                                      name:
                                        description: A friendly name to identify the binding.
                                        type: string
                                      to:
                                        items:
                                          properties:
                                            methods:
                                              description: The HTTP methods that are allowed by this rule.
                                              items:
                                                type: string
                                              type: array
                                            paths:
                                              description: The request path where the request is made against.
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              type: object
                          type: object
                        mode:
                          description: A short cut for specifying the set of allowed callers.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - DISABLED
                            - CUSTOM
                            - RULES
                          type: string
                        rules:
                          properties:
                            allow:
                              description: Allow specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            deny:
                              description: Deny specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            denyAll:
                              description: Deny all specifies whether all requests should be rejected.
                              type: boolean
                          type: object
                        serviceAccounts:
                          items:
                            type: string
                          type: array
                      type: object
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    etag:
                      description: The etag for the resource.
                      type: string
                    extension:
                      items:
                        properties:
                          config:
                            description: Configuration parameters sent to the WASM plugin execution.
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          fqn:
                            description: Fqn of the extension to be executed.
                            type: string
                          match:
                            description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                            items:
                              properties:
                                mode:
                                  description: Criteria for selecting traffic by their direction.
                                  enum:
                                    - UNDEFINED
                                    - CLIENT
                                    - SERVER
                                    - CLIENT_AND_SERVER
                                  type: string
                                ports:
                                  description: Criteria for selecting traffic by their destination port.
                                  items:
                                    properties:
                                      number:
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      type: array
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    propagationStrategy:
                      enum:
                        - REPLACE
                        - STRICTER
                      type: string
                    waf:
                      description: 'NOTICE: this feature is in alpha stage and under active development.'
                      properties:
                        rules:
                          description: Rules to be leveraged by WAF.
                          items:
                            type: string
                          type: array
                      type: object
                  type: object
                defaultTrafficSetting:
                  description: Traffic settings for all proxy workloads in this tenant.
                  properties:
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    egress:
                      properties:
                        host:
                          description: Specifies the egress gateway hostname.
                          type: string
                        port:
                          description: Deprecated.
                          format: int32
                          type: integer
                      type: object
                    etag:
                      description: The etag for the resource.
                      type: string
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    rateLimiting:
                      description: Configuration for rate limiting requests.
                      oneOf:
                        - not:
                            anyOf:
                              - required:
                                  - settings
                              - required:
                                  - externalService
                        - required:
                            - settings
                        - required:
                            - externalService
                      properties:
                        externalService:
                          description: Configure ratelimiting using an external ratelimit server.
                          properties:
                            domain:
                              description: The rate limit domain to use when calling the rate limit service.
                              type: string
                            failClosed:
                              type: boolean
                            rateLimitServerUri:
                              description: The URI at which the external rate limit server can be reached.
                              type: string
                            rules:
                              description: A set of rate limit rules.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions that are to be applied for this rate limit configuration.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - sourceCluster
                                              - required:
                                                  - destinationCluster
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - requestHeaders
                                              - required:
                                                  - headerValueMatch
                                        - required:
                                            - sourceCluster
                                        - required:
                                            - destinationCluster
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - requestHeaders
                                        - required:
                                            - headerValueMatch
                                      properties:
                                        destinationCluster:
                                          description: Rate limit on destination envoy cluster.
                                          type: object
                                        headerValueMatch:
                                          description: Rate limit on the existence of certain request headers.
                                          properties:
                                            descriptorValue:
                                              description: The value to use in the descriptor entry.
                                              type: string
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            headers:
                                              additionalProperties:
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on remote address of client.
                                          type: object
                                        requestHeaders:
                                          description: Rate limit on the value of certain request headers.
                                          properties:
                                            descriptorKey:
                                              description: The key to use in the descriptor entry.
                                              type: string
                                            headerName:
                                              description: The header name to be queried from the request headers.
                                              type: string
                                          type: object
                                        sourceCluster:
                                          description: Rate limit on source envoy cluster.
                                          type: object
                                      type: object
                                    type: array
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the external rate limit server RPC.
                              type: string
                            tls:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - files
                                      - required:
                                          - secretName
                                - required:
                                    - files
                                - required:
                                    - secretName
                              properties:
                                files:
                                  description: TLS key source from files.
                                  properties:
                                    caCertificates:
                                      type: string
                                    clientCertificate:
                                      description: Certificate file to authenticate the client.
                                      type: string
                                    privateKey:
                                      description: Private key file associated with the client certificate.
                                      type: string
                                  type: object
                                mode:
                                  enum:
                                    - DISABLED
                                    - SIMPLE
                                    - MUTUAL
                                  type: string
                                secretName:
                                  description: TLS key source from a Kubernetes Secret.
                                  type: string
                                subjectAltNames:
                                  items:
                                    type: string
                                  type: array
                              type: object
                          type: object
                        settings:
                          properties:
                            failClosed:
                              type: boolean
                            rules:
                              description: A list of rules for ratelimiting.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions to define each ratelimit rule.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - header
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - header
                                      properties:
                                        header:
                                          description: Rate limit on certain HTTP headers.
                                          properties:
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            name:
                                              description: Name of the header to match on.
                                              type: string
                                            value:
                                              description: Value of the header to match on if matching on a specific value.
                                              oneOf:
                                                - not:
                                                    anyOf:
                                                      - required:
                                                          - exact
                                                      - required:
                                                          - prefix
                                                      - required:
                                                          - regex
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                              properties:
                                                exact:
                                                  description: Exact string match.
                                                  type: string
                                                prefix:
                                                  description: Prefix-based match.
                                                  type: string
                                                regex:
                                                  description: ECMAscript style regex-based match.
                                                  type: string
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on the remote address of client.
                                          properties:
                                            value:
                                              description: Ratelimit on a specific remote address.
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  limit:
                                    description: The ratelimit value that will be configured for the above rules.
                                    properties:
                                      requestsPerUnit:
                                        description: Specifies the value of the rate limit.
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                      unit:
                                        description: Specifies the unit of time for rate limit.
                                        enum:
                                          - UNKNOWN
                                          - SECOND
                                          - MINUTE
                                          - HOUR
                                          - DAY
                                        type: string
                                    type: object
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the rate limit server RPC.
                              type: string
                          type: object
                      type: object
                    reachability:
                      properties:
                        hosts:
                          items:
                            type: string
                          type: array
                        mode:
                          description: A short cut for specifying the set of services accessed by the workload.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - CUSTOM
                          type: string
                      type: object
                    resilience:
                      properties:
                        circuitBreakerSensitivity:
                          enum:
                            - UNSET
                            - LOW
                            - MEDIUM
                            - HIGH
                          type: string
                        httpRequestTimeout:
                          description: Timeout for HTTP requests.
                          type: string
                        httpRetries:
                          description: Retry policy for HTTP requests.
                          properties:
                            attempts:
                              description: Number of retries for a given request.
                              format: int32
                              type: integer
                            perTryTimeout:
                              description: Timeout per retry attempt for a given request.
                              type: string
                            retryOn:
                              description: Specifies the conditions under which retry takes place.
                              type: string
                          type: object
                        keepAlive:
                          description: Keep Alive Settings.
                          properties:
                            tcp:
                              description: TCP Keep Alive settings associated with the upstream and downstream TCP connections.
                              properties:
                                downstream:
                                  description: TCP Keep Alive Settings associated with the downstream (client) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                                upstream:
                                  description: TCP Keep Alive Settings associated with the upstream (backend) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                              type: object
                          type: object
                        tcpKeepalive:
                          description: Deprecated.
                          nullable: true
                          type: boolean
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: workspaces.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: Workspace
    listKind: WorkspaceList
    plural: workspaces
    shortNames:
      - twk
    singular: workspace
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.privileged
          name: Privileged
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: A Workspace is a collection of related namespaces in one or more clusters.
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                isolationBoundary:
                  description: Istio Isolation Boundary name to which this workspace belongs.
                  type: string
                namespaceSelector:
                  description: Set of namespaces owned exclusively by this workspace.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
                privileged:
                  nullable: true
                  type: boolean
                securityDomain:
                  description: Security domains can be used to group different resources under the same security domain.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: workspacesettings.tsb.tetrate.io
spec:
  group: tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: WorkspaceSetting
    listKind: WorkspaceSettingList
    plural: workspacesettings
    shortNames:
      - tws
    singular: workspacesetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: Default security and traffic settings for all proxy workloads in the workspace.
              properties:
                defaultEastWestGatewaySettings:
                  description: Default east west gateway settings specifies workspace-wide east-west gateway configuration.
                  items:
                    properties:
                      configGenerationMetadata:
                        description: Metadata values that will be add into the Istio generated configurations.
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                            type: object
                          labels:
                            additionalProperties:
                              type: string
                            description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                            type: object
                        type: object
                      exposedServices:
                        items:
                          properties:
                            serviceLabels:
                              additionalProperties:
                                type: string
                              type: object
                          type: object
                        type: array
                      workloadSelector:
                        properties:
                          labels:
                            additionalProperties:
                              type: string
                            type: object
                          namespace:
                            description: The namespace where the workload resides.
                            type: string
                        type: object
                    type: object
                  type: array
                defaultSecuritySetting:
                  description: Security settings for all proxy workloads in this workspace.
                  properties:
                    authentication:
                      enum:
                        - UNSET
                        - OPTIONAL
                        - REQUIRED
                      type: string
                    authenticationSettings:
                      properties:
                        http:
                          oneOf:
                            - not:
                                anyOf:
                                  - properties:
                                      jwt:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    required:
                                      - jwt
                                  - required:
                                      - rules
                            - properties:
                                jwt:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                              required:
                                - jwt
                            - required:
                                - rules
                          properties:
                            jwt:
                              description: Authenticate an HTTP request from a JWT Token attached to it.
                              properties:
                                audiences:
                                  items:
                                    type: string
                                  type: array
                                fromHeaders:
                                  description: This field specifies the locations to extract JWT token.
                                  items:
                                    properties:
                                      name:
                                        description: The HTTP header name.
                                        type: string
                                      prefix:
                                        description: The prefix that should be stripped before decoding the token.
                                        type: string
                                    type: object
                                  type: array
                                issuer:
                                  description: Identifies the issuer that issued the JWT.
                                  type: string
                                jwks:
                                  description: JSON Web Key Set of public keys to validate signature of the JWT.
                                  type: string
                                jwksUri:
                                  type: string
                                outputClaimToHeaders:
                                  description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                  items:
                                    properties:
                                      claim:
                                        description: The name of the claim to be copied from.
                                        type: string
                                      header:
                                        description: The name of the header to be created.
                                        type: string
                                    type: object
                                  type: array
                                outputPayloadToHeader:
                                  type: string
                              type: object
                            oidc:
                              properties:
                                authScopes:
                                  description: Optional list of OAuth scopes to be claimed in the authorization request.
                                  items:
                                    type: string
                                  type: array
                                authType:
                                  description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                  enum:
                                    - DEFAULT_AUTH_TYPE
                                    - URL_ENCODED_BODY
                                    - BASIC_AUTH
                                  type: string
                                clientId:
                                  description: The client_id to be used in the authorize calls.
                                  type: string
                                clientTokenSecret:
                                  description: The name of the Kubernetes secret containing the client secret.
                                  type: string
                                grantType:
                                  enum:
                                    - DEFAULT_GRANT_TYPE
                                    - AUTHORIZATION_CODE
                                  type: string
                                provider:
                                  description: The OIDC Provider configuration.
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    authorizationEndpoint:
                                      description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                      type: string
                                    issuer:
                                      description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                      type: string
                                    jwks:
                                      description: JSON string with the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    jwksUri:
                                      description: URI for the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    tokenEndpoint:
                                      description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                      type: string
                                  type: object
                                redirectPathMatcher:
                                  type: string
                                redirectUri:
                                  type: string
                                signoutPath:
                                  description: The path to sign a user out, clearing their credential cookies.
                                  type: string
                              type: object
                            rules:
                              description: List of rules how to authenticate an HTTP request.
                              properties:
                                jwt:
                                  description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                  items:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                    properties:
                                      audiences:
                                        items:
                                          type: string
                                        type: array
                                      fromHeaders:
                                        description: This field specifies the locations to extract JWT token.
                                        items:
                                          properties:
                                            name:
                                              description: The HTTP header name.
                                              type: string
                                            prefix:
                                              description: The prefix that should be stripped before decoding the token.
                                              type: string
                                          type: object
                                        type: array
                                      issuer:
                                        description: Identifies the issuer that issued the JWT.
                                        type: string
                                      jwks:
                                        description: JSON Web Key Set of public keys to validate signature of the JWT.
                                        type: string
                                      jwksUri:
                                        type: string
                                      outputClaimToHeaders:
                                        description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                        items:
                                          properties:
                                            claim:
                                              description: The name of the claim to be copied from.
                                              type: string
                                            header:
                                              description: The name of the header to be created.
                                              type: string
                                          type: object
                                        type: array
                                      outputPayloadToHeader:
                                        type: string
                                    type: object
                                  type: array
                              type: object
                          type: object
                        trafficMode:
                          enum:
                            - UNSET
                            - OPTIONAL
                            - REQUIRED
                          type: string
                      type: object
                    authorization:
                      properties:
                        http:
                          description: This is for configuring HTTP request authorization.
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - external
                                  - required:
                                      - local
                            - required:
                                - external
                            - required:
                                - local
                          properties:
                            external:
                              properties:
                                includeRequestHeaders:
                                  items:
                                    type: string
                                  type: array
                                tls:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - files
                                          - required:
                                              - secretName
                                    - required:
                                        - files
                                    - required:
                                        - secretName
                                  properties:
                                    files:
                                      description: TLS key source from files.
                                      properties:
                                        caCertificates:
                                          type: string
                                        clientCertificate:
                                          description: Certificate file to authenticate the client.
                                          type: string
                                        privateKey:
                                          description: Private key file associated with the client certificate.
                                          type: string
                                      type: object
                                    mode:
                                      enum:
                                        - DISABLED
                                        - SIMPLE
                                        - MUTUAL
                                      type: string
                                    secretName:
                                      description: TLS key source from a Kubernetes Secret.
                                      type: string
                                    subjectAltNames:
                                      items:
                                        type: string
                                      type: array
                                  type: object
                                uri:
                                  type: string
                              type: object
                            local:
                              properties:
                                rules:
                                  items:
                                    properties:
                                      from:
                                        items:
                                          properties:
                                            jwt:
                                              description: JWT configuration to identity the subject.
                                              properties:
                                                iss:
                                                  type: string
                                                other:
                                                  additionalProperties:
                                                    type: string
                                                  description: A set of arbitrary claims that are required to qualify the subject.
                                                  type: object
                                                sub:
                                                  type: string
                                              type: object
                                          type: object
                                        type: array
                                      name:
                                        description: A friendly name to identify the binding.
                                        type: string
                                      to:
                                        items:
                                          properties:
                                            methods:
                                              description: The HTTP methods that are allowed by this rule.
                                              items:
                                                type: string
                                              type: array
                                            paths:
                                              description: The request path where the request is made against.
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              type: object
                          type: object
                        mode:
                          description: A short cut for specifying the set of allowed callers.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - DISABLED
                            - CUSTOM
                            - RULES
                          type: string
                        rules:
                          properties:
                            allow:
                              description: Allow specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            deny:
                              description: Deny specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            denyAll:
                              description: Deny all specifies whether all requests should be rejected.
                              type: boolean
                          type: object
                        serviceAccounts:
                          items:
                            type: string
                          type: array
                      type: object
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    etag:
                      description: The etag for the resource.
                      type: string
                    extension:
                      items:
                        properties:
                          config:
                            description: Configuration parameters sent to the WASM plugin execution.
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          fqn:
                            description: Fqn of the extension to be executed.
                            type: string
                          match:
                            description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                            items:
                              properties:
                                mode:
                                  description: Criteria for selecting traffic by their direction.
                                  enum:
                                    - UNDEFINED
                                    - CLIENT
                                    - SERVER
                                    - CLIENT_AND_SERVER
                                  type: string
                                ports:
                                  description: Criteria for selecting traffic by their destination port.
                                  items:
                                    properties:
                                      number:
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      type: array
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    propagationStrategy:
                      enum:
                        - REPLACE
                        - STRICTER
                      type: string
                    waf:
                      description: 'NOTICE: this feature is in alpha stage and under active development.'
                      properties:
                        rules:
                          description: Rules to be leveraged by WAF.
                          items:
                            type: string
                          type: array
                      type: object
                  type: object
                defaultTrafficSetting:
                  description: Traffic settings for all proxy workloads in this workspace.
                  properties:
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    egress:
                      properties:
                        host:
                          description: Specifies the egress gateway hostname.
                          type: string
                        port:
                          description: Deprecated.
                          format: int32
                          type: integer
                      type: object
                    etag:
                      description: The etag for the resource.
                      type: string
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    rateLimiting:
                      description: Configuration for rate limiting requests.
                      oneOf:
                        - not:
                            anyOf:
                              - required:
                                  - settings
                              - required:
                                  - externalService
                        - required:
                            - settings
                        - required:
                            - externalService
                      properties:
                        externalService:
                          description: Configure ratelimiting using an external ratelimit server.
                          properties:
                            domain:
                              description: The rate limit domain to use when calling the rate limit service.
                              type: string
                            failClosed:
                              type: boolean
                            rateLimitServerUri:
                              description: The URI at which the external rate limit server can be reached.
                              type: string
                            rules:
                              description: A set of rate limit rules.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions that are to be applied for this rate limit configuration.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - sourceCluster
                                              - required:
                                                  - destinationCluster
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - requestHeaders
                                              - required:
                                                  - headerValueMatch
                                        - required:
                                            - sourceCluster
                                        - required:
                                            - destinationCluster
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - requestHeaders
                                        - required:
                                            - headerValueMatch
                                      properties:
                                        destinationCluster:
                                          description: Rate limit on destination envoy cluster.
                                          type: object
                                        headerValueMatch:
                                          description: Rate limit on the existence of certain request headers.
                                          properties:
                                            descriptorValue:
                                              description: The value to use in the descriptor entry.
                                              type: string
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            headers:
                                              additionalProperties:
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on remote address of client.
                                          type: object
                                        requestHeaders:
                                          description: Rate limit on the value of certain request headers.
                                          properties:
                                            descriptorKey:
                                              description: The key to use in the descriptor entry.
                                              type: string
                                            headerName:
                                              description: The header name to be queried from the request headers.
                                              type: string
                                          type: object
                                        sourceCluster:
                                          description: Rate limit on source envoy cluster.
                                          type: object
                                      type: object
                                    type: array
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the external rate limit server RPC.
                              type: string
                            tls:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - files
                                      - required:
                                          - secretName
                                - required:
                                    - files
                                - required:
                                    - secretName
                              properties:
                                files:
                                  description: TLS key source from files.
                                  properties:
                                    caCertificates:
                                      type: string
                                    clientCertificate:
                                      description: Certificate file to authenticate the client.
                                      type: string
                                    privateKey:
                                      description: Private key file associated with the client certificate.
                                      type: string
                                  type: object
                                mode:
                                  enum:
                                    - DISABLED
                                    - SIMPLE
                                    - MUTUAL
                                  type: string
                                secretName:
                                  description: TLS key source from a Kubernetes Secret.
                                  type: string
                                subjectAltNames:
                                  items:
                                    type: string
                                  type: array
                              type: object
                          type: object
                        settings:
                          properties:
                            failClosed:
                              type: boolean
                            rules:
                              description: A list of rules for ratelimiting.
                              items:
                                properties:
                                  dimensions:
                                    description: A list of dimensions to define each ratelimit rule.
                                    items:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - remoteAddress
                                              - required:
                                                  - header
                                        - required:
                                            - remoteAddress
                                        - required:
                                            - header
                                      properties:
                                        header:
                                          description: Rate limit on certain HTTP headers.
                                          properties:
                                            dontMatch:
                                              description: If set to true, the condition will be met when the header value does not match.
                                              type: boolean
                                            name:
                                              description: Name of the header to match on.
                                              type: string
                                            value:
                                              description: Value of the header to match on if matching on a specific value.
                                              oneOf:
                                                - not:
                                                    anyOf:
                                                      - required:
                                                          - exact
                                                      - required:
                                                          - prefix
                                                      - required:
                                                          - regex
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                              properties:
                                                exact:
                                                  description: Exact string match.
                                                  type: string
                                                prefix:
                                                  description: Prefix-based match.
                                                  type: string
                                                regex:
                                                  description: ECMAscript style regex-based match.
                                                  type: string
                                              type: object
                                          type: object
                                        remoteAddress:
                                          description: Rate limit on the remote address of client.
                                          properties:
                                            value:
                                              description: Ratelimit on a specific remote address.
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  limit:
                                    description: The ratelimit value that will be configured for the above rules.
                                    properties:
                                      requestsPerUnit:
                                        description: Specifies the value of the rate limit.
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                      unit:
                                        description: Specifies the unit of time for rate limit.
                                        enum:
                                          - UNKNOWN
                                          - SECOND
                                          - MINUTE
                                          - HOUR
                                          - DAY
                                        type: string
                                    type: object
                                type: object
                              type: array
                            timeout:
                              description: The timeout in seconds for the rate limit server RPC.
                              type: string
                          type: object
                      type: object
                    reachability:
                      properties:
                        hosts:
                          items:
                            type: string
                          type: array
                        mode:
                          description: A short cut for specifying the set of services accessed by the workload.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - CUSTOM
                          type: string
                      type: object
                    resilience:
                      properties:
                        circuitBreakerSensitivity:
                          enum:
                            - UNSET
                            - LOW
                            - MEDIUM
                            - HIGH
                          type: string
                        httpRequestTimeout:
                          description: Timeout for HTTP requests.
                          type: string
                        httpRetries:
                          description: Retry policy for HTTP requests.
                          properties:
                            attempts:
                              description: Number of retries for a given request.
                              format: int32
                              type: integer
                            perTryTimeout:
                              description: Timeout per retry attempt for a given request.
                              type: string
                            retryOn:
                              description: Specifies the conditions under which retry takes place.
                              type: string
                          type: object
                        keepAlive:
                          description: Keep Alive Settings.
                          properties:
                            tcp:
                              description: TCP Keep Alive settings associated with the upstream and downstream TCP connections.
                              properties:
                                downstream:
                                  description: TCP Keep Alive Settings associated with the downstream (client) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                                upstream:
                                  description: TCP Keep Alive Settings associated with the upstream (backend) connection.
                                  properties:
                                    idleTime:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    interval:
                                      description: The number of seconds between keep-alive probes.
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                    probes:
                                      maximum: 4294967295
                                      minimum: 0
                                      nullable: true
                                      type: integer
                                  type: object
                              type: object
                          type: object
                        tcpKeepalive:
                          description: Deprecated.
                          nullable: true
                          type: boolean
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                hostsReachability:
                  description: Hosts reachability defines the list of hostnames that this workspace can reach.
                  properties:
                    hostnames:
                      description: The Gateway hostname that can be one of the following.
                      items:
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - exact
                                - required:
                                    - prefix
                                - required:
                                    - regex
                          - required:
                              - exact
                          - required:
                              - prefix
                          - required:
                              - regex
                        properties:
                          exact:
                            description: Exact string match.
                            type: string
                          prefix:
                            description: Prefix-based match.
                            type: string
                          regex:
                            description: ECMAscript style regex-based match.
                            type: string
                        type: object
                      type: array
                  type: object
                regionalFailover:
                  description: Locality routing settings for all gateways in the workspace.
                  items:
                    properties:
                      from:
                        description: Originating region.
                        type: string
                      to:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: apis.application.tsb.tetrate.io
spec:
  group: application.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - application-tsb-tetrate-io
    kind: API
    listKind: APIList
    plural: apis
    shortNames:
      - tapi
    singular: api
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/application']
          name: Application
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: An API configuring a set of servers and endpoints that expose the Application business logic.
              properties:
                configResources:
                  description: The configuration resources that are related to this API object.
                  items:
                    properties:
                      exclusivelyOwned:
                        type: boolean
                      expectedEtag:
                        type: string
                      fqn:
                        description: The FQN of the resource this status is computed for.
                        type: string
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                endpoints:
                  description: List of endpoints exposed by this API.
                  items:
                    properties:
                      exposedBy:
                        description: The exposer of this endpoint.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - service
                                - required:
                                    - clusterGroup
                          - required:
                              - service
                          - required:
                              - clusterGroup
                        properties:
                          clusterGroup:
                            description: The clusters that are exposing a concrete endpoint.
                            properties:
                              clusters:
                                description: The clusters that contain gateways exposing the HTTPEndpoint.
                                items:
                                  properties:
                                    labels:
                                      additionalProperties:
                                        type: string
                                      description: Labels associated with the cluster.
                                      type: object
                                    name:
                                      description: The name of the cluster exposing the endpoint.
                                      type: string
                                    weight:
                                      description: The weight for traffic to a cluster exposing the endpoint.
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                  type: object
                                type: array
                            type: object
                          service:
                            description: The FQN of the service in the service registry that is exposing a concrete endpoint.
                            type: string
                        type: object
                      hostnames:
                        description: The list of hostnames where this endpoint is exposed.
                        items:
                          type: string
                        type: array
                      methods:
                        description: The list of HTTP methods this endpoint supports.
                        items:
                          type: string
                        type: array
                      path:
                        description: The HTTP path of the endpoint, relative to the hostnames exposed by the API.
                        type: string
                      service:
                        description: 'DEPRECATED: For new created APIs, the exposed servers will be available at httpServers.'
                        type: string
                    type: object
                  type: array
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                httpServers:
                  description: List of gateways servers that expose the API.
                  items:
                    properties:
                      authentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Authorization is used to configure authorization of end users.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed at the gateway workload(pod).
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      rateLimiting:
                        description: Configuration for rate limiting requests.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - settings
                                - required:
                                    - externalService
                          - required:
                              - settings
                          - required:
                              - externalService
                        properties:
                          externalService:
                            description: Configure ratelimiting using an external ratelimit server.
                            properties:
                              domain:
                                description: The rate limit domain to use when calling the rate limit service.
                                type: string
                              failClosed:
                                type: boolean
                              rateLimitServerUri:
                                description: The URI at which the external rate limit server can be reached.
                                type: string
                              rules:
                                description: A set of rate limit rules.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions that are to be applied for this rate limit configuration.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - sourceCluster
                                                - required:
                                                    - destinationCluster
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - requestHeaders
                                                - required:
                                                    - headerValueMatch
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                        properties:
                                          destinationCluster:
                                            description: Rate limit on destination envoy cluster.
                                            type: object
                                          headerValueMatch:
                                            description: Rate limit on the existence of certain request headers.
                                            properties:
                                              descriptorValue:
                                                description: The value to use in the descriptor entry.
                                                type: string
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              headers:
                                                additionalProperties:
                                                  oneOf:
                                                    - not:
                                                        anyOf:
                                                          - required:
                                                              - exact
                                                          - required:
                                                              - prefix
                                                          - required:
                                                              - regex
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                                  properties:
                                                    exact:
                                                      description: Exact string match.
                                                      type: string
                                                    prefix:
                                                      description: Prefix-based match.
                                                      type: string
                                                    regex:
                                                      description: ECMAscript style regex-based match.
                                                      type: string
                                                  type: object
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on remote address of client.
                                            type: object
                                          requestHeaders:
                                            description: Rate limit on the value of certain request headers.
                                            properties:
                                              descriptorKey:
                                                description: The key to use in the descriptor entry.
                                                type: string
                                              headerName:
                                                description: The header name to be queried from the request headers.
                                                type: string
                                            type: object
                                          sourceCluster:
                                            description: Rate limit on source envoy cluster.
                                            type: object
                                        type: object
                                      type: array
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the external rate limit server RPC.
                                type: string
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                          settings:
                            properties:
                              failClosed:
                                type: boolean
                              rules:
                                description: A list of rules for ratelimiting.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions to define each ratelimit rule.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - header
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                        properties:
                                          header:
                                            description: Rate limit on certain HTTP headers.
                                            properties:
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              name:
                                                description: Name of the header to match on.
                                                type: string
                                              value:
                                                description: Value of the header to match on if matching on a specific value.
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on the remote address of client.
                                            properties:
                                              value:
                                                description: Ratelimit on a specific remote address.
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    limit:
                                      description: The ratelimit value that will be configured for the above rules.
                                      properties:
                                        requestsPerUnit:
                                          description: Specifies the value of the rate limit.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        unit:
                                          description: Specifies the unit of time for rate limit.
                                          enum:
                                            - UNKNOWN
                                            - SECOND
                                            - MINUTE
                                            - HOUR
                                            - DAY
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the rate limit server RPC.
                                type: string
                            type: object
                        type: object
                      routing:
                        description: Routing rules associated with HTTP traffic to this server.
                        properties:
                          corsPolicy:
                            description: Cross origin resource request policy settings for all routes.
                            properties:
                              allowCredentials:
                                nullable: true
                                type: boolean
                              allowHeaders:
                                description: List of HTTP headers that can be used when requesting the resource.
                                items:
                                  type: string
                                type: array
                              allowMethods:
                                description: List of HTTP methods allowed to access the resource.
                                items:
                                  type: string
                                type: array
                              allowOrigin:
                                description: The list of origins that are allowed to perform CORS requests.
                                items:
                                  type: string
                                type: array
                              exposeHeaders:
                                description: A white list of HTTP headers that the browsers are allowed to access.
                                items:
                                  type: string
                                type: array
                              maxAge:
                                description: Specifies how long the results of a preflight request can be cached.
                                type: string
                            type: object
                          rules:
                            description: HTTP routes.
                            items:
                              oneOf:
                                - not:
                                    anyOf:
                                      - properties:
                                          route:
                                            oneOf:
                                              - not:
                                                  anyOf:
                                                    - required:
                                                        - clusterDestination
                                                    - required:
                                                        - serviceDestination
                                              - required:
                                                  - clusterDestination
                                              - required:
                                                  - serviceDestination
                                        required:
                                          - route
                                      - required:
                                          - redirect
                                - properties:
                                    route:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - clusterDestination
                                              - required:
                                                  - serviceDestination
                                        - required:
                                            - clusterDestination
                                        - required:
                                            - serviceDestination
                                  required:
                                    - route
                                - required:
                                    - redirect
                              properties:
                                disableExternalAuthorization:
                                  type: boolean
                                match:
                                  description: One or more match conditions (OR-ed).
                                  items:
                                    properties:
                                      headers:
                                        additionalProperties:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                            - required:
                                                - exact
                                            - required:
                                                - prefix
                                            - required:
                                                - regex
                                          properties:
                                            exact:
                                              description: Exact string match.
                                              type: string
                                            prefix:
                                              description: Prefix-based match.
                                              type: string
                                            regex:
                                              description: ECMAscript style regex-based match.
                                              type: string
                                          type: object
                                        description: The header keys must be lowercase and use hyphen as the separator, e.g.
                                        type: object
                                      uri:
                                        description: URI to match.
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                          - required:
                                              - exact
                                          - required:
                                              - prefix
                                          - required:
                                              - regex
                                        properties:
                                          exact:
                                            description: Exact string match.
                                            type: string
                                          prefix:
                                            description: Prefix-based match.
                                            type: string
                                          regex:
                                            description: ECMAscript style regex-based match.
                                            type: string
                                        type: object
                                    type: object
                                  type: array
                                modify:
                                  description: One or more mutations to be performed before forwarding.
                                  properties:
                                    headers:
                                      description: Add/remove/overwrite one or more HTTP headers in a request or response.
                                      properties:
                                        request:
                                          description: Header manipulation rules to apply before forwarding a request to the destination service.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                        response:
                                          description: Header manipulation rules to apply before returning a response to the caller.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                      type: object
                                    rewrite:
                                      description: Rewrite the HTTP Host or URL or both.
                                      properties:
                                        authority:
                                          description: Rewrite the Authority/Host header with this value.
                                          type: string
                                        uri:
                                          description: Rewrite the path (or the prefix) portion of the URI with this value.
                                          type: string
                                      type: object
                                  type: object
                                redirect:
                                  description: Redirect the request to a different host or URL or both.
                                  properties:
                                    authority:
                                      description: On a redirect, overwrite the Authority/Host portion of the URL with this value.
                                      type: string
                                    port:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    redirectCode:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    scheme:
                                      description: On a redirect, overwrite the scheme with this one.
                                      type: string
                                    uri:
                                      description: On a redirect, overwrite the Path portion of the URL with this value.
                                      type: string
                                  type: object
                                route:
                                  description: Forward the request to the specified destination(s).
                                  properties:
                                    clusterDestination:
                                      properties:
                                        clusters:
                                          description: The destination clusters that contain ingress gateways exposing the hostname.
                                          items:
                                            properties:
                                              labels:
                                                additionalProperties:
                                                  type: string
                                                description: Labels associated with the cluster.
                                                type: object
                                              name:
                                                description: The name of the destination cluster.
                                                type: string
                                              network:
                                                description: The network associated with the destination clusters.
                                                type: string
                                              weight:
                                                description: The weight for traffic to a given destination.
                                                maximum: 4294967295
                                                minimum: 0
                                                type: integer
                                            type: object
                                          type: array
                                      type: object
                                    serviceDestination:
                                      description: RouteToService represents the service running in clusters.
                                      properties:
                                        host:
                                          description: The destination service in `<namespace>/<fqdn>`.
                                          type: string
                                        port:
                                          description: The port on the service to forward the request to.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        tls:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - files
                                                  - required:
                                                      - secretName
                                            - required:
                                                - files
                                            - required:
                                                - secretName
                                          properties:
                                            files:
                                              description: TLS key source from files.
                                              properties:
                                                caCertificates:
                                                  type: string
                                                clientCertificate:
                                                  description: Certificate file to authenticate the client.
                                                  type: string
                                                privateKey:
                                                  description: Private key file associated with the client certificate.
                                                  type: string
                                              type: object
                                            mode:
                                              enum:
                                                - DISABLED
                                                - SIMPLE
                                                - MUTUAL
                                              type: string
                                            secretName:
                                              description: TLS key source from a Kubernetes Secret.
                                              type: string
                                            subjectAltNames:
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                              type: object
                            type: array
                        type: object
                      tls:
                        description: TLS certificate info.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                      transit:
                        description: If set to true, the server is configured to be exposed within the mesh.
                        type: boolean
                    type: object
                  type: array
                openapi:
                  description: The raw OpenAPI spec for this API.
                  type: string
                servers:
                  description: 'DEPRECATED: For new created APIs, the exposed servers will be available at httpServers.'
                  items:
                    properties:
                      authentication:
                        description: Configuration to authenticate clients.
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Configuration to authorize a request.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      rateLimiting:
                        description: Configuration for rate limiting requests.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - settings
                                - required:
                                    - externalService
                          - required:
                              - settings
                          - required:
                              - externalService
                        properties:
                          externalService:
                            description: Configure ratelimiting using an external ratelimit server.
                            properties:
                              domain:
                                description: The rate limit domain to use when calling the rate limit service.
                                type: string
                              failClosed:
                                type: boolean
                              rateLimitServerUri:
                                description: The URI at which the external rate limit server can be reached.
                                type: string
                              rules:
                                description: A set of rate limit rules.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions that are to be applied for this rate limit configuration.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - sourceCluster
                                                - required:
                                                    - destinationCluster
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - requestHeaders
                                                - required:
                                                    - headerValueMatch
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                        properties:
                                          destinationCluster:
                                            description: Rate limit on destination envoy cluster.
                                            type: object
                                          headerValueMatch:
                                            description: Rate limit on the existence of certain request headers.
                                            properties:
                                              descriptorValue:
                                                description: The value to use in the descriptor entry.
                                                type: string
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              headers:
                                                additionalProperties:
                                                  oneOf:
                                                    - not:
                                                        anyOf:
                                                          - required:
                                                              - exact
                                                          - required:
                                                              - prefix
                                                          - required:
                                                              - regex
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                                  properties:
                                                    exact:
                                                      description: Exact string match.
                                                      type: string
                                                    prefix:
                                                      description: Prefix-based match.
                                                      type: string
                                                    regex:
                                                      description: ECMAscript style regex-based match.
                                                      type: string
                                                  type: object
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on remote address of client.
                                            type: object
                                          requestHeaders:
                                            description: Rate limit on the value of certain request headers.
                                            properties:
                                              descriptorKey:
                                                description: The key to use in the descriptor entry.
                                                type: string
                                              headerName:
                                                description: The header name to be queried from the request headers.
                                                type: string
                                            type: object
                                          sourceCluster:
                                            description: Rate limit on source envoy cluster.
                                            type: object
                                        type: object
                                      type: array
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the external rate limit server RPC.
                                type: string
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                          settings:
                            properties:
                              failClosed:
                                type: boolean
                              rules:
                                description: A list of rules for ratelimiting.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions to define each ratelimit rule.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - header
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                        properties:
                                          header:
                                            description: Rate limit on certain HTTP headers.
                                            properties:
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              name:
                                                description: Name of the header to match on.
                                                type: string
                                              value:
                                                description: Value of the header to match on if matching on a specific value.
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on the remote address of client.
                                            properties:
                                              value:
                                                description: Ratelimit on a specific remote address.
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    limit:
                                      description: The ratelimit value that will be configured for the above rules.
                                      properties:
                                        requestsPerUnit:
                                          description: Specifies the value of the rate limit.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        unit:
                                          description: Specifies the unit of time for rate limit.
                                          enum:
                                            - UNKNOWN
                                            - SECOND
                                            - MINUTE
                                            - HOUR
                                            - DAY
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the rate limit server RPC.
                                type: string
                            type: object
                        type: object
                      routing:
                        description: Routing rules associated with HTTP traffic to this service.
                        properties:
                          corsPolicy:
                            description: Cross origin resource request policy settings for all routes.
                            properties:
                              allowCredentials:
                                nullable: true
                                type: boolean
                              allowHeaders:
                                description: List of HTTP headers that can be used when requesting the resource.
                                items:
                                  type: string
                                type: array
                              allowMethods:
                                description: List of HTTP methods allowed to access the resource.
                                items:
                                  type: string
                                type: array
                              allowOrigin:
                                description: The list of origins that are allowed to perform CORS requests.
                                items:
                                  type: string
                                type: array
                              exposeHeaders:
                                description: A white list of HTTP headers that the browsers are allowed to access.
                                items:
                                  type: string
                                type: array
                              maxAge:
                                description: Specifies how long the results of a preflight request can be cached.
                                type: string
                            type: object
                          rules:
                            description: HTTP routes.
                            items:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - route
                                      - required:
                                          - redirect
                                - required:
                                    - route
                                - required:
                                    - redirect
                              properties:
                                match:
                                  description: One or more match conditions (OR-ed).
                                  items:
                                    properties:
                                      headers:
                                        additionalProperties:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                            - required:
                                                - exact
                                            - required:
                                                - prefix
                                            - required:
                                                - regex
                                          properties:
                                            exact:
                                              description: Exact string match.
                                              type: string
                                            prefix:
                                              description: Prefix-based match.
                                              type: string
                                            regex:
                                              description: ECMAscript style regex-based match.
                                              type: string
                                          type: object
                                        description: The header keys must be lowercase and use hyphen as the separator, e.g.
                                        type: object
                                      uri:
                                        description: URI to match.
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                          - required:
                                              - exact
                                          - required:
                                              - prefix
                                          - required:
                                              - regex
                                        properties:
                                          exact:
                                            description: Exact string match.
                                            type: string
                                          prefix:
                                            description: Prefix-based match.
                                            type: string
                                          regex:
                                            description: ECMAscript style regex-based match.
                                            type: string
                                        type: object
                                    type: object
                                  type: array
                                modify:
                                  description: One or more mutations to be performed before forwarding.
                                  properties:
                                    headers:
                                      description: Add/remove/overwrite one or more HTTP headers in a request or response.
                                      properties:
                                        request:
                                          description: Header manipulation rules to apply before forwarding a request to the destination service.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                        response:
                                          description: Header manipulation rules to apply before returning a response to the caller.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                      type: object
                                    rewrite:
                                      description: Rewrite the HTTP Host or URL or both.
                                      properties:
                                        authority:
                                          description: Rewrite the Authority/Host header with this value.
                                          type: string
                                        uri:
                                          description: Rewrite the path (or the prefix) portion of the URI with this value.
                                          type: string
                                      type: object
                                  type: object
                                redirect:
                                  description: Redirect the request to a different host or URL or both.
                                  properties:
                                    authority:
                                      description: On a redirect, overwrite the Authority/Host portion of the URL with this value.
                                      type: string
                                    port:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    redirectCode:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    scheme:
                                      description: On a redirect, overwrite the scheme with this one.
                                      type: string
                                    uri:
                                      description: On a redirect, overwrite the Path portion of the URL with this value.
                                      type: string
                                  type: object
                                route:
                                  description: Forward the request to the specified destination(s).
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      description: The port on the service to forward the request to.
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                  type: object
                              type: object
                            type: array
                        type: object
                      tls:
                        description: TLS certificate info.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                      xxxOldAuthentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                        properties:
                          jwt:
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                            type: object
                        type: object
                      xxxOldAuthorization:
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                    type: object
                  type: array
                workloadSelector:
                  properties:
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    namespace:
                      description: The namespace where the workload resides.
                      type: string
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: applications.application.tsb.tetrate.io
spec:
  group: application.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - application-tsb-tetrate-io
    kind: Application
    listKind: ApplicationList
    plural: applications
    shortNames:
      - tapp
    singular: application
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              oneOf:
                - not:
                    anyOf:
                      - required:
                          - namespaceSelector
                      - required:
                          - gatewayGroup
                - required:
                    - namespaceSelector
                - required:
                    - gatewayGroup
              properties:
                configResources:
                  description: The configuration resources that are related to this Application.
                  items:
                    properties:
                      exclusivelyOwned:
                        type: boolean
                      expectedEtag:
                        type: string
                      fqn:
                        description: The FQN of the resource this status is computed for.
                        type: string
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                gatewayGroup:
                  description: Optional FQN of the Gateway Group to be used by the application.
                  type: string
                namespaceSelector:
                  description: Optional set of namespaces this application can configure.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
                services:
                  description: Optional list of services that are part of the application.
                  items:
                    type: string
                  type: array
                workspace:
                  description: FQN of the workspace this application is part of.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: wasmextensions.extension.tsb.tetrate.io
spec:
  group: extension.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
    kind: WasmExtension
    listKind: WasmExtensionList
    plural: wasmextensions
    shortNames:
      - twex
    singular: wasmextension
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.url
          name: URL
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                allowedIn:
                  description: List of fqns where this extension is allowed to run.
                  items:
                    type: string
                  type: array
                config:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                description:
                  description: A description of the extension.
                  type: string
                displayName:
                  description: User friendly name for the extension.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                image:
                  description: Deprecated.
                  type: string
                imagePullPolicy:
                  enum:
                    - UNSPECIFIED_POLICY
                    - IfNotPresent
                    - Always
                  type: string
                imagePullSecret:
                  description: Credentials to use for OCI image pulling.
                  type: string
                match:
                  description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                  properties:
                    mode:
                      description: Criteria for selecting traffic by their direction.
                      enum:
                        - UNDEFINED
                        - CLIENT
                        - SERVER
                        - CLIENT_AND_SERVER
                      type: string
                  type: object
                phase:
                  description: The phase in the filter chain where the extension will be injected.
                  enum:
                    - UNSPECIFIED_PHASE
                    - AUTHN
                    - AUTHZ
                    - STATS
                  type: string
                priority:
                  description: Determines the ordering of WasmExtensions in the same phase.
                  format: int32
                  type: integer
                source:
                  type: string
                url:
                  description: URL of a Wasm module or OCI container.
                  type: string
                vmConfig:
                  properties:
                    env:
                      description: Specifies environment variables to be injected to this VM.
                      items:
                        properties:
                          name:
                            description: Name of the environment variable.
                            type: string
                          value:
                            description: Value for the environment variable.
                            type: string
                          valueFrom:
                            description: Source for the environment variable's value.
                            enum:
                              - INLINE
                              - HOST
                            type: string
                        type: object
                      type: array
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: egressgateways.gateway.tsb.tetrate.io
spec:
  group: gateway.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - gateway-tsb-tetrate-io
    kind: EgressGateway
    listKind: EgressGatewayList
    plural: egressgateways
    shortNames:
      - teg
    singular: egressgateway
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/gatewayGroup']
          name: Gateway-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`EgressGateway` configures a workload to act as an egress gateway in the mesh.'
              properties:
                authorization:
                  description: The description of which service accounts can access which hosts.
                  items:
                    properties:
                      from:
                        description: The workloads or service accounts this authorization rule applies to.
                        properties:
                          http:
                            description: This is for configuring HTTP request authorization.
                            oneOf:
                              - not:
                                  anyOf:
                                    - required:
                                        - external
                                    - required:
                                        - local
                              - required:
                                  - external
                              - required:
                                  - local
                            properties:
                              external:
                                properties:
                                  includeRequestHeaders:
                                    items:
                                      type: string
                                    type: array
                                  tls:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - files
                                            - required:
                                                - secretName
                                      - required:
                                          - files
                                      - required:
                                          - secretName
                                    properties:
                                      files:
                                        description: TLS key source from files.
                                        properties:
                                          caCertificates:
                                            type: string
                                          clientCertificate:
                                            description: Certificate file to authenticate the client.
                                            type: string
                                          privateKey:
                                            description: Private key file associated with the client certificate.
                                            type: string
                                        type: object
                                      mode:
                                        enum:
                                          - DISABLED
                                          - SIMPLE
                                          - MUTUAL
                                        type: string
                                      secretName:
                                        description: TLS key source from a Kubernetes Secret.
                                        type: string
                                      subjectAltNames:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  uri:
                                    type: string
                                type: object
                              local:
                                properties:
                                  rules:
                                    items:
                                      properties:
                                        from:
                                          items:
                                            properties:
                                              jwt:
                                                description: JWT configuration to identity the subject.
                                                properties:
                                                  iss:
                                                    type: string
                                                  other:
                                                    additionalProperties:
                                                      type: string
                                                    description: A set of arbitrary claims that are required to qualify the subject.
                                                    type: object
                                                  sub:
                                                    type: string
                                                type: object
                                            type: object
                                          type: array
                                        name:
                                          description: A friendly name to identify the binding.
                                          type: string
                                        to:
                                          items:
                                            properties:
                                              methods:
                                                description: The HTTP methods that are allowed by this rule.
                                                items:
                                                  type: string
                                                type: array
                                              paths:
                                                description: The request path where the request is made against.
                                                items:
                                                  type: string
                                                type: array
                                            type: object
                                          type: array
                                      type: object
                                    type: array
                                type: object
                            type: object
                          mode:
                            description: A short cut for specifying the set of allowed callers.
                            enum:
                              - UNSET
                              - NAMESPACE
                              - GROUP
                              - WORKSPACE
                              - CLUSTER
                              - DISABLED
                              - CUSTOM
                              - RULES
                            type: string
                          rules:
                            properties:
                              allow:
                                description: Allow specifies a list of rules.
                                items:
                                  properties:
                                    from:
                                      description: From specifies the source of a request.
                                      properties:
                                        fqn:
                                          description: The target resource identified by FQN which will be the source of a request.
                                          type: string
                                      type: object
                                    to:
                                      description: To specifies the destination of a request.
                                      properties:
                                        fqn:
                                          description: The target resource identified by FQN which will be the destination of a request.
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              deny:
                                description: Deny specifies a list of rules.
                                items:
                                  properties:
                                    from:
                                      description: From specifies the source of a request.
                                      properties:
                                        fqn:
                                          description: The target resource identified by FQN which will be the source of a request.
                                          type: string
                                      type: object
                                    to:
                                      description: To specifies the destination of a request.
                                      properties:
                                        fqn:
                                          description: The target resource identified by FQN which will be the destination of a request.
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              denyAll:
                                description: Deny all specifies whether all requests should be rejected.
                                type: boolean
                            type: object
                          serviceAccounts:
                            items:
                              type: string
                            type: array
                        type: object
                      to:
                        description: The external hostnames the workload(s) described in this rule can access.
                        items:
                          type: string
                        type: array
                    type: object
                  type: array
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                extension:
                  items:
                    properties:
                      config:
                        description: Configuration parameters sent to the WASM plugin execution.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      fqn:
                        description: Fqn of the extension to be executed.
                        type: string
                      match:
                        description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                        items:
                          properties:
                            mode:
                              description: Criteria for selecting traffic by their direction.
                              enum:
                                - UNDEFINED
                                - CLIENT
                                - SERVER
                                - CLIENT_AND_SERVER
                              type: string
                            ports:
                              description: Criteria for selecting traffic by their destination port.
                              items:
                                properties:
                                  number:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                workloadSelector:
                  properties:
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    namespace:
                      description: The namespace where the workload resides.
                      type: string
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: gateways.gateway.tsb.tetrate.io
spec:
  group: gateway.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - gateway-tsb-tetrate-io
    kind: Gateway
    listKind: GatewayList
    plural: gateways
    shortNames:
      - tg
    singular: gateway
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/gatewayGroup']
          name: Gateway-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                http:
                  description: One or more HTTP or HTTPS servers exposed by the gateway.
                  items:
                    properties:
                      authentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Authorization is used to configure authorization of end users.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed at the gateway workload(pod).
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      rateLimiting:
                        description: Configuration for rate limiting requests.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - settings
                                - required:
                                    - externalService
                          - required:
                              - settings
                          - required:
                              - externalService
                        properties:
                          externalService:
                            description: Configure ratelimiting using an external ratelimit server.
                            properties:
                              domain:
                                description: The rate limit domain to use when calling the rate limit service.
                                type: string
                              failClosed:
                                type: boolean
                              rateLimitServerUri:
                                description: The URI at which the external rate limit server can be reached.
                                type: string
                              rules:
                                description: A set of rate limit rules.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions that are to be applied for this rate limit configuration.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - sourceCluster
                                                - required:
                                                    - destinationCluster
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - requestHeaders
                                                - required:
                                                    - headerValueMatch
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                        properties:
                                          destinationCluster:
                                            description: Rate limit on destination envoy cluster.
                                            type: object
                                          headerValueMatch:
                                            description: Rate limit on the existence of certain request headers.
                                            properties:
                                              descriptorValue:
                                                description: The value to use in the descriptor entry.
                                                type: string
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              headers:
                                                additionalProperties:
                                                  oneOf:
                                                    - not:
                                                        anyOf:
                                                          - required:
                                                              - exact
                                                          - required:
                                                              - prefix
                                                          - required:
                                                              - regex
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                                  properties:
                                                    exact:
                                                      description: Exact string match.
                                                      type: string
                                                    prefix:
                                                      description: Prefix-based match.
                                                      type: string
                                                    regex:
                                                      description: ECMAscript style regex-based match.
                                                      type: string
                                                  type: object
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on remote address of client.
                                            type: object
                                          requestHeaders:
                                            description: Rate limit on the value of certain request headers.
                                            properties:
                                              descriptorKey:
                                                description: The key to use in the descriptor entry.
                                                type: string
                                              headerName:
                                                description: The header name to be queried from the request headers.
                                                type: string
                                            type: object
                                          sourceCluster:
                                            description: Rate limit on source envoy cluster.
                                            type: object
                                        type: object
                                      type: array
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the external rate limit server RPC.
                                type: string
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                          settings:
                            properties:
                              failClosed:
                                type: boolean
                              rules:
                                description: A list of rules for ratelimiting.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions to define each ratelimit rule.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - header
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                        properties:
                                          header:
                                            description: Rate limit on certain HTTP headers.
                                            properties:
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              name:
                                                description: Name of the header to match on.
                                                type: string
                                              value:
                                                description: Value of the header to match on if matching on a specific value.
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on the remote address of client.
                                            properties:
                                              value:
                                                description: Ratelimit on a specific remote address.
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    limit:
                                      description: The ratelimit value that will be configured for the above rules.
                                      properties:
                                        requestsPerUnit:
                                          description: Specifies the value of the rate limit.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        unit:
                                          description: Specifies the unit of time for rate limit.
                                          enum:
                                            - UNKNOWN
                                            - SECOND
                                            - MINUTE
                                            - HOUR
                                            - DAY
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the rate limit server RPC.
                                type: string
                            type: object
                        type: object
                      routing:
                        description: Routing rules associated with HTTP traffic to this server.
                        properties:
                          corsPolicy:
                            description: Cross origin resource request policy settings for all routes.
                            properties:
                              allowCredentials:
                                nullable: true
                                type: boolean
                              allowHeaders:
                                description: List of HTTP headers that can be used when requesting the resource.
                                items:
                                  type: string
                                type: array
                              allowMethods:
                                description: List of HTTP methods allowed to access the resource.
                                items:
                                  type: string
                                type: array
                              allowOrigin:
                                description: The list of origins that are allowed to perform CORS requests.
                                items:
                                  type: string
                                type: array
                              exposeHeaders:
                                description: A white list of HTTP headers that the browsers are allowed to access.
                                items:
                                  type: string
                                type: array
                              maxAge:
                                description: Specifies how long the results of a preflight request can be cached.
                                type: string
                            type: object
                          rules:
                            description: HTTP routes.
                            items:
                              oneOf:
                                - not:
                                    anyOf:
                                      - properties:
                                          route:
                                            oneOf:
                                              - not:
                                                  anyOf:
                                                    - required:
                                                        - clusterDestination
                                                    - required:
                                                        - serviceDestination
                                              - required:
                                                  - clusterDestination
                                              - required:
                                                  - serviceDestination
                                        required:
                                          - route
                                      - required:
                                          - redirect
                                - properties:
                                    route:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - clusterDestination
                                              - required:
                                                  - serviceDestination
                                        - required:
                                            - clusterDestination
                                        - required:
                                            - serviceDestination
                                  required:
                                    - route
                                - required:
                                    - redirect
                              properties:
                                disableExternalAuthorization:
                                  type: boolean
                                match:
                                  description: One or more match conditions (OR-ed).
                                  items:
                                    properties:
                                      headers:
                                        additionalProperties:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                            - required:
                                                - exact
                                            - required:
                                                - prefix
                                            - required:
                                                - regex
                                          properties:
                                            exact:
                                              description: Exact string match.
                                              type: string
                                            prefix:
                                              description: Prefix-based match.
                                              type: string
                                            regex:
                                              description: ECMAscript style regex-based match.
                                              type: string
                                          type: object
                                        description: The header keys must be lowercase and use hyphen as the separator, e.g.
                                        type: object
                                      uri:
                                        description: URI to match.
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                          - required:
                                              - exact
                                          - required:
                                              - prefix
                                          - required:
                                              - regex
                                        properties:
                                          exact:
                                            description: Exact string match.
                                            type: string
                                          prefix:
                                            description: Prefix-based match.
                                            type: string
                                          regex:
                                            description: ECMAscript style regex-based match.
                                            type: string
                                        type: object
                                    type: object
                                  type: array
                                modify:
                                  description: One or more mutations to be performed before forwarding.
                                  properties:
                                    headers:
                                      description: Add/remove/overwrite one or more HTTP headers in a request or response.
                                      properties:
                                        request:
                                          description: Header manipulation rules to apply before forwarding a request to the destination service.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                        response:
                                          description: Header manipulation rules to apply before returning a response to the caller.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                      type: object
                                    rewrite:
                                      description: Rewrite the HTTP Host or URL or both.
                                      properties:
                                        authority:
                                          description: Rewrite the Authority/Host header with this value.
                                          type: string
                                        uri:
                                          description: Rewrite the path (or the prefix) portion of the URI with this value.
                                          type: string
                                      type: object
                                  type: object
                                redirect:
                                  description: Redirect the request to a different host or URL or both.
                                  properties:
                                    authority:
                                      description: On a redirect, overwrite the Authority/Host portion of the URL with this value.
                                      type: string
                                    port:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    redirectCode:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    scheme:
                                      description: On a redirect, overwrite the scheme with this one.
                                      type: string
                                    uri:
                                      description: On a redirect, overwrite the Path portion of the URL with this value.
                                      type: string
                                  type: object
                                route:
                                  description: Forward the request to the specified destination(s).
                                  properties:
                                    clusterDestination:
                                      properties:
                                        clusters:
                                          description: The destination clusters that contain ingress gateways exposing the hostname.
                                          items:
                                            properties:
                                              labels:
                                                additionalProperties:
                                                  type: string
                                                description: Labels associated with the cluster.
                                                type: object
                                              name:
                                                description: The name of the destination cluster.
                                                type: string
                                              network:
                                                description: The network associated with the destination clusters.
                                                type: string
                                              weight:
                                                description: The weight for traffic to a given destination.
                                                maximum: 4294967295
                                                minimum: 0
                                                type: integer
                                            type: object
                                          type: array
                                      type: object
                                    serviceDestination:
                                      description: RouteToService represents the service running in clusters.
                                      properties:
                                        host:
                                          description: The destination service in `<namespace>/<fqdn>`.
                                          type: string
                                        port:
                                          description: The port on the service to forward the request to.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        tls:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - files
                                                  - required:
                                                      - secretName
                                            - required:
                                                - files
                                            - required:
                                                - secretName
                                          properties:
                                            files:
                                              description: TLS key source from files.
                                              properties:
                                                caCertificates:
                                                  type: string
                                                clientCertificate:
                                                  description: Certificate file to authenticate the client.
                                                  type: string
                                                privateKey:
                                                  description: Private key file associated with the client certificate.
                                                  type: string
                                              type: object
                                            mode:
                                              enum:
                                                - DISABLED
                                                - SIMPLE
                                                - MUTUAL
                                              type: string
                                            secretName:
                                              description: TLS key source from a Kubernetes Secret.
                                              type: string
                                            subjectAltNames:
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                      type: object
                                  type: object
                              type: object
                            type: array
                        type: object
                      tls:
                        description: TLS certificate info.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                      transit:
                        description: If set to true, the server is configured to be exposed within the mesh.
                        type: boolean
                    type: object
                  type: array
                tcp:
                  items:
                    properties:
                      hostname:
                        description: Hostname to identify the service.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      route:
                        description: Forward the connection to the specified destination.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - clusterDestination
                                - required:
                                    - serviceDestination
                          - required:
                              - clusterDestination
                          - required:
                              - serviceDestination
                        properties:
                          clusterDestination:
                            properties:
                              clusters:
                                description: The destination clusters that contain ingress gateways exposing the hostname.
                                items:
                                  properties:
                                    labels:
                                      additionalProperties:
                                        type: string
                                      description: Labels associated with the cluster.
                                      type: object
                                    name:
                                      description: The name of the destination cluster.
                                      type: string
                                    network:
                                      description: The network associated with the destination clusters.
                                      type: string
                                    weight:
                                      description: The weight for traffic to a given destination.
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                  type: object
                                type: array
                            type: object
                          serviceDestination:
                            description: RouteToService represents the service running in clusters.
                            properties:
                              host:
                                description: The destination service in `<namespace>/<fqdn>`.
                                type: string
                              port:
                                description: The port on the service to forward the request to.
                                maximum: 4294967295
                                minimum: 0
                                type: integer
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                        type: object
                      tls:
                        description: TLS certificate info to terminate the TLS connection.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                      transit:
                        description: If set to true, the server is configured to be exposed within the mesh.
                        type: boolean
                    type: object
                  type: array
                tls:
                  description: One or more TLS servers exposed by the gateway.
                  items:
                    properties:
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      route:
                        description: Forward the connection to the specified destination.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - clusterDestination
                                - required:
                                    - serviceDestination
                          - required:
                              - clusterDestination
                          - required:
                              - serviceDestination
                        properties:
                          clusterDestination:
                            properties:
                              clusters:
                                description: The destination clusters that contain ingress gateways exposing the hostname.
                                items:
                                  properties:
                                    labels:
                                      additionalProperties:
                                        type: string
                                      description: Labels associated with the cluster.
                                      type: object
                                    name:
                                      description: The name of the destination cluster.
                                      type: string
                                    network:
                                      description: The network associated with the destination clusters.
                                      type: string
                                    weight:
                                      description: The weight for traffic to a given destination.
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                  type: object
                                type: array
                            type: object
                          serviceDestination:
                            description: RouteToService represents the service running in clusters.
                            properties:
                              host:
                                description: The destination service in `<namespace>/<fqdn>`.
                                type: string
                              port:
                                description: The port on the service to forward the request to.
                                maximum: 4294967295
                                minimum: 0
                                type: integer
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                        type: object
                    type: object
                  type: array
                waf:
                  description: WAF settings to be enabled for traffic passing through the HttpServer.
                  properties:
                    rules:
                      description: Rules to be leveraged by WAF.
                      items:
                        type: string
                      type: array
                  type: object
                wasmPlugins:
                  items:
                    properties:
                      config:
                        description: Configuration parameters sent to the WASM plugin execution.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      fqn:
                        description: Fqn of the extension to be executed.
                        type: string
                      match:
                        description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                        items:
                          properties:
                            mode:
                              description: Criteria for selecting traffic by their direction.
                              enum:
                                - UNDEFINED
                                - CLIENT
                                - SERVER
                                - CLIENT_AND_SERVER
                              type: string
                            ports:
                              description: Criteria for selecting traffic by their destination port.
                              items:
                                properties:
                                  number:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                workloadSelector:
                  properties:
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    namespace:
                      description: The namespace where the workload resides.
                      type: string
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: groups.gateway.tsb.tetrate.io
spec:
  group: gateway.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - gateway-tsb-tetrate-io
    kind: Group
    listKind: GroupList
    plural: groups
    shortNames:
      - tgg
    singular: group
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.configMode
          name: Mode
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                configMode:
                  enum:
                    - BRIDGED
                    - DIRECT
                  type: string
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                namespaceSelector:
                  description: Set of namespaces owned exclusively by this group.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: ingressgateways.gateway.tsb.tetrate.io
spec:
  group: gateway.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - gateway-tsb-tetrate-io
    kind: IngressGateway
    listKind: IngressGatewayList
    plural: ingressgateways
    shortNames:
      - tig
    singular: ingressgateway
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/gatewayGroup']
          name: Gateway-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`IngressGateway` configures a workload to act as an ingress gateway into the mesh.'
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                extension:
                  items:
                    properties:
                      config:
                        description: Configuration parameters sent to the WASM plugin execution.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      fqn:
                        description: Fqn of the extension to be executed.
                        type: string
                      match:
                        description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                        items:
                          properties:
                            mode:
                              description: Criteria for selecting traffic by their direction.
                              enum:
                                - UNDEFINED
                                - CLIENT
                                - SERVER
                                - CLIENT_AND_SERVER
                              type: string
                            ports:
                              description: Criteria for selecting traffic by their destination port.
                              items:
                                properties:
                                  number:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                http:
                  description: One or more HTTP or HTTPS servers exposed by the gateway.
                  items:
                    properties:
                      authentication:
                        description: Configuration to authenticate clients.
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Configuration to authorize a request.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      rateLimiting:
                        description: Configuration for rate limiting requests.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - settings
                                - required:
                                    - externalService
                          - required:
                              - settings
                          - required:
                              - externalService
                        properties:
                          externalService:
                            description: Configure ratelimiting using an external ratelimit server.
                            properties:
                              domain:
                                description: The rate limit domain to use when calling the rate limit service.
                                type: string
                              failClosed:
                                type: boolean
                              rateLimitServerUri:
                                description: The URI at which the external rate limit server can be reached.
                                type: string
                              rules:
                                description: A set of rate limit rules.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions that are to be applied for this rate limit configuration.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - sourceCluster
                                                - required:
                                                    - destinationCluster
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - requestHeaders
                                                - required:
                                                    - headerValueMatch
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                        properties:
                                          destinationCluster:
                                            description: Rate limit on destination envoy cluster.
                                            type: object
                                          headerValueMatch:
                                            description: Rate limit on the existence of certain request headers.
                                            properties:
                                              descriptorValue:
                                                description: The value to use in the descriptor entry.
                                                type: string
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              headers:
                                                additionalProperties:
                                                  oneOf:
                                                    - not:
                                                        anyOf:
                                                          - required:
                                                              - exact
                                                          - required:
                                                              - prefix
                                                          - required:
                                                              - regex
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                                  properties:
                                                    exact:
                                                      description: Exact string match.
                                                      type: string
                                                    prefix:
                                                      description: Prefix-based match.
                                                      type: string
                                                    regex:
                                                      description: ECMAscript style regex-based match.
                                                      type: string
                                                  type: object
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on remote address of client.
                                            type: object
                                          requestHeaders:
                                            description: Rate limit on the value of certain request headers.
                                            properties:
                                              descriptorKey:
                                                description: The key to use in the descriptor entry.
                                                type: string
                                              headerName:
                                                description: The header name to be queried from the request headers.
                                                type: string
                                            type: object
                                          sourceCluster:
                                            description: Rate limit on source envoy cluster.
                                            type: object
                                        type: object
                                      type: array
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the external rate limit server RPC.
                                type: string
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                          settings:
                            properties:
                              failClosed:
                                type: boolean
                              rules:
                                description: A list of rules for ratelimiting.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions to define each ratelimit rule.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - header
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                        properties:
                                          header:
                                            description: Rate limit on certain HTTP headers.
                                            properties:
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              name:
                                                description: Name of the header to match on.
                                                type: string
                                              value:
                                                description: Value of the header to match on if matching on a specific value.
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on the remote address of client.
                                            properties:
                                              value:
                                                description: Ratelimit on a specific remote address.
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    limit:
                                      description: The ratelimit value that will be configured for the above rules.
                                      properties:
                                        requestsPerUnit:
                                          description: Specifies the value of the rate limit.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        unit:
                                          description: Specifies the unit of time for rate limit.
                                          enum:
                                            - UNKNOWN
                                            - SECOND
                                            - MINUTE
                                            - HOUR
                                            - DAY
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the rate limit server RPC.
                                type: string
                            type: object
                        type: object
                      routing:
                        description: Routing rules associated with HTTP traffic to this service.
                        properties:
                          corsPolicy:
                            description: Cross origin resource request policy settings for all routes.
                            properties:
                              allowCredentials:
                                nullable: true
                                type: boolean
                              allowHeaders:
                                description: List of HTTP headers that can be used when requesting the resource.
                                items:
                                  type: string
                                type: array
                              allowMethods:
                                description: List of HTTP methods allowed to access the resource.
                                items:
                                  type: string
                                type: array
                              allowOrigin:
                                description: The list of origins that are allowed to perform CORS requests.
                                items:
                                  type: string
                                type: array
                              exposeHeaders:
                                description: A white list of HTTP headers that the browsers are allowed to access.
                                items:
                                  type: string
                                type: array
                              maxAge:
                                description: Specifies how long the results of a preflight request can be cached.
                                type: string
                            type: object
                          rules:
                            description: HTTP routes.
                            items:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - route
                                      - required:
                                          - redirect
                                - required:
                                    - route
                                - required:
                                    - redirect
                              properties:
                                match:
                                  description: One or more match conditions (OR-ed).
                                  items:
                                    properties:
                                      headers:
                                        additionalProperties:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                            - required:
                                                - exact
                                            - required:
                                                - prefix
                                            - required:
                                                - regex
                                          properties:
                                            exact:
                                              description: Exact string match.
                                              type: string
                                            prefix:
                                              description: Prefix-based match.
                                              type: string
                                            regex:
                                              description: ECMAscript style regex-based match.
                                              type: string
                                          type: object
                                        description: The header keys must be lowercase and use hyphen as the separator, e.g.
                                        type: object
                                      uri:
                                        description: URI to match.
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - exact
                                                - required:
                                                    - prefix
                                                - required:
                                                    - regex
                                          - required:
                                              - exact
                                          - required:
                                              - prefix
                                          - required:
                                              - regex
                                        properties:
                                          exact:
                                            description: Exact string match.
                                            type: string
                                          prefix:
                                            description: Prefix-based match.
                                            type: string
                                          regex:
                                            description: ECMAscript style regex-based match.
                                            type: string
                                        type: object
                                    type: object
                                  type: array
                                modify:
                                  description: One or more mutations to be performed before forwarding.
                                  properties:
                                    headers:
                                      description: Add/remove/overwrite one or more HTTP headers in a request or response.
                                      properties:
                                        request:
                                          description: Header manipulation rules to apply before forwarding a request to the destination service.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                        response:
                                          description: Header manipulation rules to apply before returning a response to the caller.
                                          properties:
                                            add:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            remove:
                                              description: Remove a the specified headers.
                                              items:
                                                type: string
                                              type: array
                                            set:
                                              additionalProperties:
                                                type: string
                                              description: Overwrite the headers specified by key with the given values.
                                              type: object
                                          type: object
                                      type: object
                                    rewrite:
                                      description: Rewrite the HTTP Host or URL or both.
                                      properties:
                                        authority:
                                          description: Rewrite the Authority/Host header with this value.
                                          type: string
                                        uri:
                                          description: Rewrite the path (or the prefix) portion of the URI with this value.
                                          type: string
                                      type: object
                                  type: object
                                redirect:
                                  description: Redirect the request to a different host or URL or both.
                                  properties:
                                    authority:
                                      description: On a redirect, overwrite the Authority/Host portion of the URL with this value.
                                      type: string
                                    port:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    redirectCode:
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                    scheme:
                                      description: On a redirect, overwrite the scheme with this one.
                                      type: string
                                    uri:
                                      description: On a redirect, overwrite the Path portion of the URL with this value.
                                      type: string
                                  type: object
                                route:
                                  description: Forward the request to the specified destination(s).
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      description: The port on the service to forward the request to.
                                      maximum: 4294967295
                                      minimum: 0
                                      type: integer
                                  type: object
                              type: object
                            type: array
                        type: object
                      tls:
                        description: TLS certificate info.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                      xxxOldAuthentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                        properties:
                          jwt:
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                            type: object
                        type: object
                      xxxOldAuthorization:
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                    type: object
                  type: array
                tcp:
                  items:
                    properties:
                      hostname:
                        description: Hostname to identify the service.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      route:
                        description: Forward the connection to the specified destination.
                        properties:
                          host:
                            type: string
                          port:
                            description: The port on the service to forward the request to.
                            maximum: 4294967295
                            minimum: 0
                            type: integer
                        type: object
                      tls:
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                    type: object
                  type: array
                tlsPassthrough:
                  description: One or more TLS servers exposed by the gateway.
                  items:
                    properties:
                      hostname:
                        description: Hostname with which the service can be expected to be accessed by clients.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      route:
                        description: Forward the connection to the specified destination.
                        properties:
                          host:
                            type: string
                          port:
                            description: The port on the service to forward the request to.
                            maximum: 4294967295
                            minimum: 0
                            type: integer
                        type: object
                    type: object
                  type: array
                waf:
                  description: WAF settings to be enabled for traffic passing through the HttpServer.
                  properties:
                    rules:
                      description: Rules to be leveraged by WAF.
                      items:
                        type: string
                      type: array
                  type: object
                workloadSelector:
                  properties:
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    namespace:
                      description: The namespace where the workload resides.
                      type: string
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tier1gateways.gateway.tsb.tetrate.io
spec:
  group: gateway.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - gateway-tsb-tetrate-io
    kind: Tier1Gateway
    listKind: Tier1GatewayList
    plural: tier1gateways
    shortNames:
      - tt1
    singular: tier1gateway
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/gatewayGroup']
          name: Gateway-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`Tier1Gateway` configures a workload to act as a tier1 gateway into the mesh.'
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                extension:
                  items:
                    properties:
                      config:
                        description: Configuration parameters sent to the WASM plugin execution.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      fqn:
                        description: Fqn of the extension to be executed.
                        type: string
                      match:
                        description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                        items:
                          properties:
                            mode:
                              description: Criteria for selecting traffic by their direction.
                              enum:
                                - UNDEFINED
                                - CLIENT
                                - SERVER
                                - CLIENT_AND_SERVER
                              type: string
                            ports:
                              description: Criteria for selecting traffic by their destination port.
                              items:
                                properties:
                                  number:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                externalServers:
                  description: One or more servers exposed by the gateway externally.
                  items:
                    properties:
                      authentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Authorization is used to configure authorization of end users.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      clusters:
                        items:
                          properties:
                            labels:
                              additionalProperties:
                                type: string
                              description: Labels associated with the cluster.
                              type: object
                            name:
                              description: The name of the destination cluster.
                              type: string
                            network:
                              description: The network associated with the destination clusters.
                              type: string
                            weight:
                              description: The weight for traffic to a given destination.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      hostname:
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      rateLimiting:
                        description: Configuration for rate limiting requests.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - settings
                                - required:
                                    - externalService
                          - required:
                              - settings
                          - required:
                              - externalService
                        properties:
                          externalService:
                            description: Configure ratelimiting using an external ratelimit server.
                            properties:
                              domain:
                                description: The rate limit domain to use when calling the rate limit service.
                                type: string
                              failClosed:
                                type: boolean
                              rateLimitServerUri:
                                description: The URI at which the external rate limit server can be reached.
                                type: string
                              rules:
                                description: A set of rate limit rules.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions that are to be applied for this rate limit configuration.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - sourceCluster
                                                - required:
                                                    - destinationCluster
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - requestHeaders
                                                - required:
                                                    - headerValueMatch
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                        properties:
                                          destinationCluster:
                                            description: Rate limit on destination envoy cluster.
                                            type: object
                                          headerValueMatch:
                                            description: Rate limit on the existence of certain request headers.
                                            properties:
                                              descriptorValue:
                                                description: The value to use in the descriptor entry.
                                                type: string
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              headers:
                                                additionalProperties:
                                                  oneOf:
                                                    - not:
                                                        anyOf:
                                                          - required:
                                                              - exact
                                                          - required:
                                                              - prefix
                                                          - required:
                                                              - regex
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                                  properties:
                                                    exact:
                                                      description: Exact string match.
                                                      type: string
                                                    prefix:
                                                      description: Prefix-based match.
                                                      type: string
                                                    regex:
                                                      description: ECMAscript style regex-based match.
                                                      type: string
                                                  type: object
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on remote address of client.
                                            type: object
                                          requestHeaders:
                                            description: Rate limit on the value of certain request headers.
                                            properties:
                                              descriptorKey:
                                                description: The key to use in the descriptor entry.
                                                type: string
                                              headerName:
                                                description: The header name to be queried from the request headers.
                                                type: string
                                            type: object
                                          sourceCluster:
                                            description: Rate limit on source envoy cluster.
                                            type: object
                                        type: object
                                      type: array
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the external rate limit server RPC.
                                type: string
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                            type: object
                          settings:
                            properties:
                              failClosed:
                                type: boolean
                              rules:
                                description: A list of rules for ratelimiting.
                                items:
                                  properties:
                                    dimensions:
                                      description: A list of dimensions to define each ratelimit rule.
                                      items:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - remoteAddress
                                                - required:
                                                    - header
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                        properties:
                                          header:
                                            description: Rate limit on certain HTTP headers.
                                            properties:
                                              dontMatch:
                                                description: If set to true, the condition will be met when the header value does not match.
                                                type: boolean
                                              name:
                                                description: Name of the header to match on.
                                                type: string
                                              value:
                                                description: Value of the header to match on if matching on a specific value.
                                                oneOf:
                                                  - not:
                                                      anyOf:
                                                        - required:
                                                            - exact
                                                        - required:
                                                            - prefix
                                                        - required:
                                                            - regex
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                                properties:
                                                  exact:
                                                    description: Exact string match.
                                                    type: string
                                                  prefix:
                                                    description: Prefix-based match.
                                                    type: string
                                                  regex:
                                                    description: ECMAscript style regex-based match.
                                                    type: string
                                                type: object
                                            type: object
                                          remoteAddress:
                                            description: Rate limit on the remote address of client.
                                            properties:
                                              value:
                                                description: Ratelimit on a specific remote address.
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    limit:
                                      description: The ratelimit value that will be configured for the above rules.
                                      properties:
                                        requestsPerUnit:
                                          description: Specifies the value of the rate limit.
                                          maximum: 4294967295
                                          minimum: 0
                                          type: integer
                                        unit:
                                          description: Specifies the unit of time for rate limit.
                                          enum:
                                            - UNKNOWN
                                            - SECOND
                                            - MINUTE
                                            - HOUR
                                            - DAY
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              timeout:
                                description: The timeout in seconds for the rate limit server RPC.
                                type: string
                            type: object
                        type: object
                      redirect:
                        description: Redirect allows configuring HTTP redirect.
                        properties:
                          authority:
                            description: On a redirect, overwrite the Authority/Host portion of the URL with this value.
                            type: string
                          port:
                            maximum: 4294967295
                            minimum: 0
                            type: integer
                          redirectCode:
                            maximum: 4294967295
                            minimum: 0
                            type: integer
                          scheme:
                            description: On a redirect, overwrite the scheme with this one.
                            type: string
                          uri:
                            description: On a redirect, overwrite the Path portion of the URL with this value.
                            type: string
                        type: object
                      tls:
                        description: TLS certificate info.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                    type: object
                  type: array
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                internalServers:
                  description: One or more servers exposed by the gateway internally for cross cluster forwarding.
                  items:
                    properties:
                      authentication:
                        oneOf:
                          - not:
                              anyOf:
                                - properties:
                                    jwt:
                                      oneOf:
                                        - not:
                                            anyOf:
                                              - required:
                                                  - jwksUri
                                              - required:
                                                  - jwks
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  required:
                                    - jwt
                                - required:
                                    - rules
                          - properties:
                              jwt:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                            required:
                              - jwt
                          - required:
                              - rules
                        properties:
                          jwt:
                            description: Authenticate an HTTP request from a JWT Token attached to it.
                            properties:
                              audiences:
                                items:
                                  type: string
                                type: array
                              fromHeaders:
                                description: This field specifies the locations to extract JWT token.
                                items:
                                  properties:
                                    name:
                                      description: The HTTP header name.
                                      type: string
                                    prefix:
                                      description: The prefix that should be stripped before decoding the token.
                                      type: string
                                  type: object
                                type: array
                              issuer:
                                description: Identifies the issuer that issued the JWT.
                                type: string
                              jwks:
                                description: JSON Web Key Set of public keys to validate signature of the JWT.
                                type: string
                              jwksUri:
                                type: string
                              outputClaimToHeaders:
                                description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                items:
                                  properties:
                                    claim:
                                      description: The name of the claim to be copied from.
                                      type: string
                                    header:
                                      description: The name of the header to be created.
                                      type: string
                                  type: object
                                type: array
                              outputPayloadToHeader:
                                type: string
                            type: object
                          oidc:
                            properties:
                              authScopes:
                                description: Optional list of OAuth scopes to be claimed in the authorization request.
                                items:
                                  type: string
                                type: array
                              authType:
                                description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                enum:
                                  - DEFAULT_AUTH_TYPE
                                  - URL_ENCODED_BODY
                                  - BASIC_AUTH
                                type: string
                              clientId:
                                description: The client_id to be used in the authorize calls.
                                type: string
                              clientTokenSecret:
                                description: The name of the Kubernetes secret containing the client secret.
                                type: string
                              grantType:
                                enum:
                                  - DEFAULT_GRANT_TYPE
                                  - AUTHORIZATION_CODE
                                type: string
                              provider:
                                description: The OIDC Provider configuration.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  authorizationEndpoint:
                                    description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                    type: string
                                  issuer:
                                    description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                    type: string
                                  jwks:
                                    description: JSON string with the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  jwksUri:
                                    description: URI for the OIDC provider's JSON Web Key Sets.
                                    type: string
                                  tokenEndpoint:
                                    description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                    type: string
                                type: object
                              redirectPathMatcher:
                                type: string
                              redirectUri:
                                type: string
                              signoutPath:
                                description: The path to sign a user out, clearing their credential cookies.
                                type: string
                            type: object
                          rules:
                            description: List of rules how to authenticate an HTTP request.
                            properties:
                              jwt:
                                description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    audiences:
                                      items:
                                        type: string
                                      type: array
                                    fromHeaders:
                                      description: This field specifies the locations to extract JWT token.
                                      items:
                                        properties:
                                          name:
                                            description: The HTTP header name.
                                            type: string
                                          prefix:
                                            description: The prefix that should be stripped before decoding the token.
                                            type: string
                                        type: object
                                      type: array
                                    issuer:
                                      description: Identifies the issuer that issued the JWT.
                                      type: string
                                    jwks:
                                      description: JSON Web Key Set of public keys to validate signature of the JWT.
                                      type: string
                                    jwksUri:
                                      type: string
                                    outputClaimToHeaders:
                                      description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                      items:
                                        properties:
                                          claim:
                                            description: The name of the claim to be copied from.
                                            type: string
                                          header:
                                            description: The name of the header to be created.
                                            type: string
                                        type: object
                                      type: array
                                    outputPayloadToHeader:
                                      type: string
                                  type: object
                                type: array
                            type: object
                        type: object
                      authorization:
                        description: Authorization is used to configure authorization of end user and traffic.
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - external
                                - required:
                                    - local
                          - required:
                              - external
                          - required:
                              - local
                        properties:
                          external:
                            properties:
                              includeRequestHeaders:
                                items:
                                  type: string
                                type: array
                              tls:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - files
                                        - required:
                                            - secretName
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                                properties:
                                  files:
                                    description: TLS key source from files.
                                    properties:
                                      caCertificates:
                                        type: string
                                      clientCertificate:
                                        description: Certificate file to authenticate the client.
                                        type: string
                                      privateKey:
                                        description: Private key file associated with the client certificate.
                                        type: string
                                    type: object
                                  mode:
                                    enum:
                                      - DISABLED
                                      - SIMPLE
                                      - MUTUAL
                                    type: string
                                  secretName:
                                    description: TLS key source from a Kubernetes Secret.
                                    type: string
                                  subjectAltNames:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              uri:
                                type: string
                            type: object
                          local:
                            properties:
                              rules:
                                items:
                                  properties:
                                    from:
                                      items:
                                        properties:
                                          jwt:
                                            description: JWT configuration to identity the subject.
                                            properties:
                                              iss:
                                                type: string
                                              other:
                                                additionalProperties:
                                                  type: string
                                                description: A set of arbitrary claims that are required to qualify the subject.
                                                type: object
                                              sub:
                                                type: string
                                            type: object
                                        type: object
                                      type: array
                                    name:
                                      description: A friendly name to identify the binding.
                                      type: string
                                    to:
                                      items:
                                        properties:
                                          methods:
                                            description: The HTTP methods that are allowed by this rule.
                                            items:
                                              type: string
                                            type: array
                                          paths:
                                            description: The request path where the request is made against.
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                        type: object
                      clusters:
                        items:
                          properties:
                            labels:
                              additionalProperties:
                                type: string
                              description: Labels associated with the cluster.
                              type: object
                            name:
                              description: The name of the destination cluster.
                              type: string
                            network:
                              description: The network associated with the destination clusters.
                              type: string
                            weight:
                              description: The weight for traffic to a given destination.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      hostname:
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                    type: object
                  type: array
                passthroughServers:
                  description: One or more tls passthrough servers exposed by the gateway externally.
                  items:
                    properties:
                      clusters:
                        items:
                          properties:
                            labels:
                              additionalProperties:
                                type: string
                              description: Labels associated with the cluster.
                              type: object
                            name:
                              description: The name of the destination cluster.
                              type: string
                            network:
                              description: The network associated with the destination clusters.
                              type: string
                            weight:
                              description: The weight for traffic to a given destination.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      hostname:
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                    type: object
                  type: array
                tcpExternalServers:
                  description: One or more tcp servers exposed by the gateway externally.
                  items:
                    properties:
                      clusters:
                        description: The destination clusters contain ingress gateways exposing the service.
                        items:
                          properties:
                            labels:
                              additionalProperties:
                                type: string
                              description: Labels associated with the cluster.
                              type: object
                            name:
                              description: The name of the destination cluster.
                              type: string
                            network:
                              description: The network associated with the destination clusters.
                              type: string
                            weight:
                              description: The weight for traffic to a given destination.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      hostname:
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                      port:
                        description: The port where the server is exposed.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      tls:
                        description: TLS certificate information to terminate TLS.
                        properties:
                          cipherSuites:
                            description: List of cipher suites to be used for TLS connections.
                            items:
                              type: string
                            type: array
                          files:
                            properties:
                              caCertificates:
                                type: string
                              privateKey:
                                type: string
                              serverCertificate:
                                type: string
                            type: object
                          maxProtocolVersion:
                            description: Set the maximum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          minProtocolVersion:
                            description: Set the minimum supported TLS protocol version.
                            enum:
                              - TLS_AUTO
                              - TLSV1_0
                              - TLSV1_1
                              - TLSV1_2
                              - TLSV1_3
                            type: string
                          mode:
                            enum:
                              - DISABLED
                              - SIMPLE
                              - MUTUAL
                              - OPTIONAL_MUTUAL
                            type: string
                          secretName:
                            type: string
                          subjectAltNames:
                            items:
                              type: string
                            type: array
                        type: object
                    type: object
                  type: array
                tcpInternalServers:
                  description: One or more tcp servers exposed by the gateway for mesh internal traffic.
                  items:
                    properties:
                      clusters:
                        description: The destination clusters contain ingress gateways exposing the service.
                        items:
                          properties:
                            labels:
                              additionalProperties:
                                type: string
                              description: Labels associated with the cluster.
                              type: object
                            name:
                              description: The name of the destination cluster.
                              type: string
                            network:
                              description: The network associated with the destination clusters.
                              type: string
                            weight:
                              description: The weight for traffic to a given destination.
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      hostname:
                        description: The name of the service used.
                        type: string
                      name:
                        description: A name assigned to the server.
                        type: string
                    type: object
                  type: array
                waf:
                  description: WAF settings to be enabled for traffic passing through this Tier1 gateway.
                  properties:
                    rules:
                      description: Rules to be leveraged by WAF.
                      items:
                        type: string
                      type: array
                  type: object
                workloadSelector:
                  properties:
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    namespace:
                      description: The namespace where the workload resides.
                      type: string
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: groups.istiointernal.tsb.tetrate.io
spec:
  group: istiointernal.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - istiointernal-tsb-tetrate-io
    kind: Group
    listKind: GroupList
    plural: groups
    shortNames:
      - tiig
    singular: group
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                namespaceSelector:
                  description: Set of namespaces owned exclusively by this group.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: apiaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: APIAccessBindings
    listKind: APIAccessBindingsList
    plural: apiaccessbindingss
    shortNames:
      - tapib
    singular: apiaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/api']
          name: API
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/application']
          name: Application
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`APIAccessBindings` assigns permissions to users of APIs.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: accessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: AccessBindings
    listKind: AccessBindingsList
    plural: accessbindingss
    shortNames:
      - tab
    singular: accessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/fqn']
          name: FQN
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`AccessBindings` assigns permissions to users of any TSB resource.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: applicationaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: ApplicationAccessBindings
    listKind: ApplicationAccessBindingsList
    plural: applicationaccessbindingss
    shortNames:
      - tappb
    singular: applicationaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/application']
          name: Application
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`ApplicationAccessBindings` assigns permissions to users of applications.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: gatewayaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: GatewayAccessBindings
    listKind: GatewayAccessBindingsList
    plural: gatewayaccessbindingss
    shortNames:
      - tgb
    singular: gatewayaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/gatewayGroup']
          name: Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`GatewayAccessBindings` assigns permissions to users of gateway groups.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: istiointernalaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: IstioInternalAccessBindings
    listKind: IstioInternalAccessBindingsList
    plural: istiointernalaccessbindingss
    shortNames:
      - ttrb
    singular: istiointernalaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/istioInternalGroup']
          name: Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`IstioInternalAccessBindings` assigns permissions to users of istio internal groups.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: organizationaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: OrganizationAccessBindings
    listKind: OrganizationAccessBindingsList
    plural: organizationaccessbindingss
    shortNames:
      - tob
    singular: organizationaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`OrganizationAccessBindings` assigns permissions to users of organizations.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: roles.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: Role
    listKind: RoleList
    plural: roles
    shortNames:
      - tr
    singular: role
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                rules:
                  description: A set of rules that define the permissions associated with each API group.
                  items:
                    properties:
                      permissions:
                        description: The set of actions allowed for these APIs.
                        items:
                          enum:
                            - INVALID
                            - READ
                            - WRITE
                            - CREATE
                            - DELETE
                            - SET_POLICY
                          type: string
                        type: array
                      types:
                        description: The set of API groups and the api Kinds within the group on which this rule is applicable.
                        items:
                          properties:
                            apiGroup:
                              description: A specific API group such as traffic.tsb.tetrate.io/v2.
                              type: string
                            kinds:
                              description: Specific kinds of APIs under the API group.
                              items:
                                type: string
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: securityaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: SecurityAccessBindings
    listKind: SecurityAccessBindingsList
    plural: securityaccessbindingss
    shortNames:
      - tsb
    singular: securityaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/securityGroup']
          name: Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`SecurityAccessBindings` assigns permissions to users of security groups.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tenantaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: TenantAccessBindings
    listKind: TenantAccessBindingsList
    plural: tenantaccessbindingss
    shortNames:
      - ttb
    singular: tenantaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`TenantAccessBindings` assigns permissions to users of tenants.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: trafficaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: TrafficAccessBindings
    listKind: TrafficAccessBindingsList
    plural: trafficaccessbindingss
    shortNames:
      - ttrb
    singular: trafficaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/trafficGroup']
          name: Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`TrafficAccessBindings` assigns permissions to users of traffic groups.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: workspaceaccessbindingss.rbac.tsb.tetrate.io
spec:
  group: rbac.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - rbac-tsb-tetrate-io
    kind: WorkspaceAccessBindings
    listKind: WorkspaceAccessBindingsList
    plural: workspaceaccessbindingss
    shortNames:
      - twb
    singular: workspaceaccessbindings
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              description: '`WorkspaceAccessBindings` assigns permissions to users of workspaces.'
              properties:
                allow:
                  items:
                    properties:
                      role:
                        type: string
                      subjects:
                        items:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - user
                                  - required:
                                      - team
                                  - required:
                                      - serviceAccount
                            - required:
                                - user
                            - required:
                                - team
                            - required:
                                - serviceAccount
                          properties:
                            serviceAccount:
                              description: A service account in TSB.
                              type: string
                            team:
                              description: A team in TSB, created through LDAP sync or API.
                              type: string
                            user:
                              description: A user in TSB, created through LDAP sync or API.
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                description:
                  description: A description of the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: groups.security.tsb.tetrate.io
spec:
  group: security.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - security-tsb-tetrate-io
    kind: Group
    listKind: GroupList
    plural: groups
    shortNames:
      - tsg
    singular: group
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.configMode
          name: Mode
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                configMode:
                  enum:
                    - BRIDGED
                    - DIRECT
                  type: string
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                namespaceSelector:
                  description: Set of namespaces owned exclusively by this group.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
                securityDomain:
                  description: Security domains can be used to group different resources under the same security domain.
                  type: string
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: securitysettings.security.tsb.tetrate.io
spec:
  group: security.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - security-tsb-tetrate-io
    kind: SecuritySetting
    listKind: SecuritySettingList
    plural: securitysettings
    shortNames:
      - tss
    singular: securitysetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/securityGroup']
          name: Security-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                authentication:
                  enum:
                    - UNSET
                    - OPTIONAL
                    - REQUIRED
                  type: string
                authenticationSettings:
                  properties:
                    http:
                      oneOf:
                        - not:
                            anyOf:
                              - properties:
                                  jwt:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                required:
                                  - jwt
                              - required:
                                  - rules
                        - properties:
                            jwt:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                - required:
                                    - jwksUri
                                - required:
                                    - jwks
                          required:
                            - jwt
                        - required:
                            - rules
                      properties:
                        jwt:
                          description: Authenticate an HTTP request from a JWT Token attached to it.
                          properties:
                            audiences:
                              items:
                                type: string
                              type: array
                            fromHeaders:
                              description: This field specifies the locations to extract JWT token.
                              items:
                                properties:
                                  name:
                                    description: The HTTP header name.
                                    type: string
                                  prefix:
                                    description: The prefix that should be stripped before decoding the token.
                                    type: string
                                type: object
                              type: array
                            issuer:
                              description: Identifies the issuer that issued the JWT.
                              type: string
                            jwks:
                              description: JSON Web Key Set of public keys to validate signature of the JWT.
                              type: string
                            jwksUri:
                              type: string
                            outputClaimToHeaders:
                              description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                              items:
                                properties:
                                  claim:
                                    description: The name of the claim to be copied from.
                                    type: string
                                  header:
                                    description: The name of the header to be created.
                                    type: string
                                type: object
                              type: array
                            outputPayloadToHeader:
                              type: string
                          type: object
                        oidc:
                          properties:
                            authScopes:
                              description: Optional list of OAuth scopes to be claimed in the authorization request.
                              items:
                                type: string
                              type: array
                            authType:
                              description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                              enum:
                                - DEFAULT_AUTH_TYPE
                                - URL_ENCODED_BODY
                                - BASIC_AUTH
                              type: string
                            clientId:
                              description: The client_id to be used in the authorize calls.
                              type: string
                            clientTokenSecret:
                              description: The name of the Kubernetes secret containing the client secret.
                              type: string
                            grantType:
                              enum:
                                - DEFAULT_GRANT_TYPE
                                - AUTHORIZATION_CODE
                              type: string
                            provider:
                              description: The OIDC Provider configuration.
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                - required:
                                    - jwksUri
                                - required:
                                    - jwks
                              properties:
                                authorizationEndpoint:
                                  description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                  type: string
                                issuer:
                                  description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                  type: string
                                jwks:
                                  description: JSON string with the OIDC provider's JSON Web Key Sets.
                                  type: string
                                jwksUri:
                                  description: URI for the OIDC provider's JSON Web Key Sets.
                                  type: string
                                tokenEndpoint:
                                  description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                  type: string
                              type: object
                            redirectPathMatcher:
                              type: string
                            redirectUri:
                              type: string
                            signoutPath:
                              description: The path to sign a user out, clearing their credential cookies.
                              type: string
                          type: object
                        rules:
                          description: List of rules how to authenticate an HTTP request.
                          properties:
                            jwt:
                              description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                              items:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - jwksUri
                                        - required:
                                            - jwks
                                  - required:
                                      - jwksUri
                                  - required:
                                      - jwks
                                properties:
                                  audiences:
                                    items:
                                      type: string
                                    type: array
                                  fromHeaders:
                                    description: This field specifies the locations to extract JWT token.
                                    items:
                                      properties:
                                        name:
                                          description: The HTTP header name.
                                          type: string
                                        prefix:
                                          description: The prefix that should be stripped before decoding the token.
                                          type: string
                                      type: object
                                    type: array
                                  issuer:
                                    description: Identifies the issuer that issued the JWT.
                                    type: string
                                  jwks:
                                    description: JSON Web Key Set of public keys to validate signature of the JWT.
                                    type: string
                                  jwksUri:
                                    type: string
                                  outputClaimToHeaders:
                                    description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                    items:
                                      properties:
                                        claim:
                                          description: The name of the claim to be copied from.
                                          type: string
                                        header:
                                          description: The name of the header to be created.
                                          type: string
                                      type: object
                                    type: array
                                  outputPayloadToHeader:
                                    type: string
                                type: object
                              type: array
                          type: object
                      type: object
                    trafficMode:
                      enum:
                        - UNSET
                        - OPTIONAL
                        - REQUIRED
                      type: string
                  type: object
                authorization:
                  properties:
                    http:
                      description: This is for configuring HTTP request authorization.
                      oneOf:
                        - not:
                            anyOf:
                              - required:
                                  - external
                              - required:
                                  - local
                        - required:
                            - external
                        - required:
                            - local
                      properties:
                        external:
                          properties:
                            includeRequestHeaders:
                              items:
                                type: string
                              type: array
                            tls:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - files
                                      - required:
                                          - secretName
                                - required:
                                    - files
                                - required:
                                    - secretName
                              properties:
                                files:
                                  description: TLS key source from files.
                                  properties:
                                    caCertificates:
                                      type: string
                                    clientCertificate:
                                      description: Certificate file to authenticate the client.
                                      type: string
                                    privateKey:
                                      description: Private key file associated with the client certificate.
                                      type: string
                                  type: object
                                mode:
                                  enum:
                                    - DISABLED
                                    - SIMPLE
                                    - MUTUAL
                                  type: string
                                secretName:
                                  description: TLS key source from a Kubernetes Secret.
                                  type: string
                                subjectAltNames:
                                  items:
                                    type: string
                                  type: array
                              type: object
                            uri:
                              type: string
                          type: object
                        local:
                          properties:
                            rules:
                              items:
                                properties:
                                  from:
                                    items:
                                      properties:
                                        jwt:
                                          description: JWT configuration to identity the subject.
                                          properties:
                                            iss:
                                              type: string
                                            other:
                                              additionalProperties:
                                                type: string
                                              description: A set of arbitrary claims that are required to qualify the subject.
                                              type: object
                                            sub:
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  name:
                                    description: A friendly name to identify the binding.
                                    type: string
                                  to:
                                    items:
                                      properties:
                                        methods:
                                          description: The HTTP methods that are allowed by this rule.
                                          items:
                                            type: string
                                          type: array
                                        paths:
                                          description: The request path where the request is made against.
                                          items:
                                            type: string
                                          type: array
                                      type: object
                                    type: array
                                type: object
                              type: array
                          type: object
                      type: object
                    mode:
                      description: A short cut for specifying the set of allowed callers.
                      enum:
                        - UNSET
                        - NAMESPACE
                        - GROUP
                        - WORKSPACE
                        - CLUSTER
                        - DISABLED
                        - CUSTOM
                        - RULES
                      type: string
                    rules:
                      properties:
                        allow:
                          description: Allow specifies a list of rules.
                          items:
                            properties:
                              from:
                                description: From specifies the source of a request.
                                properties:
                                  fqn:
                                    description: The target resource identified by FQN which will be the source of a request.
                                    type: string
                                type: object
                              to:
                                description: To specifies the destination of a request.
                                properties:
                                  fqn:
                                    description: The target resource identified by FQN which will be the destination of a request.
                                    type: string
                                type: object
                            type: object
                          type: array
                        deny:
                          description: Deny specifies a list of rules.
                          items:
                            properties:
                              from:
                                description: From specifies the source of a request.
                                properties:
                                  fqn:
                                    description: The target resource identified by FQN which will be the source of a request.
                                    type: string
                                type: object
                              to:
                                description: To specifies the destination of a request.
                                properties:
                                  fqn:
                                    description: The target resource identified by FQN which will be the destination of a request.
                                    type: string
                                type: object
                            type: object
                          type: array
                        denyAll:
                          description: Deny all specifies whether all requests should be rejected.
                          type: boolean
                      type: object
                    serviceAccounts:
                      items:
                        type: string
                      type: array
                  type: object
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                extension:
                  items:
                    properties:
                      config:
                        description: Configuration parameters sent to the WASM plugin execution.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      fqn:
                        description: Fqn of the extension to be executed.
                        type: string
                      match:
                        description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                        items:
                          properties:
                            mode:
                              description: Criteria for selecting traffic by their direction.
                              enum:
                                - UNDEFINED
                                - CLIENT
                                - SERVER
                                - CLIENT_AND_SERVER
                              type: string
                            ports:
                              description: Criteria for selecting traffic by their destination port.
                              items:
                                properties:
                                  number:
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  type: array
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                propagationStrategy:
                  enum:
                    - REPLACE
                    - STRICTER
                  type: string
                waf:
                  description: 'NOTICE: this feature is in alpha stage and under active development.'
                  properties:
                    rules:
                      description: Rules to be leveraged by WAF.
                      items:
                        type: string
                      type: array
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: servicesecuritysettings.security.tsb.tetrate.io
spec:
  group: security.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - security-tsb-tetrate-io
    kind: ServiceSecuritySetting
    listKind: ServiceSecuritySettingList
    plural: servicesecuritysettings
    shortNames:
      - tsss
    singular: servicesecuritysetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/securityGroup']
          name: Security-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                service:
                  description: The service on which the configuration is being applied.
                  type: string
                settings:
                  description: Security settings to apply to this service.
                  properties:
                    authentication:
                      enum:
                        - UNSET
                        - OPTIONAL
                        - REQUIRED
                      type: string
                    authenticationSettings:
                      properties:
                        http:
                          oneOf:
                            - not:
                                anyOf:
                                  - properties:
                                      jwt:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    required:
                                      - jwt
                                  - required:
                                      - rules
                            - properties:
                                jwt:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                              required:
                                - jwt
                            - required:
                                - rules
                          properties:
                            jwt:
                              description: Authenticate an HTTP request from a JWT Token attached to it.
                              properties:
                                audiences:
                                  items:
                                    type: string
                                  type: array
                                fromHeaders:
                                  description: This field specifies the locations to extract JWT token.
                                  items:
                                    properties:
                                      name:
                                        description: The HTTP header name.
                                        type: string
                                      prefix:
                                        description: The prefix that should be stripped before decoding the token.
                                        type: string
                                    type: object
                                  type: array
                                issuer:
                                  description: Identifies the issuer that issued the JWT.
                                  type: string
                                jwks:
                                  description: JSON Web Key Set of public keys to validate signature of the JWT.
                                  type: string
                                jwksUri:
                                  type: string
                                outputClaimToHeaders:
                                  description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                  items:
                                    properties:
                                      claim:
                                        description: The name of the claim to be copied from.
                                        type: string
                                      header:
                                        description: The name of the header to be created.
                                        type: string
                                    type: object
                                  type: array
                                outputPayloadToHeader:
                                  type: string
                              type: object
                            oidc:
                              properties:
                                authScopes:
                                  description: Optional list of OAuth scopes to be claimed in the authorization request.
                                  items:
                                    type: string
                                  type: array
                                authType:
                                  description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                  enum:
                                    - DEFAULT_AUTH_TYPE
                                    - URL_ENCODED_BODY
                                    - BASIC_AUTH
                                  type: string
                                clientId:
                                  description: The client_id to be used in the authorize calls.
                                  type: string
                                clientTokenSecret:
                                  description: The name of the Kubernetes secret containing the client secret.
                                  type: string
                                grantType:
                                  enum:
                                    - DEFAULT_GRANT_TYPE
                                    - AUTHORIZATION_CODE
                                  type: string
                                provider:
                                  description: The OIDC Provider configuration.
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    - required:
                                        - jwksUri
                                    - required:
                                        - jwks
                                  properties:
                                    authorizationEndpoint:
                                      description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                      type: string
                                    issuer:
                                      description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                      type: string
                                    jwks:
                                      description: JSON string with the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    jwksUri:
                                      description: URI for the OIDC provider's JSON Web Key Sets.
                                      type: string
                                    tokenEndpoint:
                                      description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                      type: string
                                  type: object
                                redirectPathMatcher:
                                  type: string
                                redirectUri:
                                  type: string
                                signoutPath:
                                  description: The path to sign a user out, clearing their credential cookies.
                                  type: string
                              type: object
                            rules:
                              description: List of rules how to authenticate an HTTP request.
                              properties:
                                jwt:
                                  description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                  items:
                                    oneOf:
                                      - not:
                                          anyOf:
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                      - required:
                                          - jwksUri
                                      - required:
                                          - jwks
                                    properties:
                                      audiences:
                                        items:
                                          type: string
                                        type: array
                                      fromHeaders:
                                        description: This field specifies the locations to extract JWT token.
                                        items:
                                          properties:
                                            name:
                                              description: The HTTP header name.
                                              type: string
                                            prefix:
                                              description: The prefix that should be stripped before decoding the token.
                                              type: string
                                          type: object
                                        type: array
                                      issuer:
                                        description: Identifies the issuer that issued the JWT.
                                        type: string
                                      jwks:
                                        description: JSON Web Key Set of public keys to validate signature of the JWT.
                                        type: string
                                      jwksUri:
                                        type: string
                                      outputClaimToHeaders:
                                        description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                        items:
                                          properties:
                                            claim:
                                              description: The name of the claim to be copied from.
                                              type: string
                                            header:
                                              description: The name of the header to be created.
                                              type: string
                                          type: object
                                        type: array
                                      outputPayloadToHeader:
                                        type: string
                                    type: object
                                  type: array
                              type: object
                          type: object
                        trafficMode:
                          enum:
                            - UNSET
                            - OPTIONAL
                            - REQUIRED
                          type: string
                      type: object
                    authorization:
                      properties:
                        http:
                          description: This is for configuring HTTP request authorization.
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - external
                                  - required:
                                      - local
                            - required:
                                - external
                            - required:
                                - local
                          properties:
                            external:
                              properties:
                                includeRequestHeaders:
                                  items:
                                    type: string
                                  type: array
                                tls:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - files
                                          - required:
                                              - secretName
                                    - required:
                                        - files
                                    - required:
                                        - secretName
                                  properties:
                                    files:
                                      description: TLS key source from files.
                                      properties:
                                        caCertificates:
                                          type: string
                                        clientCertificate:
                                          description: Certificate file to authenticate the client.
                                          type: string
                                        privateKey:
                                          description: Private key file associated with the client certificate.
                                          type: string
                                      type: object
                                    mode:
                                      enum:
                                        - DISABLED
                                        - SIMPLE
                                        - MUTUAL
                                      type: string
                                    secretName:
                                      description: TLS key source from a Kubernetes Secret.
                                      type: string
                                    subjectAltNames:
                                      items:
                                        type: string
                                      type: array
                                  type: object
                                uri:
                                  type: string
                              type: object
                            local:
                              properties:
                                rules:
                                  items:
                                    properties:
                                      from:
                                        items:
                                          properties:
                                            jwt:
                                              description: JWT configuration to identity the subject.
                                              properties:
                                                iss:
                                                  type: string
                                                other:
                                                  additionalProperties:
                                                    type: string
                                                  description: A set of arbitrary claims that are required to qualify the subject.
                                                  type: object
                                                sub:
                                                  type: string
                                              type: object
                                          type: object
                                        type: array
                                      name:
                                        description: A friendly name to identify the binding.
                                        type: string
                                      to:
                                        items:
                                          properties:
                                            methods:
                                              description: The HTTP methods that are allowed by this rule.
                                              items:
                                                type: string
                                              type: array
                                            paths:
                                              description: The request path where the request is made against.
                                              items:
                                                type: string
                                              type: array
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              type: object
                          type: object
                        mode:
                          description: A short cut for specifying the set of allowed callers.
                          enum:
                            - UNSET
                            - NAMESPACE
                            - GROUP
                            - WORKSPACE
                            - CLUSTER
                            - DISABLED
                            - CUSTOM
                            - RULES
                          type: string
                        rules:
                          properties:
                            allow:
                              description: Allow specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            deny:
                              description: Deny specifies a list of rules.
                              items:
                                properties:
                                  from:
                                    description: From specifies the source of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the source of a request.
                                        type: string
                                    type: object
                                  to:
                                    description: To specifies the destination of a request.
                                    properties:
                                      fqn:
                                        description: The target resource identified by FQN which will be the destination of a request.
                                        type: string
                                    type: object
                                type: object
                              type: array
                            denyAll:
                              description: Deny all specifies whether all requests should be rejected.
                              type: boolean
                          type: object
                        serviceAccounts:
                          items:
                            type: string
                          type: array
                      type: object
                    configGenerationMetadata:
                      description: Metadata values that will be add into the Istio generated configurations.
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                          type: object
                      type: object
                    description:
                      description: A description of the resource.
                      type: string
                    displayName:
                      description: User friendly name for the resource.
                      type: string
                    etag:
                      description: The etag for the resource.
                      type: string
                    extension:
                      items:
                        properties:
                          config:
                            description: Configuration parameters sent to the WASM plugin execution.
                            type: object
                          fqn:
                            description: Fqn of the extension to be executed.
                            type: string
                          match:
                            description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                            items:
                              properties:
                                mode:
                                  description: Criteria for selecting traffic by their direction.
                                  enum:
                                    - UNDEFINED
                                    - CLIENT
                                    - SERVER
                                    - CLIENT_AND_SERVER
                                  type: string
                                ports:
                                  description: Criteria for selecting traffic by their destination port.
                                  items:
                                    properties:
                                      number:
                                        maximum: 4294967295
                                        minimum: 0
                                        type: integer
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      type: array
                    fqn:
                      description: Fully-qualified name of the resource.
                      type: string
                    propagationStrategy:
                      enum:
                        - REPLACE
                        - STRICTER
                      type: string
                    waf:
                      description: 'NOTICE: this feature is in alpha stage and under active development.'
                      properties:
                        rules:
                          description: Rules to be leveraged by WAF.
                          items:
                            type: string
                          type: array
                      type: object
                  type: object
                subsets:
                  items:
                    properties:
                      name:
                        description: Name used to refer to the subset.
                        type: string
                      settings:
                        description: Security settings to apply to this service subset.
                        properties:
                          authentication:
                            enum:
                              - UNSET
                              - OPTIONAL
                              - REQUIRED
                            type: string
                          authenticationSettings:
                            properties:
                              http:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - properties:
                                            jwt:
                                              oneOf:
                                                - not:
                                                    anyOf:
                                                      - required:
                                                          - jwksUri
                                                      - required:
                                                          - jwks
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          required:
                                            - jwt
                                        - required:
                                            - rules
                                  - properties:
                                      jwt:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                    required:
                                      - jwt
                                  - required:
                                      - rules
                                properties:
                                  jwt:
                                    description: Authenticate an HTTP request from a JWT Token attached to it.
                                    properties:
                                      audiences:
                                        items:
                                          type: string
                                        type: array
                                      fromHeaders:
                                        description: This field specifies the locations to extract JWT token.
                                        items:
                                          properties:
                                            name:
                                              description: The HTTP header name.
                                              type: string
                                            prefix:
                                              description: The prefix that should be stripped before decoding the token.
                                              type: string
                                          type: object
                                        type: array
                                      issuer:
                                        description: Identifies the issuer that issued the JWT.
                                        type: string
                                      jwks:
                                        description: JSON Web Key Set of public keys to validate signature of the JWT.
                                        type: string
                                      jwksUri:
                                        type: string
                                      outputClaimToHeaders:
                                        description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                        items:
                                          properties:
                                            claim:
                                              description: The name of the claim to be copied from.
                                              type: string
                                            header:
                                              description: The name of the header to be created.
                                              type: string
                                          type: object
                                        type: array
                                      outputPayloadToHeader:
                                        type: string
                                    type: object
                                  oidc:
                                    properties:
                                      authScopes:
                                        description: Optional list of OAuth scopes to be claimed in the authorization request.
                                        items:
                                          type: string
                                        type: array
                                      authType:
                                        description: Defines how client_id and client_secret are sent in OAuth client to OAuth server requests.
                                        enum:
                                          - DEFAULT_AUTH_TYPE
                                          - URL_ENCODED_BODY
                                          - BASIC_AUTH
                                        type: string
                                      clientId:
                                        description: The client_id to be used in the authorize calls.
                                        type: string
                                      clientTokenSecret:
                                        description: The name of the Kubernetes secret containing the client secret.
                                        type: string
                                      grantType:
                                        enum:
                                          - DEFAULT_GRANT_TYPE
                                          - AUTHORIZATION_CODE
                                        type: string
                                      provider:
                                        description: The OIDC Provider configuration.
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - jwksUri
                                                - required:
                                                    - jwks
                                          - required:
                                              - jwksUri
                                          - required:
                                              - jwks
                                        properties:
                                          authorizationEndpoint:
                                            description: The OIDC Provider's [authorization endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint).
                                            type: string
                                          issuer:
                                            description: The OIDC Provider's [issuer identifier](https://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery).
                                            type: string
                                          jwks:
                                            description: JSON string with the OIDC provider's JSON Web Key Sets.
                                            type: string
                                          jwksUri:
                                            description: URI for the OIDC provider's JSON Web Key Sets.
                                            type: string
                                          tokenEndpoint:
                                            description: The OIDC Provider's [token endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).
                                            type: string
                                        type: object
                                      redirectPathMatcher:
                                        type: string
                                      redirectUri:
                                        type: string
                                      signoutPath:
                                        description: The path to sign a user out, clearing their credential cookies.
                                        type: string
                                    type: object
                                  rules:
                                    description: List of rules how to authenticate an HTTP request.
                                    properties:
                                      jwt:
                                        description: List of rules how to authenticate an HTTP request from a JWT Token attached to it.
                                        items:
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - jwksUri
                                                  - required:
                                                      - jwks
                                            - required:
                                                - jwksUri
                                            - required:
                                                - jwks
                                          properties:
                                            audiences:
                                              items:
                                                type: string
                                              type: array
                                            fromHeaders:
                                              description: This field specifies the locations to extract JWT token.
                                              items:
                                                properties:
                                                  name:
                                                    description: The HTTP header name.
                                                    type: string
                                                  prefix:
                                                    description: The prefix that should be stripped before decoding the token.
                                                    type: string
                                                type: object
                                              type: array
                                            issuer:
                                              description: Identifies the issuer that issued the JWT.
                                              type: string
                                            jwks:
                                              description: JSON Web Key Set of public keys to validate signature of the JWT.
                                              type: string
                                            jwksUri:
                                              type: string
                                            outputClaimToHeaders:
                                              description: This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
                                              items:
                                                properties:
                                                  claim:
                                                    description: The name of the claim to be copied from.
                                                    type: string
                                                  header:
                                                    description: The name of the header to be created.
                                                    type: string
                                                type: object
                                              type: array
                                            outputPayloadToHeader:
                                              type: string
                                          type: object
                                        type: array
                                    type: object
                                type: object
                              trafficMode:
                                enum:
                                  - UNSET
                                  - OPTIONAL
                                  - REQUIRED
                                type: string
                            type: object
                          authorization:
                            properties:
                              http:
                                description: This is for configuring HTTP request authorization.
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - external
                                        - required:
                                            - local
                                  - required:
                                      - external
                                  - required:
                                      - local
                                properties:
                                  external:
                                    properties:
                                      includeRequestHeaders:
                                        items:
                                          type: string
                                        type: array
                                      tls:
                                        oneOf:
                                          - not:
                                              anyOf:
                                                - required:
                                                    - files
                                                - required:
                                                    - secretName
                                          - required:
                                              - files
                                          - required:
                                              - secretName
                                        properties:
                                          files:
                                            description: TLS key source from files.
                                            properties:
                                              caCertificates:
                                                type: string
                                              clientCertificate:
                                                description: Certificate file to authenticate the client.
                                                type: string
                                              privateKey:
                                                description: Private key file associated with the client certificate.
                                                type: string
                                            type: object
                                          mode:
                                            enum:
                                              - DISABLED
                                              - SIMPLE
                                              - MUTUAL
                                            type: string
                                          secretName:
                                            description: TLS key source from a Kubernetes Secret.
                                            type: string
                                          subjectAltNames:
                                            items:
                                              type: string
                                            type: array
                                        type: object
                                      uri:
                                        type: string
                                    type: object
                                  local:
                                    properties:
                                      rules:
                                        items:
                                          properties:
                                            from:
                                              items:
                                                properties:
                                                  jwt:
                                                    description: JWT configuration to identity the subject.
                                                    properties:
                                                      iss:
                                                        type: string
                                                      other:
                                                        additionalProperties:
                                                          type: string
                                                        description: A set of arbitrary claims that are required to qualify the subject.
                                                        type: object
                                                      sub:
                                                        type: string
                                                    type: object
                                                type: object
                                              type: array
                                            name:
                                              description: A friendly name to identify the binding.
                                              type: string
                                            to:
                                              items:
                                                properties:
                                                  methods:
                                                    description: The HTTP methods that are allowed by this rule.
                                                    items:
                                                      type: string
                                                    type: array
                                                  paths:
                                                    description: The request path where the request is made against.
                                                    items:
                                                      type: string
                                                    type: array
                                                type: object
                                              type: array
                                          type: object
                                        type: array
                                    type: object
                                type: object
                              mode:
                                description: A short cut for specifying the set of allowed callers.
                                enum:
                                  - UNSET
                                  - NAMESPACE
                                  - GROUP
                                  - WORKSPACE
                                  - CLUSTER
                                  - DISABLED
                                  - CUSTOM
                                  - RULES
                                type: string
                              rules:
                                properties:
                                  allow:
                                    description: Allow specifies a list of rules.
                                    items:
                                      properties:
                                        from:
                                          description: From specifies the source of a request.
                                          properties:
                                            fqn:
                                              description: The target resource identified by FQN which will be the source of a request.
                                              type: string
                                          type: object
                                        to:
                                          description: To specifies the destination of a request.
                                          properties:
                                            fqn:
                                              description: The target resource identified by FQN which will be the destination of a request.
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  deny:
                                    description: Deny specifies a list of rules.
                                    items:
                                      properties:
                                        from:
                                          description: From specifies the source of a request.
                                          properties:
                                            fqn:
                                              description: The target resource identified by FQN which will be the source of a request.
                                              type: string
                                          type: object
                                        to:
                                          description: To specifies the destination of a request.
                                          properties:
                                            fqn:
                                              description: The target resource identified by FQN which will be the destination of a request.
                                              type: string
                                          type: object
                                      type: object
                                    type: array
                                  denyAll:
                                    description: Deny all specifies whether all requests should be rejected.
                                    type: boolean
                                type: object
                              serviceAccounts:
                                items:
                                  type: string
                                type: array
                            type: object
                          configGenerationMetadata:
                            description: Metadata values that will be add into the Istio generated configurations.
                            properties:
                              annotations:
                                additionalProperties:
                                  type: string
                                description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                                type: object
                              labels:
                                additionalProperties:
                                  type: string
                                description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                                type: object
                            type: object
                          description:
                            description: A description of the resource.
                            type: string
                          displayName:
                            description: User friendly name for the resource.
                            type: string
                          etag:
                            description: The etag for the resource.
                            type: string
                          extension:
                            items:
                              properties:
                                config:
                                  description: Configuration parameters sent to the WASM plugin execution.
                                  type: object
                                fqn:
                                  description: Fqn of the extension to be executed.
                                  type: string
                                match:
                                  description: Specifies the criteria to determine which traffic is passed to WasmExtension.
                                  items:
                                    properties:
                                      mode:
                                        description: Criteria for selecting traffic by their direction.
                                        enum:
                                          - UNDEFINED
                                          - CLIENT
                                          - SERVER
                                          - CLIENT_AND_SERVER
                                        type: string
                                      ports:
                                        description: Criteria for selecting traffic by their destination port.
                                        items:
                                          properties:
                                            number:
                                              maximum: 4294967295
                                              minimum: 0
                                              type: integer
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              type: object
                            type: array
                          fqn:
                            description: Fully-qualified name of the resource.
                            type: string
                          propagationStrategy:
                            enum:
                              - REPLACE
                              - STRICTER
                            type: string
                          waf:
                            description: 'NOTICE: this feature is in alpha stage and under active development.'
                            properties:
                              rules:
                                description: Rules to be leveraged by WAF.
                                items:
                                  type: string
                                type: array
                            type: object
                        type: object
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: groups.traffic.tsb.tetrate.io
spec:
  group: traffic.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - traffic-tsb-tetrate-io
    kind: Group
    listKind: GroupList
    plural: groups
    shortNames:
      - ttg
    singular: group
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.configMode
          name: Mode
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .spec.deletionProtectionEnabled
          name: Deletion Protection
          type: boolean
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Default metadata values that will be propagated to the children Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                configMode:
                  enum:
                    - BRIDGED
                    - DIRECT
                  type: string
                deletionProtectionEnabled:
                  description: When set, prevents the resource from being deleted.
                  type: boolean
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                namespaceSelector:
                  description: Set of namespaces owned exclusively by this group.
                  properties:
                    names:
                      items:
                        type: string
                      type: array
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: serviceroutes.traffic.tsb.tetrate.io
spec:
  group: traffic.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - traffic-tsb-tetrate-io
    kind: ServiceRoute
    listKind: ServiceRouteList
    plural: serviceroutes
    shortNames:
      - tsr
    singular: serviceroute
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.service
          name: Service
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/trafficGroup']
          name: Traffic-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                httpRoutes:
                  items:
                    properties:
                      destination:
                        items:
                          properties:
                            destinationHost:
                              description: Service host where traffic should be routed to.
                              type: string
                            port:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            subset:
                              type: string
                            weight:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      match:
                        items:
                          properties:
                            headers:
                              additionalProperties:
                                oneOf:
                                  - not:
                                      anyOf:
                                        - required:
                                            - exact
                                        - required:
                                            - prefix
                                        - required:
                                            - regex
                                  - required:
                                      - exact
                                  - required:
                                      - prefix
                                  - required:
                                      - regex
                                properties:
                                  exact:
                                    description: Exact string match.
                                    type: string
                                  prefix:
                                    description: Prefix-based match.
                                    type: string
                                  regex:
                                    description: ECMAscript style regex-based match.
                                    type: string
                                type: object
                              type: object
                            name:
                              type: string
                            port:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            uri:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - exact
                                      - required:
                                          - prefix
                                      - required:
                                          - regex
                                - required:
                                    - exact
                                - required:
                                    - prefix
                                - required:
                                    - regex
                              properties:
                                exact:
                                  description: Exact string match.
                                  type: string
                                prefix:
                                  description: Prefix-based match.
                                  type: string
                                regex:
                                  description: ECMAscript style regex-based match.
                                  type: string
                              type: object
                          type: object
                        type: array
                      name:
                        type: string
                    type: object
                  type: array
                portLevelSettings:
                  description: In order to support multi-protocol routing, a list of all port/protocol combinations is needed.
                  items:
                    properties:
                      port:
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                      stickySession:
                        oneOf:
                          - not:
                              anyOf:
                                - required:
                                    - header
                                - required:
                                    - cookie
                                - required:
                                    - useSourceIp
                          - required:
                              - header
                          - required:
                              - cookie
                          - required:
                              - useSourceIp
                        properties:
                          cookie:
                            description: Hash based on HTTP cookie.
                            properties:
                              name:
                                description: Name of the cookie.
                                type: string
                              path:
                                description: Path to set for the cookie.
                                type: string
                              ttl:
                                description: Lifetime of the cookie.
                                type: string
                            type: object
                          header:
                            description: Hash based on a specific HTTP header.
                            type: string
                          useSourceIp:
                            description: Hash based on the source IP address.
                            type: boolean
                        type: object
                      trafficType:
                        enum:
                          - HTTP
                          - TCP
                          - TLS_PASSTHROUGH
                        type: string
                    type: object
                  type: array
                service:
                  description: The service on which the configuration is being applied.
                  type: string
                stickySession:
                  oneOf:
                    - not:
                        anyOf:
                          - required:
                              - header
                          - required:
                              - cookie
                          - required:
                              - useSourceIp
                    - required:
                        - header
                    - required:
                        - cookie
                    - required:
                        - useSourceIp
                  properties:
                    cookie:
                      description: Hash based on HTTP cookie.
                      properties:
                        name:
                          description: Name of the cookie.
                          type: string
                        path:
                          description: Path to set for the cookie.
                          type: string
                        ttl:
                          description: Lifetime of the cookie.
                          type: string
                      type: object
                    header:
                      description: Hash based on a specific HTTP header.
                      type: string
                    useSourceIp:
                      description: Hash based on the source IP address.
                      type: boolean
                  type: object
                subsets:
                  items:
                    properties:
                      labels:
                        additionalProperties:
                          type: string
                        description: Labels apply a filter over the endpoints of a service in the service registry.
                        type: object
                      name:
                        description: Name used to refer to the subset.
                        type: string
                      portLevelSettings:
                        items:
                          properties:
                            port:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            stickySession:
                              oneOf:
                                - not:
                                    anyOf:
                                      - required:
                                          - header
                                      - required:
                                          - cookie
                                      - required:
                                          - useSourceIp
                                - required:
                                    - header
                                - required:
                                    - cookie
                                - required:
                                    - useSourceIp
                              properties:
                                cookie:
                                  description: Hash based on HTTP cookie.
                                  properties:
                                    name:
                                      description: Name of the cookie.
                                      type: string
                                    path:
                                      description: Path to set for the cookie.
                                      type: string
                                    ttl:
                                      description: Lifetime of the cookie.
                                      type: string
                                  type: object
                                header:
                                  description: Hash based on a specific HTTP header.
                                  type: string
                                useSourceIp:
                                  description: Hash based on the source IP address.
                                  type: boolean
                              type: object
                            trafficType:
                              enum:
                                - HTTP
                                - TCP
                                - TLS_PASSTHROUGH
                              type: string
                          type: object
                        type: array
                      weight:
                        description: Percentage of traffic to be sent to this subset.
                        maximum: 4294967295
                        minimum: 0
                        type: integer
                    type: object
                  type: array
                tcpRoutes:
                  description: TCPRoutes match TCP traffic based on port number.
                  items:
                    properties:
                      destination:
                        items:
                          properties:
                            destinationHost:
                              description: Service host where traffic should be routed to.
                              type: string
                            port:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                            subset:
                              type: string
                            weight:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      match:
                        items:
                          properties:
                            name:
                              type: string
                            port:
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      name:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: trafficsettings.traffic.tsb.tetrate.io
spec:
  group: traffic.tsb.tetrate.io
  names:
    categories:
      - tetrate-io
      - tsb-tetrate-io
      - traffic-tsb-tetrate-io
    kind: TrafficSetting
    listKind: TrafficSettingList
    plural: trafficsettings
    shortNames:
      - tts
    singular: trafficsetting
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/trafficGroup']
          name: Traffic-Group
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/workspace']
          name: Workspace
          type: string
        - jsonPath: .metadata.annotations['tsb\.tetrate\.io\/tenant']
          name: Tenant
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v2
      schema:
        openAPIV3Schema:
          properties:
            spec:
              properties:
                configGenerationMetadata:
                  description: Metadata values that will be add into the Istio generated configurations.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.annotations` field of the Istio generated configurations.
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Set of key value paris that will be added into the `metadata.labels` field of the Istio generated configurations.
                      type: object
                  type: object
                description:
                  description: A description of the resource.
                  type: string
                displayName:
                  description: User friendly name for the resource.
                  type: string
                egress:
                  properties:
                    host:
                      description: Specifies the egress gateway hostname.
                      type: string
                    port:
                      description: Deprecated.
                      format: int32
                      type: integer
                  type: object
                etag:
                  description: The etag for the resource.
                  type: string
                fqn:
                  description: Fully-qualified name of the resource.
                  type: string
                rateLimiting:
                  description: Configuration for rate limiting requests.
                  oneOf:
                    - not:
                        anyOf:
                          - required:
                              - settings
                          - required:
                              - externalService
                    - required:
                        - settings
                    - required:
                        - externalService
                  properties:
                    externalService:
                      description: Configure ratelimiting using an external ratelimit server.
                      properties:
                        domain:
                          description: The rate limit domain to use when calling the rate limit service.
                          type: string
                        failClosed:
                          type: boolean
                        rateLimitServerUri:
                          description: The URI at which the external rate limit server can be reached.
                          type: string
                        rules:
                          description: A set of rate limit rules.
                          items:
                            properties:
                              dimensions:
                                description: A list of dimensions that are to be applied for this rate limit configuration.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - sourceCluster
                                          - required:
                                              - destinationCluster
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - requestHeaders
                                          - required:
                                              - headerValueMatch
                                    - required:
                                        - sourceCluster
                                    - required:
                                        - destinationCluster
                                    - required:
                                        - remoteAddress
                                    - required:
                                        - requestHeaders
                                    - required:
                                        - headerValueMatch
                                  properties:
                                    destinationCluster:
                                      description: Rate limit on destination envoy cluster.
                                      type: object
                                    headerValueMatch:
                                      description: Rate limit on the existence of certain request headers.
                                      properties:
                                        descriptorValue:
                                          description: The value to use in the descriptor entry.
                                          type: string
                                        dontMatch:
                                          description: If set to true, the condition will be met when the header value does not match.
                                          type: boolean
                                        headers:
                                          additionalProperties:
                                            oneOf:
                                              - not:
                                                  anyOf:
                                                    - required:
                                                        - exact
                                                    - required:
                                                        - prefix
                                                    - required:
                                                        - regex
                                              - required:
                                                  - exact
                                              - required:
                                                  - prefix
                                              - required:
                                                  - regex
                                            properties:
                                              exact:
                                                description: Exact string match.
                                                type: string
                                              prefix:
                                                description: Prefix-based match.
                                                type: string
                                              regex:
                                                description: ECMAscript style regex-based match.
                                                type: string
                                            type: object
                                          type: object
                                      type: object
                                    remoteAddress:
                                      description: Rate limit on remote address of client.
                                      type: object
                                    requestHeaders:
                                      description: Rate limit on the value of certain request headers.
                                      properties:
                                        descriptorKey:
                                          description: The key to use in the descriptor entry.
                                          type: string
                                        headerName:
                                          description: The header name to be queried from the request headers.
                                          type: string
                                      type: object
                                    sourceCluster:
                                      description: Rate limit on source envoy cluster.
                                      type: object
                                  type: object
                                type: array
                            type: object
                          type: array
                        timeout:
                          description: The timeout in seconds for the external rate limit server RPC.
                          type: string
                        tls:
                          oneOf:
                            - not:
                                anyOf:
                                  - required:
                                      - files
                                  - required:
                                      - secretName
                            - required:
                                - files
                            - required:
                                - secretName
                          properties:
                            files:
                              description: TLS key source from files.
                              properties:
                                caCertificates:
                                  type: string
                                clientCertificate:
                                  description: Certificate file to authenticate the client.
                                  type: string
                                privateKey:
                                  description: Private key file associated with the client certificate.
                                  type: string
                              type: object
                            mode:
                              enum:
                                - DISABLED
                                - SIMPLE
                                - MUTUAL
                              type: string
                            secretName:
                              description: TLS key source from a Kubernetes Secret.
                              type: string
                            subjectAltNames:
                              items:
                                type: string
                              type: array
                          type: object
                      type: object
                    settings:
                      properties:
                        failClosed:
                          type: boolean
                        rules:
                          description: A list of rules for ratelimiting.
                          items:
                            properties:
                              dimensions:
                                description: A list of dimensions to define each ratelimit rule.
                                items:
                                  oneOf:
                                    - not:
                                        anyOf:
                                          - required:
                                              - remoteAddress
                                          - required:
                                              - header
                                    - required:
                                        - remoteAddress
                                    - required:
                                        - header
                                  properties:
                                    header:
                                      description: Rate limit on certain HTTP headers.
                                      properties:
                                        dontMatch:
                                          description: If set to true, the condition will be met when the header value does not match.
                                          type: boolean
                                        name:
                                          description: Name of the header to match on.
                                          type: string
                                        value:
                                          description: Value of the header to match on if matching on a specific value.
                                          oneOf:
                                            - not:
                                                anyOf:
                                                  - required:
                                                      - exact
                                                  - required:
                                                      - prefix
                                                  - required:
                                                      - regex
                                            - required:
                                                - exact
                                            - required:
                                                - prefix
                                            - required:
                                                - regex
                                          properties:
                                            exact:
                                              description: Exact string match.
                                              type: string
                                            prefix:
                                              description: Prefix-based match.
                                              type: string
                                            regex:
                                              description: ECMAscript style regex-based match.
                                              type: string
                                          type: object
                                      type: object
                                    remoteAddress:
                                      description: Rate limit on the remote address of client.
                                      properties:
                                        value:
                                          description: Ratelimit on a specific remote address.
                                          type: string
                                      type: object
                                  type: object
                                type: array
                              limit:
                                description: The ratelimit value that will be configured for the above rules.
                                properties:
                                  requestsPerUnit:
                                    description: Specifies the value of the rate limit.
                                    maximum: 4294967295
                                    minimum: 0
                                    type: integer
                                  unit:
                                    description: Specifies the unit of time for rate limit.
                                    enum:
                                      - UNKNOWN
                                      - SECOND
                                      - MINUTE
                                      - HOUR
                                      - DAY
                                    type: string
                                type: object
                            type: object
                          type: array
                        timeout:
                          description: The timeout in seconds for the rate limit server RPC.
                          type: string
                      type: object
                  type: object
                reachability:
                  properties:
                    hosts:
                      items:
                        type: string
                      type: array
                    mode:
                      description: A short cut for specifying the set of services accessed by the workload.
                      enum:
                        - UNSET
                        - NAMESPACE
                        - GROUP
                        - WORKSPACE
                        - CLUSTER
                        - CUSTOM
                      type: string
                  type: object
                resilience:
                  properties:
                    circuitBreakerSensitivity:
                      enum:
                        - UNSET
                        - LOW
                        - MEDIUM
                        - HIGH
                      type: string
                    httpRequestTimeout:
                      description: Timeout for HTTP requests.
                      type: string
                    httpRetries:
                      description: Retry policy for HTTP requests.
                      properties:
                        attempts:
                          description: Number of retries for a given request.
                          format: int32
                          type: integer
                        perTryTimeout:
                          description: Timeout per retry attempt for a given request.
                          type: string
                        retryOn:
                          description: Specifies the conditions under which retry takes place.
                          type: string
                      type: object
                    keepAlive:
                      description: Keep Alive Settings.
                      properties:
                        tcp:
                          description: TCP Keep Alive settings associated with the upstream and downstream TCP connections.
                          properties:
                            downstream:
                              description: TCP Keep Alive Settings associated with the downstream (client) connection.
                              properties:
                                idleTime:
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                                interval:
                                  description: The number of seconds between keep-alive probes.
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                                probes:
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                              type: object
                            upstream:
                              description: TCP Keep Alive Settings associated with the upstream (backend) connection.
                              properties:
                                idleTime:
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                                interval:
                                  description: The number of seconds between keep-alive probes.
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                                probes:
                                  maximum: 4294967295
                                  minimum: 0
                                  nullable: true
                                  type: integer
                              type: object
                          type: object
                      type: object
                    tcpKeepalive:
                      description: Deprecated.
                      nullable: true
                      type: boolean
                  type: object
              type: object
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
          type: object
      served: true
      storage: true
      subresources:
        status: {}

---

