diff --git a/apps/alloy/alloy.yaml b/apps/alloy/alloy.yaml new file mode 100644 index 0000000..78f2b47 --- /dev/null +++ b/apps/alloy/alloy.yaml @@ -0,0 +1,122 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +chart: true +metadata: + name: alloy + namespace: argocd + finalizers: [resources-finalizer.argocd.argoproj.io] +spec: + project: default + destination: + server: https://kubernetes.default.svc + namespace: alloy + syncPolicy: + automated: { prune: true, selfHeal: true } + syncOptions: [CreateNamespace=true, ServerSideApply=true] + source: + repoURL: https://grafana.github.io/helm-charts + chart: alloy + targetRevision: 1.19.2 + helm: + valuesObject: + clustering: { enabled: false } + mounts: + varlog: true + controller: + type: daemonset + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 200m + memory: 256Mi + configMap: + create: true + content: |- + discovery.kubernetes "all_pods" { + role = "pod" + + selectors { + role = "pod" + field = "spec.nodeName=" + coalesce(env("HOSTNAME"), constants.hostname) + } + } + + discovery.relabel "all_pods" { + targets = discovery.kubernetes.all_pods.targets + + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + rule { + source_labels = ["__meta_kubernetes_pod_container_name"] + target_label = "container" + } + rule { + source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"] + target_label = "app" + } + } + + loki.source.kubernetes "all_logs" { + targets = discovery.relabel.all_pods.output + forward_to = [loki.write.main.receiver] + } + + discovery.kubernetes "shared_pods" { + role = "pod" + selectors { + role = "pod" + field = "metadata.namespace=chacal" + } + } + + discovery.relabel "shared_pods" { + targets = discovery.kubernetes.shared_pods.targets + + rule { + source_labels = ["__meta_kubernetes_namespace"] + target_label = "namespace" + } + rule { + source_labels = ["__meta_kubernetes_pod_name"] + target_label = "pod" + } + rule { + source_labels = ["__meta_kubernetes_pod_container_name"] + target_label = "container" + } + rule { + source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"] + target_label = "app" + } + } + + loki.source.kubernetes "shared_logs" { + targets = discovery.relabel.shared_pods.output + forward_to = [loki.write.shared.receiver] + } + + loki.write "main" { + endpoint { + url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" + headers = { + "X-Scope-OrgID" = "main", + } + } + } + + loki.write "shared" { + endpoint { + url = "http://loki.monitoring.svc.cluster.local:3100/loki/api/v1/push" + headers = { + "X-Scope-OrgID" = "chacal", + } + } + } diff --git a/apps/root/applicationset.yaml b/apps/root/applicationset.yaml index eb56674..ffd12d9 100644 --- a/apps/root/applicationset.yaml +++ b/apps/root/applicationset.yaml @@ -35,3 +35,12 @@ spec: automated: prune: true selfHeal: true + templatePatch: | + {{- if hasKey . "chart" }} + spec: + source: + $patch: replace + {{- toYaml .spec.source | nindent 4 }} + syncPolicy: + syncOptions: [CreateNamespace=true, ServerSideApply=true] + {{- end }}