Compare commits

...

3 Commits

Author SHA1 Message Date
951198ffa8
Added loki as grafana datasource
All checks were successful
kustomization/cert-manager/3a682516 reconciliation succeeded
kustomization/node-feature-discovery-rules/3a682516 reconciliation succeeded
kustomization/kyverno/3a682516 reconciliation succeeded
kustomization/rook-ceph/3a682516 reconciliation succeeded
kustomization/akri/3a682516 reconciliation succeeded
kustomization/node-feature-discovery/3a682516 reconciliation succeeded
kustomization/velero/3a682516 reconciliation succeeded
kustomization/flux-system/3a682516 reconciliation succeeded
kustomization/letsencrypt/3a682516 reconciliation succeeded
kustomization/topolvm/3a682516 reconciliation succeeded
kustomization/kyverno-policies/3a682516 reconciliation succeeded
kustomization/rook-ceph-cluster/3a682516 reconciliation succeeded
kustomization/cnpg/3a682516 reconciliation succeeded
kustomization/kube-vip/3a682516 reconciliation succeeded
kustomization/traefik-middleware/3a682516 reconciliation succeeded
kustomization/lldap/3a682516 reconciliation succeeded
kustomization/authelia/3a682516 reconciliation succeeded
kustomization/promtail/3a682516 reconciliation succeeded
kustomization/traefik/3a682516 reconciliation succeeded
kustomization/apps/3a682516 reconciliation succeeded
kustomization/loki/3a682516 reconciliation succeeded
2025-04-24 23:50:14 +02:00
7f78d71d42
Added promtail 2025-04-24 23:50:13 +02:00
23690f01db
Added loki 2025-04-24 23:50:09 +02:00
16 changed files with 240 additions and 4 deletions

View File

@ -21,7 +21,9 @@ repos:
hooks: hooks:
- id: kubeconform - id: kubeconform
- repo: https://github.com/tarioch/flux-check-hook # Linting does not work with external values.yaml
rev: v0.8.0 # TODO: Include url to schema in values.yaml and validate based on that?
hooks: # - repo: https://github.com/tarioch/flux-check-hook
- id: check-flux-helm-values # rev: v0.8.0
# hooks:
# - id: check-flux-helm-values

View File

@ -65,6 +65,12 @@ spec:
enabled: true enabled: true
existingSecret: grafana-ldap-toml existingSecret: grafana-ldap-toml
sidecar:
datasources:
enabled: true
searchNamespace: ALL
labelValue: "1"
extraSecretMounts: extraSecretMounts:
- name: postgres-app-mount - name: postgres-app-mount
secretName: postgres-app secretName: postgres-app

View File

@ -13,6 +13,7 @@ resources:
- ./../../../infra/kube-vip - ./../../../infra/kube-vip
- ./../../../infra/kyverno - ./../../../infra/kyverno
- ./../../../infra/lldap - ./../../../infra/lldap
- ./../../../infra/loki
- ./../../../infra/node-feature-discovery - ./../../../infra/node-feature-discovery
- ./../../../infra/rook-ceph - ./../../../infra/rook-ceph
- ./../../../infra/topolvm - ./../../../infra/topolvm

View File

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./loki.yaml
- ./promtail.yaml

18
infra/loki/loki.yaml Normal file
View File

@ -0,0 +1,18 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: loki
namespace: flux-system
labels:
alert: flux-infra
spec:
interval: 15m
path: ./infra/loki/loki
dependsOn:
- name: rook-ceph
prune: true
timeout: 2m
sourceRef:
kind: GitRepository
name: flux-system
wait: true

View File

@ -0,0 +1,18 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: loki
spec:
chart:
spec:
chart: loki
reconcileStrategy: ChartVersion
sourceRef:
kind: HelmRepository
name: grafana
version: 6.29.0
interval: 15m
timeout: 5m
valuesFrom:
- kind: ConfigMap
name: loki-values

View File

