Added loki
Some checks failed
kustomization/cert-manager/3a682516 reconciliation succeeded
kustomization/rook-ceph/3a682516 reconciliation succeeded
kustomization/kyverno/3a682516 reconciliation succeeded
kustomization/velero/3a682516 reconciliation succeeded
kustomization/akri/3a682516 reconciliation succeeded
kustomization/rook-ceph-cluster/3a682516 reconciliation succeeded
kustomization/letsencrypt/3a682516 reconciliation succeeded
kustomization/node-feature-discovery/3a682516 reconciliation succeeded
kustomization/node-feature-discovery-rules/3a682516 reconciliation succeeded
kustomization/flux-system/3a682516 reconciliation succeeded
kustomization/topolvm/3a682516 reconciliation succeeded
kustomization/kyverno-policies/3a682516 reconciliation succeeded
kustomization/traefik/3a682516 reconciliation succeeded
kustomization/cnpg/3a682516 reconciliation succeeded
kustomization/kube-vip/3a682516 reconciliation succeeded
kustomization/traefik-middleware/3a682516 reconciliation succeeded
kustomization/authelia/3a682516 reconciliation succeeded
kustomization/lldap/3a682516 reconciliation succeeded
kustomization/apps/3a682516 reconciliation succeeded
kustomization/loki/3a682516 health check failed

This commit is contained in:
Dreaded_X 2025-04-24 14:44:41 +02:00
parent 53ce8d4343
commit bf7d1375f8
Signed by: Dreaded_X
GPG Key ID: 5A0CBFE3C3377FAA
11 changed files with 212 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

@ -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,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./loki.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,16 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: loki
resources:
- ./namespace.yaml
- ./object-bucket-claim-chunks.yaml
- ./object-bucket-claim-ruler.yaml
- ./helm-repository.yaml
- ./helm-release.yaml
configurations:
- ../../../common/name-reference/helm-release.yaml
configMapGenerator:
- name: loki-values
files:
- ./values.yaml

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: chunks
spec:
generateBucketName: chunks
storageClassName: ceph-bucket

View File

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

124
infra/loki/loki/values.yaml Normal file
View File

@ -0,0 +1,124 @@
global:
extraArgs:
- -config.expand-env=true
extraEnv:
- name: CHUNKS_BUCKET_NAME
valueFrom:
configMapRef:
name: chunks
key: BUCKET_NAME
- name: CHUNKS_BUCKET_REGION
valueFrom:
configMapRef:
name: chunks
key: BUCKET_REGION
- name: CHUNKS_BUCKET_HOST
valueFrom:
configMapRef:
name: chunks
key: BUCKET_HOST
- name: CHUNKS_SECRET_ACCESS_KEY
valueFrom:
secretRef:
name: chunks
key: AWS_SECRET_ACCESS_KEY
- name: CHUNKS_ACCESS_KEY_ID
valueFrom:
secretRef:
name: chunks
key: CHUNKS_ACCESS_KEY_ID
- name: RULER_BUCKET_NAME
valueFrom:
configMapRef:
name: ruler
key: BUCKET_NAME
- name: RULER_BUCKET_REGION
valueFrom:
configMapRef:
name: ruler
key: BUCKET_REGION
- name: RULER_BUCKET_HOST
valueFrom:
configMapRef:
name: ruler
key: BUCKET_HOST
- name: RULER_SECRET_ACCESS_KEY
valueFrom:
secretRef:
name: ruler
key: AWS_SECRET_ACCESS_KEY
- name: RULER_ACCESS_KEY_ID
valueFrom:
secretRef:
name: ruler
key: RULER_ACCESS_KEY_ID
loki:
schemaConfig:
configs:
- from: "2024-04-01"
store: tsdb
object_store: s3
schema: v13
index:
prefix: loki_index_
period: 24h
storage_config:
aws:
region: "${CHUNKS_BUCKET_REGION}"
bucketnames: "${CHUNKS_BUCKET_NAME}"
s3forcepathstyle: true
pattern_ingester:
enabled: true
limits_config:
allow_structured_metadata: true
volume_enabled: true
retention_period: 672h # 28 days retention
querier:
max_concurrent: 4
storage:
type: s3
bucketNames:
chunks: "${CHUNKS_BUCKET_NAME}"
ruler: "${RULER_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: "${CHUNKS_BUCKET_HOST}"
# AWS region where the S3 bucket is located
region: "${CHUNKS_BUCKET_REGION}"
# AWS secret access key
secretAccessKey: "${CHUNKS_SECRET_ACCESS_KEY}"
# AWS access key ID
accessKeyId: "${CHUNKS_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: {}
rulerConfig:
storage:
s3:
endpoint: ${RULER_BUCKET_HOST}
region: ${RULER_BUCKET_REGION}
secret_access_key: ${RULER_SECRET_ACCESS_KEY}
access_key_id: ${RULER_ACCESS_KEY_ID}
deploymentMode: SimpleScalable
backend:
replicas: 3
read:
replicas: 3
write:
replicas: 3
# Disable minio storage
minio:
enabled: false