---
# Source: alloy/charts/crds/crds/monitoring.grafana.com_podlogs.yaml
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.2
  name: podlogs.monitoring.grafana.com
spec:
  group: monitoring.grafana.com
  names:
    categories:
    - grafana-alloy
    - alloy
    kind: PodLogs
    listKind: PodLogsList
    plural: podlogs
    singular: podlogs
  scope: Namespaced
  versions:
  - name: v1alpha2
    schema:
      openAPIV3Schema:
        description: PodLogs defines how to collect logs for a Pod.
        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: PodLogsSpec defines how to collect logs for a Pod.
            properties:
              namespaceSelector:
                description: Selector to select which namespaces the Pod objects are
                  discovered from.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that 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
              relabelings:
                description: RelabelConfigs to apply to logs before delivering.
                items:
                  description: 'RelabelConfig allows dynamic rewriting of the label
                    set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section
                    of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs'
                  properties:
                    action:
                      default: replace
                      description: Action to perform based on regex matching. Default
                        is 'replace'. uppercase and lowercase actions require Prometheus
                        >= 2.36.
                      enum:
                      - replace
                      - Replace
                      - keep
                      - Keep
                      - drop
                      - Drop
                      - hashmod
                      - HashMod
                      - labelmap
                      - LabelMap
                      - labeldrop
                      - LabelDrop
                      - labelkeep
                      - LabelKeep
                      - lowercase
                      - Lowercase
                      - uppercase
                      - Uppercase
                      type: string
                    modulus:
                      description: Modulus to take of the hash of the source label
                        values.
                      format: int64
                      type: integer
                    regex:
                      description: Regular expression against which the extracted
                        value is matched. Default is '(.*)'
                      type: string
                    replacement:
                      description: Replacement value against which a regex replace
                        is performed if the regular expression matches. Regex capture
                        groups are available. Default is '$1'
                      type: string
                    separator:
                      description: Separator placed between concatenated source label
                        values. default is ';'.
                      type: string
                    sourceLabels:
                      description: The source labels select values from existing labels.
                        Their content is concatenated using the configured separator
                        and matched against the configured regular expression for
                        the replace, keep, and drop actions.
                      items:
                        description: LabelName is a valid Prometheus label name which
                          may only contain ASCII letters, numbers, as well as underscores.
                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                        type: string
                      type: array
                    targetLabel:
                      description: Label to which the resulting value is written in
                        a replace action. It is mandatory for replace actions. Regex
                        capture groups are available.
                      type: string
                  type: object
                type: array
              selector:
                description: Selector to select Pod objects. Required.
                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
            required:
            - selector
            type: object
        type: object
    served: true
    storage: true

---
# Source: alloy/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
automountServiceAccountToken: true
metadata:
  name: alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
---
# Source: alloy/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: config
data:
  config.alloy: |-
    logging {
    	level  = "info"
    	format = "logfmt"
    }

    discovery.kubernetes "pods" {
    	role = "pod"
    }

    discovery.kubernetes "nodes" {
    	role = "node"
    }

    discovery.kubernetes "services" {
    	role = "service"
    }

    discovery.kubernetes "endpoints" {
    	role = "endpoints"
    }

    discovery.kubernetes "endpointslices" {
    	role = "endpointslice"
    }

    discovery.kubernetes "ingresses" {
    	role = "ingress"
    }
---
# Source: alloy/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: alloy
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
rules:
  - apiGroups:
    - ""
    - discovery.k8s.io
    - networking.k8s.io
    resources:
    - endpoints
    - endpointslices
    - ingresses
    - pods
    - services
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - pods
    - pods/log
    - namespaces
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.grafana.com
    resources:
    - podlogs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - prometheusrules
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - alertmanagerconfigs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - monitoring.coreos.com
    resources:
    - podmonitors
    - servicemonitors
    - probes
    - scrapeconfigs
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - events
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - configmaps
    - secrets
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - apps
    - extensions
    resources:
    - replicasets
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - nodes
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - nodes/pods
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - ""
    resources:
    - nodes/metrics
    verbs:
    - get
    - list
    - watch
  - nonResourceURLs:
    - /metrics
    verbs:
    - get
---
# Source: alloy/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: alloy
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: rbac
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: alloy
subjects:
  - kind: ServiceAccount
    name: alloy
    namespace: default
---
# Source: alloy/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
    app.kubernetes.io/component: networking
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
  internalTrafficPolicy: Cluster
  ports:
    - name: http-metrics
      port: 12345
      targetPort: 12345
      protocol: "TCP"
---
# Source: alloy/templates/controllers/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: alloy
  namespace: default
  labels:
    helm.sh/chart: alloy-1.8.2
    app.kubernetes.io/name: alloy
    app.kubernetes.io/instance: alloy
    app.kubernetes.io/version: "v1.16.1"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: alloy
spec:
  minReadySeconds: 10
  selector:
    matchLabels:
      app.kubernetes.io/name: alloy
      app.kubernetes.io/instance: alloy
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: alloy
      labels:
        app.kubernetes.io/name: alloy
        app.kubernetes.io/instance: alloy
    spec:
      serviceAccountName: alloy
      containers:
        - name: alloy
          image: docker.io/grafana/alloy:v1.16.1
          imagePullPolicy: IfNotPresent
          args:
            - run
            - /etc/alloy/config.alloy
            - --storage.path=/tmp/alloy
            - --server.http.listen-addr=0.0.0.0:12345
            - --server.http.ui-path-prefix=/
            - --stability.level=generally-available
          env:
            - name: ALLOY_DEPLOY_MODE
              value: "helm"
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: K8S_NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          ports:
            - containerPort: 12345
              name: http-metrics
          readinessProbe:
            httpGet:
              path: /-/ready
              port: 12345
              scheme: HTTP
            initialDelaySeconds: 10
            timeoutSeconds: 1
          volumeMounts:
            - name: config
              mountPath: /etc/alloy
        - name: config-reloader
          image: quay.io/prometheus-operator/prometheus-config-reloader:v0.91.0@sha256:7d9e4eea5f1139e602508871f422b0116c60e87c662f3dcd234d5ab60cd0d8c1
          imagePullPolicy: IfNotPresent
          args:
            - --watched-dir=/etc/alloy
            - --reload-url=http://localhost:12345/-/reload
          volumeMounts:
            - name: config
              mountPath: /etc/alloy
          resources:
            requests:
              cpu: 10m
              memory: 50Mi
      dnsPolicy: ClusterFirst
      volumes:
        - name: config
          configMap:
            name: alloy
