---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.2
  creationTimestamp: null
  name: logsinstances.monitoring.grafana.com
spec:
  group: monitoring.grafana.com
  names:
    categories:
    - agent-operator
    kind: LogsInstance
    listKind: LogsInstanceList
    plural: logsinstances
    singular: logsinstance
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: LogsInstance controls an individual logs instance within a Grafana
          Agent deployment.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: Spec holds the specification of the desired behavior for
              the logs instance.
            properties:
              additionalScrapeConfigs:
                description: "AdditionalScrapeConfigs allows specifying a key of a
                  Secret containing additional Grafana Agent logging scrape configurations.
                  Scrape configurations specified are appended to the configurations
                  generated by the Grafana Agent Operator. \n Job configurations specified
                  must have the form as specified in the official Promtail documentation:
                  \n https://grafana.com/docs/loki/latest/clients/promtail/configuration/#scrape_configs
                  \n As scrape configs are appended, the user is responsible to make
                  sure it is valid. Note that using this feature may expose the possibility
                  to break upgrades of Grafana Agent. It is advised to review both
                  Grafana Agent and Promtail release notes to ensure that no incompatible
                  scrape configs are going to break Grafana Agent after the upgrade."
                properties:
                  key:
                    description: The key of the secret to select from.  Must be a
                      valid secret key.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                  optional:
                    description: Specify whether the Secret or its key must be defined
                    type: boolean
                required:
                - key
                type: object
                x-kubernetes-map-type: atomic
              clients:
                description: Clients controls where logs are written to for this instance.
                items:
                  description: LogsClientSpec defines the client integration for logs,
                    indicating which Loki server to send logs to.
                  properties:
                    backoffConfig:
                      description: Configures how to retry requests to Loki when a
                        request fails. Defaults to a minPeriod of 500ms, maxPeriod
                        of 5m, and maxRetries of 10.
                      properties:
                        maxPeriod:
                          description: Maximum backoff time between retries.
                          type: string
                        maxRetries:
                          description: Maximum number of retries to perform before
                            giving up a request.
                          type: integer
                        minPeriod:
                          description: Initial backoff time between retries. Time
                            between retries is increased exponentially.
                          type: string
                      type: object
                    basicAuth:
                      description: BasicAuth for the Loki server.
                      properties:
                        password:
                          description: The secret in the service monitor namespace
                            that contains the password for authentication.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        username:
                          description: The secret in the service monitor namespace
                            that contains the username for authentication.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    batchSize:
                      description: Maximum batch size (in bytes) of logs to accumulate
                        before sending the batch to Loki.
                      type: integer
                    batchWait:
                      description: Maximum amount of time to wait before sending a
                        batch, even if that batch isn't full.
                      type: string
                    bearerToken:
                      description: BearerToken used for remote_write.
                      type: string
                    bearerTokenFile:
                      description: BearerTokenFile used to read bearer token.
                      type: string
                    externalLabels:
                      additionalProperties:
                        type: string
                      description: ExternalLabels are labels to add to any time series
                        when sending data to Loki.
                      type: object
                    oauth2:
                      description: Oauth2 for URL
                      properties:
                        clientId:
                          description: The secret or configmap containing the OAuth2
                            client id
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        clientSecret:
                          description: The secret containing the OAuth2 client secret
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        endpointParams:
                          additionalProperties:
                            type: string
                          description: Parameters to append to the token URL
                          type: object
                        scopes:
                          description: OAuth2 scopes used for the token request
                          items:
                            type: string
                          type: array
                        tokenUrl:
                          description: The URL to fetch the token from
                          minLength: 1
                          type: string
                      required:
                      - clientId
                      - clientSecret
                      - tokenUrl
                      type: object
                    proxyUrl:
                      description: ProxyURL to proxy requests through. Optional.
                      type: string
                    tenantId:
                      description: Tenant ID used by default to push logs to Loki.
                        If omitted assumes remote Loki is running in single-tenant
                        mode or an authentication layer is used to inject an X-Scope-OrgID
                        header.
                      type: string
                    timeout:
                      description: Maximum time to wait for a server to respond to
                        a request.
                      type: string
                    tlsConfig:
                      description: TLSConfig to use for the client. Only used when
                        the protocol of the URL is https.
                      properties:
                        ca:
                          description: Certificate authority used when verifying server
                            certificates.
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        caFile:
                          description: Path to the CA cert in the Prometheus container
                            to use for the targets.
                          type: string
                        cert:
                          description: Client certificate to present when doing client-authentication.
                          properties:
                            configMap:
                              description: ConfigMap containing data to use for the
                                targets.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            secret:
                              description: Secret containing data to use for the targets.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        certFile:
                          description: Path to the client cert file in the Prometheus
                            container for the targets.
                          type: string
                        insecureSkipVerify:
                          description: Disable target certificate validation.
                          type: boolean
                        keyFile:
                          description: Path to the client key file in the Prometheus
                            container for the targets.
                          type: string
                        keySecret:
                          description: Secret containing the client key file for the
                            targets.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must
                                be a valid secret key.
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must
                                be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        serverName:
                          description: Used to verify the hostname for the targets.
                          type: string
                      type: object
                    url:
                      description: 'URL is the URL where Loki is listening. Must be
                        a full HTTP URL, including protocol. Required. Example: https://logs-prod-us-central1.grafana.net/loki/api/v1/push.'
                      type: string
                  required:
                  - url
                  type: object
                type: array
              podLogsNamespaceSelector:
                description: Set of labels to determine which namespaces should be
                  watched for PodLogs. If not provided, checks only namespace of the
                  instance.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              podLogsSelector:
                description: Determines which PodLogs should be selected for including
                  in this instance.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              targetConfig:
                description: Configures how tailed targets are watched.
                properties:
                  syncPeriod:
                    description: Period to resync directories being watched and files
                      being tailed to discover new ones or stop watching removed ones.
                    type: string
                type: object
            type: object
        type: object
    served: true
    storage: true