@ -0,0 +1,7 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: grafana
spec:
interval: 15m
url: https://grafana.github.io/helm-charts

View File

@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: loki
resources:
- ./namespace.yaml
- ./object-bucket-claim.yaml
- ./helm-repository.yaml
- ./helm-release.yaml
configurations:
- ../../../common/name-reference/helm-release.yaml
configMapGenerator:
- name: loki-values
files:
- ./values.yaml
- name: grafana-datasource
options:
labels:
grafana_datasource: "1"
files:
- ./loki-datasource.yaml

View File

@ -0,0 +1,8 @@
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://loki-gateway.loki.svc.cluster.local
uid: "loki"
jsonData: {}

View File

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: loki

View File

@ -0,0 +1,7 @@
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: loki-bucket
spec:
generateBucketName: loki
storageClassName: ceph-bucket

View File

@ -0,0 +1,75 @@
loki:
auth_enabled: false
schemaConfig:
configs:
- from: "2024-04-01"
store: tsdb
object_store: s3
schema: v13
index:
prefix: index_
period: 24h
limits_config:
split_queries_by_interval: "1h"
retention_period: 672h # 28 days retention
query_scheduler:
max_outstanding_requests_per_tenant: 2048
storage:
type: s3
bucketNames:
chunks: "${BUCKET_NAME}"
ruler: "${BUCKET_NAME}"
admin: "${BUCKET_NAME}"
s3:
# s3 URL can be used to specify the endpoint, access key, secret key, and bucket name this works well for S3 compatible storages or if you are hosting Loki on-premises and want to use S3 as the storage backend. Either use the s3 URL or the individual fields below (AWS endpoint, region, secret).
# s3: s3://access_key:secret_access_key@custom_endpoint/bucket_name
# AWS endpoint URL
endpoint: "${BUCKET_HOST}"
# AWS region where the S3 bucket is located
region: "${BUCKET_REGION}"
# AWS secret access key
secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
# AWS access key ID
accessKeyId: "${AWS_ACCESS_KEY_ID}"
# AWS signature version (e.g., v2 or v4)
# signatureVersion: <your-signature-version>
# Forces the path style for S3 (true/false)
s3ForcePathStyle: true
# Allows insecure (HTTP) connections (true/false)
insecure: true
# HTTP configuration settings
# http_config: {}
backend:
replicas: 2
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-bucket
- configMapRef:
name: loki-bucket
read:
replicas: 2
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-bucket
- configMapRef:
name: loki-bucket
write:
replicas: 2
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-bucket
- configMapRef:
name: loki-bucket

18
infra/loki/promtail.yaml Normal file
View File

@ -0,0 +1,18 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: promtail
namespace: flux-system
labels:
alert: flux-infra
spec:
interval: 15m
path: ./infra/loki/promtail
dependsOn:
- name: loki
prune: true
timeout: 2m
sourceRef:
kind: GitRepository
name: flux-system
wait: true

View File

@ -0,0 +1,18 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: promtail
spec:
chart:
spec:
chart: promtail
reconcileStrategy: ChartVersion
sourceRef:
kind: HelmRepository
name: grafana
version: 6.16.6
interval: 15m
timeout: 5m
valuesFrom:
- kind: ConfigMap
name: promtail-values

View File

@ -0,0 +1,13 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: loki
resources:
- ./helm-release.yaml
configurations:
- ../../../common/name-reference/helm-release.yaml
configMapGenerator:
- name: promtail-values
files:
- ./values.yaml

View File

@ -0,0 +1,14 @@
initContainer:
# -- Specifies whether the init container for setting inotify max user instances is to be enabled
- name: init
# -- Docker registry, image and tag for the init container image
image: docker.io/busybox:1.33
# -- Docker image pull policy for the init container image
imagePullPolicy: IfNotPresent
# -- The inotify max user instances to configure
command:
- sh
- -c
- sysctl -w fs.inotify.max_user_instances=512
securityContext:
privileged: true