apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  labels:
    app: apicast
  name: apicasts.apps.3scale.net
spec:
  group: apps.3scale.net
  names:
    kind: APIcast
    listKind: APIcastList
    plural: apicasts
    singular: apicast
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: APIcast is the Schema for the apicasts API.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            anyOf:
            - required:
              - adminPortalCredentialsRef
            - required:
              - embeddedConfigurationSecretRef
            description: APIcastSpec defines the desired state of APIcast.
            properties:
              adminPortalCredentialsRef:
                description: Secret reference to a Kubernetes Secret containing the admin portal endpoint URL. The Secret must be located in the same namespace.
                properties:
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                type: object
              allProxy:
                description: AllProxy specifies a HTTP(S) proxy to be used for connecting to services if a protocol-specific proxy is not specified. Authentication is not supported. Format is <scheme>://<host>:<port>
                type: string
              cacheConfigurationSeconds:
                description: The period (in seconds) that the APIcast configuration will be stored in APIcast's cache.
                format: int64
                type: integer
              cacheMaxTime:
                description: CacheMaxTime indicates the maximum time to be cached. If cache-control header is not set, the time to be cached will be the defined one.
                type: string
              cacheStatusCodes:
                description: CacheStatusCodes defines the status codes for which the response content will be cached.
                type: string
              configurationLoadMode:
                description: ConfigurationLoadMode can be used to set APIcast's configuration load mode.
                enum:
                - boot
                - lazy
                type: string
              customEnvironments:
                description: CustomEnvironments specifies an array of defined custome environments to be loaded
                items:
                  description: CustomEnvironmentSpec contains or has reference to an APIcast custom environment
                  properties:
                    secretRef:
                      description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
                      properties:
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                          type: string
                      type: object
                  required:
                  - secretRef
                  type: object
                type: array
              customPolicies:
                description: CustomPolicies specifies an array of defined custome policies to be loaded
                items:
                  description: CustomPolicySpec contains or has reference to an APIcast custom policy
                  properties:
                    name:
                      description: Name specifies the name of the custom policy
                      type: string
                    secretRef:
                      description: SecretRef specifies the secret holding the custom policy metadata and lua code
                      properties:
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                          type: string
                      type: object
                    version:
                      description: Version specifies the name of the custom policy
                      type: string
                  required:
                  - name
                  - secretRef
                  - version
                  type: object
                type: array
              deploymentEnvironment:
                description: DeploymentEnvironment is the environment for which the configuration will be downloaded from 3scale (Staging or Production), when using APIcast. The value will also be used in the header X-3scale-User-Agent in the authorize/report requests made to 3scale Service Management API. It is used by 3scale for statistics.
                type: string
              dnsResolverAddress:
                description: DNSResolverAddress can be used to specify a custom DNS resolver address to be used by OpenResty.
                type: string
              embeddedConfigurationSecretRef:
                description: Secret reference to a Kubernetes secret containing the gateway configuration. The Secret must be located in the same namespace.
                properties:
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                type: object
              enabledServices:
                description: EnabledServices can be used to specify a list of service IDs used to filter the configured services.
                items:
                  type: string
                type: array
              exposedHost:
                description: ExposedHost is the domain name used for external access. By default no external access is configured.
                properties:
                  host:
                    type: string
                  tls:
                    items:
                      description: IngressTLS describes the transport layer security associated with an Ingress.
                      properties:
                        hosts:
                          description: Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        secretName:
                          description: SecretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the "Host" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.
                          type: string
                      type: object
                    type: array
                required:
                - host
                type: object
              extendedMetrics:
                description: ExtendedMetrics enables additional information on Prometheus metrics; some labels will be used with specific information that will provide more in-depth details about APIcast.
                type: boolean
              httpProxy:
                description: HTTPProxy specifies a HTTP(S) Proxy to be used for connecting to HTTP services. Authentication is not supported. Format is <scheme>://<host>:<port>
                type: string
              httpsCertificateSecretRef:
                description: HTTPSCertificateSecretRef references secret containing the X.509 certificate in the PEM format and the X.509 certificate secret key.
                properties:
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                type: object
              httpsPort:
                description: HttpsPort controls on which port APIcast should start listening for HTTPS connections. If this clashes with HTTP port it will be used only for HTTPS.
                format: int32
                type: integer
              httpsProxy:
                description: HTTPSProxy specifies a HTTP(S) Proxy to be used for connecting to HTTPS services. Authentication is not supported. Format is <scheme>://<host>:<port>
                type: string
              httpsVerifyDepth:
                description: HTTPSVerifyDepth defines the maximum length of the client certificate chain.
                format: int64
                minimum: 0
                type: integer
              image:
                description: Image allows overriding the default APIcast gateway container image. This setting should only be used for dev/testing purposes. Setting this disables automated upgrades of the image.
                type: string
              loadServicesWhenNeeded:
                description: LoadServicesWhenNeeded makes the configurations to be loaded lazily. APIcast will only load the ones configured for the host specified in the host header of the request.
                type: boolean
              logLevel:
                description: LogLevel controls the log level of APIcast's OpenResty logs.
                enum:
                - debug
                - info
                - notice
                - warn
                - error
                - crit
                - alert
                - emerg
                type: string
              managementAPIScope:
                description: ManagementAPIScope controls APIcast Management API scope. The Management API is powerful and can control the APIcast configuration. debug level should only be enabled for debugging purposes.
                enum:
                - disabled
                - status
                - policies
                - debug
                type: string
              noProxy:
                description: NoProxy specifies a comma-separated list of hostnames and domain names for which the requests should not be proxied. Setting to a single * character, which matches all hosts, effectively disables the proxy.
                type: string
              oidcLogLevel:
                description: OidcLogLevel allows to set the log level for the logs related to OpenID Connect integration.
                enum:
                - debug
                - info
                - notice
                - warn
                - error
                - crit
                - alert
                - emerg
                type: string
              openSSLPeerVerificationEnabled:
                description: OpenSSLPeerVerificationEnabled controls OpenSSL peer verification.
                type: boolean
              openTracing:
                description: OpenTracingSpec contains the OpenTracing integration configuration with APIcast.
                properties:
                  enabled:
                    description: Enabled controls whether OpenTracing integration with APIcast is enabled. By default it is not enabled.
                    type: boolean
                  tracingConfigSecretRef:
                    description: TracingConfigSecretRef contains a Secret reference the OpenTracing configuration. Each supported tracing library provides a default configuration file that is used if TracingConfig is not specified.
                    properties:
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                        type: string
                    type: object
                  tracingLibrary:
                    description: TracingLibrary controls which OpenTracing library is loaded. At the moment the only supported tracer is `jaeger`. If not set, `jaeger` will be used.
                    type: string
                type: object
              pathRoutingEnabled:
                description: PathRoutingEnabled can be used to enable APIcast's path-based routing in addition to to the default host-based routing.
                type: boolean
              replicas:
                description: Number of replicas of the APIcast Deployment.
                format: int64
                type: integer
              resources:
                description: Resources can be used to set custom compute Kubernetes Resource Requirements for the APIcast deployment.
                properties:
                  limits:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                    type: object
                  requests:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                    type: object
                type: object
              responseCodesIncluded:
                description: ResponseCodesIncluded can be set to log the response codes of the responses in Apisonator, so they can then be visualized in the 3scale admin portal.
                type: boolean
              serviceAccount:
                description: Kubernetes Service Account name to be used for the APIcast Deployment. The Service Account must exist beforehand.
                type: string
              serviceConfigurationVersionOverride:
                additionalProperties:
                  type: string
                description: ServiceConfigurationVersionOverride contains service configuration version map to prevent it from auto-updating.
                type: object
              servicesFilterByURL:
                description: ServicesFilterByURL is used to filter the service configured in the 3scale API Manager, the filter matches with the public base URL (Staging or production).
                type: string
              timezone:
                description: Timezone specifies the local timezone of the APIcast deployment pods. A timezone value available in the TZ database must be set.
                type: string
              upstreamRetryCases:
                description: UpstreamRetryCases Used only when the retry policy is configured. Specified in which cases a request to the upstream API should be retried.
                enum:
                - error
                - timeout
                - invalid_header
                - http_500
                - http_502
                - http_503
                - http_504
                - http_403
                - http_404
                - http_429
                - non_idempotent
                - "off"
                type: string
              workers:
                description: Workers defines the number of APIcast's worker processes per pod.
                format: int32
                minimum: 1
                type: integer
            type: object
          status:
            description: APIcastStatus defines the observed state of APIcast.
            properties:
              conditions:
                description: Represents the latest available observations of a replica set's current state.
                items:
                  properties:
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of replica set condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              image:
                description: The image being used in the APIcast deployment.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
