---
# 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
