Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci(helm): added workflow to see the diff #14134

Merged
merged 2 commits into from
Sep 17, 2024

Conversation

vlad-diachenko
Copy link
Contributor

@vlad-diachenko vlad-diachenko commented Sep 13, 2024

What this PR does / why we need it:
added a new workflow that prints the diff of kube manifests on Loki helm charts PRs.

Special notes for your reviewer:
I have added a few examples of values files into scenarios folder, feel free to add other examples as well...

Each scenario is used as the values file for the Loki Helm chart to render Kubernetes manifests in base and PR's branch to compare the content and report the diff on Pull Request as a comment(example). It gives the ability to the reviewer to understand how the changes in the chart modify resulting manifests.

img

The workflow reports three types of changes for each scenario:

  1. Added files - the manifests that are added in the current PR and that did not exist in base branch.

added

  1. Modified files - the manifests that exist in both branches but the changes in PRs branch modify them.
    modified

  2. Removed files - the manifests that exist in base branch but do not exist in PRs branch.

removed

@vlad-diachenko vlad-diachenko requested a review from a team as a code owner September 13, 2024 13:16
@vlad-diachenko vlad-diachenko force-pushed the vlad.diachenko/helm-diff-printer branch from c49c5c8 to 94d19a1 Compare September 13, 2024 13:17
@vlad-diachenko vlad-diachenko force-pushed the vlad.diachenko/helm-diff-printer branch from 94d19a1 to a380771 Compare September 13, 2024 13:36

This comment has been minimized.

Copy link
Collaborator

@trevorwhitney trevorwhitney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great idea @vlad-diachenko, love it!

Copy link
Contributor

Kubernetes Manifest Diff Summary

Scenario: default-single-binary-values (Added: 57, Modified: 0, Removed: 0)

Summary:

  • Added: 57

  • Modified: 0

  • Removed: 0

Added Files

loki/charts/minio/templates/post-install-create-user-job.yaml
---
# Source: loki/charts/minio/templates/post-install-create-user-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
 name: loki-test-chart-name-minio-make-user-job
 namespace: "default"
 labels:
 app: minio-make-user-job
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
 annotations:
 "helm.sh/hook": post-install,post-upgrade
 "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
spec:
 template:
 metadata:
 labels:
 app: minio-job
 release: loki-test-chart-name
 spec:
 restartPolicy: OnFailure 
 volumes:
 - name: minio-configuration
 projected:
 sources:
 - configMap:
 name: loki-test-chart-name-minio
 - secret:
 name: loki-test-chart-name-minio

 serviceAccountName: minio-sa
 containers:
 - name: minio-mc
 image: "quay.io/minio/mc:RELEASE.2022-09-16T09-16-47Z"
 imagePullPolicy: IfNotPresent
 command: ["/bin/sh", "/config/add-user"]
 env:
 - name: MINIO_ENDPOINT
 value: loki-test-chart-name-minio
 - name: MINIO_PORT
 value: "9000"
 volumeMounts:
 - name: minio-configuration
 mountPath: /config
 resources:
 requests:
 memory: 128Mi
loki/charts/minio/templates/statefulset.yaml
---
# Source: loki/charts/minio/templates/statefulset.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-minio-svc
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: "loki-test-chart-name"
 heritage: "Helm"
spec:
 publishNotReadyAddresses: true
 clusterIP: None
 ports:
 - name: http
 port: 9000
 protocol: TCP
 targetPort: 9000
 selector:
 app: minio
 release: loki-test-chart-name
---
# Source: loki/charts/minio/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-minio
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
spec:
 updateStrategy:
 type: RollingUpdate
 podManagementPolicy: "Parallel"
 serviceName: loki-test-chart-name-minio-svc
 replicas: 1
 selector:
 matchLabels:
 app: minio
 release: loki-test-chart-name
 template:
 metadata:
 name: loki-test-chart-name-minio
 labels:
 app: minio
 release: loki-test-chart-name
 annotations:
 checksum/secrets: 78a49b82f52849e48441c61981e69eb775a1daa578c9eb9767644ec0d063fad0
 checksum/config: 9f25d6c5255157376e499a246d3f9eabb081eba553bacdcfca3494bafc438a68
 spec:
 securityContext:
 runAsUser: 1000
 runAsGroup: 1000
 fsGroup: 1000
 fsGroupChangePolicy: OnRootMismatch

 serviceAccountName: minio-sa
 containers:
 - name: minio
 image: quay.io/minio/minio:RELEASE.2022-09-17T00-09-45Z
 imagePullPolicy: IfNotPresent

 command: [ "/bin/sh",
 "-ce",
 "/usr/bin/docker-entrypoint.sh minio server http://loki-test-chart-name-minio-{0...0}.loki-test-chart-name-minio-svc.default.svc.cluster.local/export-{0...1} -S /etc/minio/certs/ --address :9000 --console-address :9001" ]
 volumeMounts:
 - name: export-0
 mountPath: /export-0
 - name: export-1
 mountPath: /export-1 
 ports:
 - name: http
 containerPort: 9000
 - name: http-console
 containerPort: 9001
 env:
 - name: MINIO_ROOT_USER
 valueFrom:
 secretKeyRef:
 name: loki-test-chart-name-minio
 key: rootUser
 - name: MINIO_ROOT_PASSWORD
 valueFrom:
 secretKeyRef:
 name: loki-test-chart-name-minio
 key: rootPassword
 - name: MINIO_PROMETHEUS_AUTH_TYPE
 value: "public"
 resources:
 requests:
 cpu: 100m
 memory: 128Mi 
 volumes:
 - name: minio-user
 secret:
 secretName: loki-test-chart-name-minio 
 volumeClaimTemplates:
 - metadata:
 name: export-0
 spec:
 accessModes: [ "ReadWriteOnce" ]
 resources:
 requests:
 storage: 5Gi
 - metadata:
 name: export-1
 spec:
 accessModes: [ "ReadWriteOnce" ]
 resources:
 requests:
 storage: 5Gi
loki/charts/minio/templates/configmap.yaml
---
# Source: loki/charts/minio/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-test-chart-name-minio
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
data:
 initialize: |-
 #!/bin/sh
 set -e ; # Have script exit in the event of a failed command.
 MC_CONFIG_DIR="/etc/minio/mc/"
 MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
 
 # connectToMinio
 # Use a check-sleep-check loop to wait for MinIO service to be available
 connectToMinio() {
 SCHEME=$1
 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
 set -e ; # fail if we can't read the keys.
 ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
 set +e ; # The connections to minio are allowed to fail.
 echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
 MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
 $MC_COMMAND ;
 STATUS=$? ;
 until [ $STATUS = 0 ]
 do
 ATTEMPTS=`expr $ATTEMPTS + 1` ;
 echo \"Failed attempts: $ATTEMPTS\" ;
 if [ $ATTEMPTS -gt $LIMIT ]; then
 exit 1 ;
 fi ;
 sleep 2 ; # 1 second intervals between attempts
 $MC_COMMAND ;
 STATUS=$? ;
 done ;
 set -e ; # reset `e` as active
 return 0
 }
 
 # checkBucketExists ($bucket)
 # Check if the bucket exists, by using the exit code of `mc ls`
 checkBucketExists() {
 BUCKET=$1
 CMD=$(${MC} ls myminio/$BUCKET > /dev/null 2>&1)
 return $?
 }
 
 # createBucket ($bucket, $policy, $purge)
 # Ensure bucket exists, purging if asked to
 createBucket() {
 BUCKET=$1
 POLICY=$2
 PURGE=$3
 VERSIONING=$4
 OBJECTLOCKING=$5
 
 # Purge the bucket, if set & exists
 # Since PURGE is user input, check explicitly for `true`
 if [ $PURGE = true ]; then
 if checkBucketExists $BUCKET ; then
 echo "Purging bucket '$BUCKET'."
 set +e ; # don't exit if this fails
 ${MC} rm -r --force myminio/$BUCKET
 set -e ; # reset `e` as active
 else
 echo "Bucket '$BUCKET' does not exist, skipping purge."
 fi
 fi
 
 # Create the bucket if it does not exist and set objectlocking if enabled (NOTE: versioning will be not changed if OBJECTLOCKING is set because it enables versioning to the Buckets created)
 if ! checkBucketExists $BUCKET ; then
 if [ ! -z $OBJECTLOCKING ] ; then
 if [ $OBJECTLOCKING = true ] ; then
 echo "Creating bucket with OBJECTLOCKING '$BUCKET'"
 ${MC} mb --with-lock myminio/$BUCKET
 elif [ $OBJECTLOCKING = false ] ; then
 echo "Creating bucket '$BUCKET'"
 ${MC} mb myminio/$BUCKET
 fi
 elif [ -z $OBJECTLOCKING ] ; then
 echo "Creating bucket '$BUCKET'"
 ${MC} mb myminio/$BUCKET
 else
 echo "Bucket '$BUCKET' already exists." 
 fi
 fi
 
 
 # set versioning for bucket if objectlocking is disabled or not set
 if [ -z $OBJECTLOCKING ] ; then
 if [ ! -z $VERSIONING ] ; then
 if [ $VERSIONING = true ] ; then
 echo "Enabling versioning for '$BUCKET'"
 ${MC} version enable myminio/$BUCKET
 elif [ $VERSIONING = false ] ; then
 echo "Suspending versioning for '$BUCKET'"
 ${MC} version suspend myminio/$BUCKET
 fi
 fi
 else
 echo "Bucket '$BUCKET' versioning unchanged."
 fi
 
 
 # At this point, the bucket should exist, skip checking for existence
 # Set policy on the bucket
 echo "Setting policy of bucket '$BUCKET' to '$POLICY'."
 ${MC} policy set $POLICY myminio/$BUCKET
 }
 
 # Try connecting to MinIO instance
 scheme=http
 connectToMinio $scheme
 
 
 
 # Create the buckets
 createBucket chunks none false 
 createBucket ruler none false 
 createBucket admin none false 
 add-user: |-
 #!/bin/sh
 set -e ; # Have script exit in the event of a failed command.
 MC_CONFIG_DIR="/etc/minio/mc/"
 MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
 
 # AccessKey and secretkey credentials file are added to prevent shell execution errors caused by special characters.
 # Special characters for example : ',",<,>,{,}
 MINIO_ACCESSKEY_SECRETKEY_TMP="/tmp/accessKey_and_secretKey_tmp"
 
 # connectToMinio
 # Use a check-sleep-check loop to wait for MinIO service to be available
 connectToMinio() {
 SCHEME=$1
 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
 set -e ; # fail if we can't read the keys.
 ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
 set +e ; # The connections to minio are allowed to fail.
 echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
 MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
 $MC_COMMAND ;
 STATUS=$? ;
 until [ $STATUS = 0 ]
 do
 ATTEMPTS=`expr $ATTEMPTS + 1` ;
 echo \"Failed attempts: $ATTEMPTS\" ;
 if [ $ATTEMPTS -gt $LIMIT ]; then
 exit 1 ;
 fi ;
 sleep 2 ; # 1 second intervals between attempts
 $MC_COMMAND ;
 STATUS=$? ;
 done ;
 set -e ; # reset `e` as active
 return 0
 }
 
 # checkUserExists ()
 # Check if the user exists, by using the exit code of `mc admin user info`
 checkUserExists() {
 CMD=$(${MC} admin user info myminio $(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP) > /dev/null 2>&1)
 return $?
 }
 
 # createUser ($policy)
 createUser() {
 POLICY=$1
 #check accessKey_and_secretKey_tmp file
 if [[ ! -f $MINIO_ACCESSKEY_SECRETKEY_TMP ]];then
 echo "credentials file does not exist"
 return 1
 fi
 if [[ $(cat $MINIO_ACCESSKEY_SECRETKEY_TMP|wc -l) -ne 2 ]];then
 echo "credentials file is invalid"
 rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP
 return 1
 fi
 USER=$(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP)
 # Create the user if it does not exist
 if ! checkUserExists ; then
 echo "Creating user '$USER'"
 cat $MINIO_ACCESSKEY_SECRETKEY_TMP | ${MC} admin user add myminio
 else
 echo "User '$USER' already exists."
 fi
 #clean up credentials files.
 rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP
 
 # set policy for user
 if [ ! -z $POLICY -a $POLICY != " " ] ; then
 echo "Adding policy '$POLICY' for '$USER'"
 ${MC} admin policy set myminio $POLICY user=$USER
 else
 echo "User '$USER' has no policy attached."
 fi
 }
 
 # Try connecting to MinIO instance
 scheme=http
 connectToMinio $scheme
 
 
 
 # Create the users
 echo console > $MINIO_ACCESSKEY_SECRETKEY_TMP
 echo console123 >> $MINIO_ACCESSKEY_SECRETKEY_TMP
 createUser consoleAdmin
 
 add-policy: |-
 #!/bin/sh
 set -e ; # Have script exit in the event of a failed command.
 MC_CONFIG_DIR="/etc/minio/mc/"
 MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
 
 # connectToMinio
 # Use a check-sleep-check loop to wait for MinIO service to be available
 connectToMinio() {
 SCHEME=$1
 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
 set -e ; # fail if we can't read the keys.
 ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
 set +e ; # The connections to minio are allowed to fail.
 echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
 MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
 $MC_COMMAND ;
 STATUS=$? ;
 until [ $STATUS = 0 ]
 do
 ATTEMPTS=`expr $ATTEMPTS + 1` ;
 echo \"Failed attempts: $ATTEMPTS\" ;
 if [ $ATTEMPTS -gt $LIMIT ]; then
 exit 1 ;
 fi ;
 sleep 2 ; # 1 second intervals between attempts
 $MC_COMMAND ;
 STATUS=$? ;
 done ;
 set -e ; # reset `e` as active
 return 0
 }
 
 # checkPolicyExists ($policy)
 # Check if the policy exists, by using the exit code of `mc admin policy info`
 checkPolicyExists() {
 POLICY=$1
 CMD=$(${MC} admin policy info myminio $POLICY > /dev/null 2>&1)
 return $?
 }
 
 # createPolicy($name, $filename)
 createPolicy () {
 NAME=$1
 FILENAME=$2
 
 # Create the name if it does not exist
 echo "Checking policy: $NAME (in /config/$FILENAME.json)"
 if ! checkPolicyExists $NAME ; then
 echo "Creating policy '$NAME'"
 else
 echo "Policy '$NAME' already exists."
 fi
 ${MC} admin policy add myminio $NAME /config/$FILENAME.json
 
 }
 
 # Try connecting to MinIO instance
 scheme=http
 connectToMinio $scheme
 
 
 custom-command: |-
 #!/bin/sh
 set -e ; # Have script exit in the event of a failed command.
 MC_CONFIG_DIR="/etc/minio/mc/"
 MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
 
 # connectToMinio
 # Use a check-sleep-check loop to wait for MinIO service to be available
 connectToMinio() {
 SCHEME=$1
 ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
 set -e ; # fail if we can't read the keys.
 ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
 set +e ; # The connections to minio are allowed to fail.
 echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
 MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
 $MC_COMMAND ;
 STATUS=$? ;
 until [ $STATUS = 0 ]
 do
 ATTEMPTS=`expr $ATTEMPTS + 1` ;
 echo \"Failed attempts: $ATTEMPTS\" ;
 if [ $ATTEMPTS -gt $LIMIT ]; then
 exit 1 ;
 fi ;
 sleep 2 ; # 1 second intervals between attempts
 $MC_COMMAND ;
 STATUS=$? ;
 done ;
 set -e ; # reset `e` as active
 return 0
 }
 
 # runCommand ($@)
 # Run custom mc command
 runCommand() {
 ${MC} "$@"
 return $?
 }
 
 # Try connecting to MinIO instance
 scheme=http
 connectToMinio $scheme
loki/charts/minio/templates/secrets.yaml
---
# Source: loki/charts/minio/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
 name: loki-test-chart-name-minio
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
type: Opaque
data:
 rootUser: "ZW50ZXJwcmlzZS1sb2dz"
 rootPassword: "c3VwZXJzZWNyZXQ="
loki/charts/minio/templates/console-service.yaml
---
# Source: loki/charts/minio/templates/console-service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-minio-console
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
spec:
 type: ClusterIP
 ports:
 - name: http
 port: 9001
 protocol: TCP
 targetPort: 9001
 selector:
 app: minio
 release: loki-test-chart-name
loki/charts/minio/templates/service.yaml
---
# Source: loki/charts/minio/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-minio
 namespace: "default"
 labels:
 app: minio
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
 monitoring: "true"
spec:
 type: ClusterIP
 ports:
 - name: http
 port: 9000
 protocol: TCP
 targetPort: 9000
 selector:
 app: minio
 release: loki-test-chart-name
loki/charts/minio/templates/post-install-create-bucket-job.yaml
---
# Source: loki/charts/minio/templates/post-install-create-bucket-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
 name: loki-test-chart-name-minio-make-bucket-job
 namespace: "default"
 labels:
 app: minio-make-bucket-job
 chart: minio-4.0.15
 release: loki-test-chart-name
 heritage: Helm
 annotations:
 "helm.sh/hook": post-install,post-upgrade
 "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
spec:
 template:
 metadata:
 labels:
 app: minio-job
 release: loki-test-chart-name
 spec:
 restartPolicy: OnFailure 
 volumes:
 - name: minio-configuration
 projected:
 sources:
 - configMap:
 name: loki-test-chart-name-minio
 - secret:
 name: loki-test-chart-name-minio

 serviceAccountName: minio-sa
 containers:
 - name: minio-mc
 image: "quay.io/minio/mc:RELEASE.2022-09-16T09-16-47Z"
 imagePullPolicy: IfNotPresent
 command: ["/bin/sh", "/config/initialize"]
 env:
 - name: MINIO_ENDPOINT
 value: loki-test-chart-name-minio
 - name: MINIO_PORT
 value: "9000"
 volumeMounts:
 - name: minio-configuration
 mountPath: /config
 resources:
 requests:
 memory: 128Mi
loki/charts/minio/templates/serviceaccount.yaml
---
# Source: loki/charts/minio/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: "minio-sa"
 namespace: "default"
loki/templates/query-scheduler/service-query-scheduler.yaml
---
# Source: loki/templates/query-scheduler/service-query-scheduler.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-scheduler
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-scheduler
spec:
 type: ClusterIP
 clusterIP: None
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpclb
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-scheduler
loki/templates/query-scheduler/deployment-query-scheduler.yaml
---
# Source: loki/templates/query-scheduler/deployment-query-scheduler.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-query-scheduler
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-scheduler
spec:
 replicas: 2
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-scheduler
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-scheduler
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: query-scheduler
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=query-scheduler
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 livenessProbe:
 null
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: query-scheduler
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/query-scheduler/poddisruptionbudget-query-scheduler.yaml
---
# Source: loki/templates/query-scheduler/poddisruptionbudget-query-scheduler.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-query-scheduler
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-scheduler
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-scheduler
 maxUnavailable: 1
loki/templates/querier/poddisruptionbudget-querier.yaml
---
# Source: loki/templates/querier/poddisruptionbudget-querier.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-querier
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: querier
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: querier
 maxUnavailable: 2
loki/templates/querier/service-querier.yaml
---
# Source: loki/templates/querier/service-querier.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-querier
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: querier
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: querier
loki/templates/querier/deployment-querier.yaml
---
# Source: loki/templates/querier/deployment-querier.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-querier
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: querier
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 3
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: querier
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: querier
 app.kubernetes.io/part-of: memberlist
 spec:
 topologySpreadConstraints:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: querier
 maxSkew: 1
 topologyKey: kubernetes.io/hostname
 whenUnsatisfiable: ScheduleAnyway
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: querier
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=querier
 - -distributor.zone-awareness-enabled=true
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 livenessProbe:
 null
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: querier
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/ingester/statefulset-ingester-zone-c.yaml
---
# Source: loki/templates/ingester/statefulset-ingester-zone-c.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-ingester-zone-c
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 rollout-group: ingester
 name: ingester-zone-c
 annotations:
 rollout-max-unavailable: "1"
spec:
 replicas: 1
 podManagementPolicy: Parallel
 serviceName: loki-test-chart-name-ingester-zone-c
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-c
 rollout-group: ingester
 updateStrategy:
 type: OnDelete
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 name: ingester-zone-c
 rollout-group: ingester
 spec:
 topologySpreadConstraints:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: ingester
 maxSkew: 1
 topologyKey: kubernetes.io/hostname
 whenUnsatisfiable: ScheduleAnyway
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: ingester
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -ingester.availability-zone=zone-c
 - -ingester.unregister-on-shutdown=false
 - -ingester.tokens-file-path=/var/loki/ring-tokens
 - -target=ingester
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchExpressions:
 - key: rollout-group
 operator: In
 values:
 - ingester
 - key: name
 operator: NotIn
 values:
 - ingester-zone-c
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/ingester/service-ingester-zone-c-headless.yaml
---
# Source: loki/templates/ingester/service-ingester-zone-c-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-ingester-zone-c-headless
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
spec:
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-c
 rollout-group: ingester
loki/templates/ingester/poddisruptionbudget-ingester-rollout.yaml
---
# Source: loki/templates/ingester/poddisruptionbudget-ingester-rollout.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-ingester-rollout
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
spec:
 selector:
 matchLabels:
 rollout-group: ingester
 maxUnavailable: 1
loki/templates/ingester/statefulset-ingester-zone-a.yaml
---
# Source: loki/templates/ingester/statefulset-ingester-zone-a.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-ingester-zone-a
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 rollout-group: ingester
 name: ingester-zone-a
 annotations:
 rollout-max-unavailable: "1"
spec:
 replicas: 1
 podManagementPolicy: Parallel
 serviceName: loki-test-chart-name-ingester-zone-a
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-a
 rollout-group: ingester
 updateStrategy:
 type: OnDelete
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 name: ingester-zone-a
 rollout-group: ingester
 spec:
 topologySpreadConstraints:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: ingester
 maxSkew: 1
 topologyKey: kubernetes.io/hostname
 whenUnsatisfiable: ScheduleAnyway
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: ingester
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -ingester.availability-zone=zone-a
 - -ingester.unregister-on-shutdown=false
 - -ingester.tokens-file-path=/var/loki/ring-tokens
 - -target=ingester
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchExpressions:
 - key: rollout-group
 operator: In
 values:
 - ingester
 - key: name
 operator: NotIn
 values:
 - ingester-zone-a
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/ingester/service-ingester-zone-a-headless.yaml
---
# Source: loki/templates/ingester/service-ingester-zone-a-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-ingester-zone-a-headless
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
spec:
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-a
 rollout-group: ingester
loki/templates/ingester/statefulset-ingester-zone-b.yaml
---
# Source: loki/templates/ingester/statefulset-ingester-zone-b.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-ingester-zone-b
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 rollout-group: ingester
 name: ingester-zone-b
 annotations:
 rollout-max-unavailable: "1"
spec:
 replicas: 1
 podManagementPolicy: Parallel
 serviceName: loki-test-chart-name-ingester-zone-b
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-b
 rollout-group: ingester
 updateStrategy:
 type: OnDelete
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 app.kubernetes.io/part-of: memberlist
 name: ingester-zone-b
 rollout-group: ingester
 spec:
 topologySpreadConstraints:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: ingester
 maxSkew: 1
 topologyKey: kubernetes.io/hostname
 whenUnsatisfiable: ScheduleAnyway
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: ingester
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -ingester.availability-zone=zone-b
 - -ingester.unregister-on-shutdown=false
 - -ingester.tokens-file-path=/var/loki/ring-tokens
 - -target=ingester
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchExpressions:
 - key: rollout-group
 operator: In
 values:
 - ingester
 - key: name
 operator: NotIn
 values:
 - ingester-zone-b
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/ingester/service-ingester-zone-b-headless.yaml
---
# Source: loki/templates/ingester/service-ingester-zone-b-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-ingester-zone-b-headless
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ingester
spec:
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ingester
 name: ingester-zone-b
 rollout-group: ingester
loki/templates/bloom-builder/service-bloom-builder.yaml
---
# Source: loki/templates/bloom-builder/service-bloom-builder.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-bloom-builder
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: bloom-builder
spec:
 type: ClusterIP
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 - name: grpclb
 port: 9096
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: bloom-builder
loki/templates/bloom-builder/deployment-bloom-builder.yaml
---
# Source: loki/templates/bloom-builder/deployment-bloom-builder.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-bloom-builder
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: bloom-builder
spec:
 replicas: 0
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: bloom-builder
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: bloom-builder
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: bloom-builder
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=bloom-builder
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: bloom-builder
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/bloom-builder/service-bloom-builder-headless.yaml
---
# Source: loki/templates/bloom-builder/service-bloom-builder-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-bloom-builder-headless
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: bloom-builder
 prometheus.io/service-monitor: "false"
spec:
 clusterIP: None
 type: ClusterIP
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 - name: grpclb
 port: 9096
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: bloom-builder
loki/templates/tests/test-canary.yaml
---
# Source: loki/templates/tests/test-canary.yaml
apiVersion: v1
kind: Pod
metadata:
 name: "loki-helm-test"
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: helm-test
 annotations:
 "helm.sh/hook": test
spec:
 containers:
 - name: loki-helm-test
 image: docker.io/grafana/loki-helm-test:ewelch-distributed-helm-chart-17db5ee
 env:
 - name: CANARY_SERVICE_ADDRESS
 value: "http://loki-canary:3500/metrics"
 - name: CANARY_PROMETHEUS_ADDRESS
 value: ""
 - name: CANARY_TEST_TIMEOUT
 value: "1m"
 args:
 - -test.v
 restartPolicy: Never
loki/templates/config.yaml
---
# Source: loki/templates/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 config.yaml: |
 
 auth_enabled: true
 chunk_store_config:
 chunk_cache_config:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 0s
 memcached:
 batch_size: 4
 parallelism: 5
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-chunks-cache.default.svc
 consistent_hash: true
 max_idle_conns: 72
 timeout: 2000ms
 common:
 compactor_address: 'http://loki-test-chart-name-compactor:3100'
 path_prefix: /var/loki
 replication_factor: 3
 storage:
 s3:
 access_key_id: enterprise-logs
 bucketnames: chunks
 endpoint: loki-test-chart-name-minio.default.svc:9000
 insecure: true
 s3forcepathstyle: true
 secret_access_key: supersecret
 frontend:
 scheduler_address: loki-test-chart-name-query-scheduler.default.svc.cluster.local:9095
 tail_proxy_url: http://loki-test-chart-name-querier.default.svc.cluster.local:3100
 frontend_worker:
 scheduler_address: loki-test-chart-name-query-scheduler.default.svc.cluster.local:9095
 index_gateway:
 mode: simple
 ingester:
 chunk_encoding: snappy
 limits_config:
 max_cache_freshness_per_query: 10m
 query_timeout: 300s
 reject_old_samples: true
 reject_old_samples_max_age: 168h
 split_queries_by_interval: 15m
 volume_enabled: true
 memberlist:
 join_members:
 - loki-memberlist
 pattern_ingester:
 enabled: false
 querier:
 max_concurrent: 4
 query_range:
 align_queries_with_step: true
 cache_results: true
 results_cache:
 cache:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 12h
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-results-cache.default.svc
 consistent_hash: true
 timeout: 500ms
 update_interval: 1m
 ruler:
 storage:
 s3:
 bucketnames: ruler
 type: s3
 runtime_config:
 file: /etc/loki/runtime-config/runtime-config.yaml
 schema_config:
 configs:
 - from: "2024-04-01"
 index:
 period: 24h
 prefix: loki_index_
 object_store: s3
 schema: v13
 store: tsdb
 server:
 grpc_listen_port: 9095
 http_listen_port: 3100
 http_server_read_timeout: 600s
 http_server_write_timeout: 600s
 storage_config:
 boltdb_shipper:
 index_gateway_client:
 server_address: dns+loki-test-chart-name-index-gateway-headless.default.svc.cluster.local:9095
 hedging:
 at: 250ms
 max_per_second: 20
 up_to: 3
 tsdb_shipper:
 index_gateway_client:
 server_address: dns+loki-test-chart-name-index-gateway-headless.default.svc.cluster.local:9095
 tracing:
 enabled: true
loki/templates/query-frontend/deployment-query-frontend.yaml
---
# Source: loki/templates/query-frontend/deployment-query-frontend.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-query-frontend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-frontend
spec:
 replicas: 2
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-frontend
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-frontend
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: query-frontend
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=query-frontend
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: query-frontend
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/query-frontend/service-query-frontend-headless.yaml
---
# Source: loki/templates/query-frontend/service-query-frontend-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-frontend-headless
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-frontend
 prometheus.io/service-monitor: "false"
spec:
 clusterIP: None
 type: ClusterIP
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 - name: grpclb
 port: 9096
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-frontend
loki/templates/query-frontend/service-query-frontend.yaml
---
# Source: loki/templates/query-frontend/service-query-frontend.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-frontend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-frontend
spec:
 type: ClusterIP
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 - name: grpclb
 port: 9096
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-frontend
loki/templates/query-frontend/poddisruptionbudget-query-frontent.yaml
---
# Source: loki/templates/query-frontend/poddisruptionbudget-query-frontent.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-query-frontend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: query-frontend
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: query-frontend
 maxUnavailable: 1
loki/templates/service-memberlist.yaml
---
# Source: loki/templates/service-memberlist.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-memberlist
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: tcp
 port: 7946
 targetPort: http-memberlist
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/part-of: memberlist
loki/templates/loki-canary/daemonset.yaml
---
# Source: loki/templates/loki-canary/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 updateStrategy:
 rollingUpdate:
 maxUnavailable: 1
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 spec:
 serviceAccountName: loki-canary
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 containers:
 - name: loki-canary
 image: docker.io/grafana/loki-canary:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -addr=loki-test-chart-name-gateway.default.svc.cluster.local.:80
 - -labelname=pod
 - -labelvalue=$(POD_NAME)
 - -user=self-monitoring
 - -tenant-id=self-monitoring
 - -pass=
 - -push=true
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 ports:
 - name: http-metrics
 containerPort: 3500
 protocol: TCP
 env:
 - name: POD_NAME
 valueFrom:
 fieldRef:
 fieldPath: metadata.name
 
 readinessProbe:
 httpGet:
 path: /metrics
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 volumes:
loki/templates/loki-canary/service.yaml
---
# Source: loki/templates/loki-canary/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3500
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
loki/templates/loki-canary/serviceaccount.yaml
---
# Source: loki/templates/loki-canary/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
automountServiceAccountToken: true
loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
---
# Source: loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-results-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
 maxUnavailable: 1
loki/templates/results-cache/statefulset-results-cache.yaml
---
# Source: loki/templates/results-cache/statefulset-results-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-results-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 1229Mi
 requests:
 cpu: 500m
 memory: 1229Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 1024
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/results-cache/service-results-cache-headless.yaml
---
# Source: loki/templates/results-cache/service-results-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
loki/templates/distributor/deployment-distributor.yaml
---
# Source: loki/templates/distributor/deployment-distributor.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-distributor
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: distributor
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 3
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: distributor
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=distributor
 - -distributor.zone-awareness-enabled=true
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 livenessProbe:
 null
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: distributor
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/distributor/service-distributor-headless.yaml
---
# Source: loki/templates/distributor/service-distributor-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-distributor-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
 variant: headless
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
loki/templates/distributor/poddisruptionbudget-distributor.yaml
---
# Source: loki/templates/distributor/poddisruptionbudget-distributor.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-distributor
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: distributor
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
 maxUnavailable: 2
loki/templates/distributor/service-distributor.yaml
---
# Source: loki/templates/distributor/service-distributor.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-distributor
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: distributor
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: distributor
loki/templates/gateway/configmap-gateway.yaml
---
# Source: loki/templates/gateway/configmap-gateway.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
data:
 nginx.conf: | 
 worker_processes 5; ## Default: 1
 error_log /dev/stderr;
 pid /tmp/nginx.pid;
 worker_rlimit_nofile 8192;
 
 events {
 worker_connections 4096; ## Default: 1024
 }
 
 http {
 client_body_temp_path /tmp/client_temp;
 proxy_temp_path /tmp/proxy_temp_path;
 fastcgi_temp_path /tmp/fastcgi_temp;
 uwsgi_temp_path /tmp/uwsgi_temp;
 scgi_temp_path /tmp/scgi_temp;
 
 client_max_body_size 4M;
 
 proxy_read_timeout 600; ## 10 minutes
 proxy_send_timeout 600;
 proxy_connect_timeout 600;
 
 proxy_http_version 1.1;
 
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] $status '
 '"$request" $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 access_log /dev/stderr main;
 
 sendfile on;
 tcp_nopush on;
 resolver kube-dns.kube-system.svc.cluster.local.;
 
 
 server {
 listen 8080;
 listen [::]:8080;
 
 location = / {
 return 200 'OK';
 auth_basic off;
 }
 
 ########################################################
 # Configure backend targets# Distributor
 location = /api/prom/push {
 proxy_pass http://loki-test-chart-name-distributor.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/push {
 proxy_pass http://loki-test-chart-name-distributor.default.svc.cluster.local:3100$request_uri;
 }
 location = /distributor/ring {
 proxy_pass http://loki-test-chart-name-distributor.default.svc.cluster.local:3100$request_uri;
 }
 location = /otlp/v1/logs {
 proxy_pass http://loki-test-chart-name-distributor.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ingester
 location = /flush {
 proxy_pass http://loki-test-chart-name-ingester.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /ingester/ {
 proxy_pass http://loki-test-chart-name-ingester.default.svc.cluster.local:3100$request_uri;
 }
 location = /ingester {
 internal; # to suppress 301
 }
 
 # Ring
 location = /ring {
 proxy_pass http://loki-test-chart-name-ingester.default.svc.cluster.local:3100$request_uri;
 }
 
 # MemberListKV
 location = /memberlist {
 proxy_pass http://loki-test-chart-name-ingester.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ruler
 location = /ruler/ring {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom/rules {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /api/prom/rules/ {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/rules {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /loki/api/v1/rules/ {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/alerts {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/rules {
 proxy_pass http://loki-test-chart-name-ruler.default.svc.cluster.local:3100$request_uri;
 }
 
 # Compactor
 location = /compactor/ring {
 proxy_pass http://loki-test-chart-name-compactor.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/delete {
 proxy_pass http://loki-test-chart-name-compactor.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/cache/generation_numbers {
 proxy_pass http://loki-test-chart-name-compactor.default.svc.cluster.local:3100$request_uri;
 }
 
 # IndexGateway
 location = /indexgateway/ring {
 proxy_pass http://loki-test-chart-name-index-gateway.default.svc.cluster.local:3100$request_uri;
 }
 
 # QueryScheduler
 location = /scheduler/ring {
 proxy_pass http://loki-test-chart-name-query-scheduler.default.svc.cluster.local:3100$request_uri;
 }
 
 # Config
 location = /config {
 proxy_pass http://loki-test-chart-name-ingester.default.svc.cluster.local:3100$request_uri;
 }
 
 
 # QueryFrontend, Querier
 location = /api/prom/tail {
 proxy_pass http://loki-test-chart-name-query-frontend.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location = /loki/api/v1/tail {
 proxy_pass http://loki-test-chart-name-query-frontend.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location ^~ /api/prom/ {
 proxy_pass http://loki-test-chart-name-query-frontend.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom {
 internal; # to suppress 301
 }
 location ^~ /loki/api/v1/ {
 proxy_pass http://loki-test-chart-name-query-frontend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1 {
 internal; # to suppress 301
 }
 }
 }
loki/templates/gateway/service-gateway.yaml
---
# Source: loki/templates/gateway/service-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 80
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
loki/templates/gateway/deployment-gateway-nginx.yaml
---
# Source: loki/templates/gateway/deployment-gateway-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
spec:
 replicas: 1
 strategy:
 type: RollingUpdate
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 template:
 metadata:
 annotations:
 checksum/config: 15c46973e60557d100e2671b98523f215075965a869846ba66cd8fc9c70349ec
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 spec:
 serviceAccountName: loki
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 101
 runAsGroup: 101
 runAsNonRoot: true
 runAsUser: 101
 terminationGracePeriodSeconds: 30
 containers:
 - name: nginx
 image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
 imagePullPolicy: IfNotPresent
 ports:
 - name: http-metrics
 containerPort: 8080
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 - name: config
 mountPath: /etc/nginx
 - name: tmp
 mountPath: /tmp
 - name: docker-entrypoint-d-override
 mountPath: /docker-entrypoint.d
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: gateway
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki-test-chart-name-gateway
 - name: tmp
 emptyDir: {}
 - name: docker-entrypoint-d-override
 emptyDir: {}
loki/templates/index-gateway/poddisruptionbudget-index-gateway.yaml
---
# Source: loki/templates/index-gateway/poddisruptionbudget-index-gateway.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-index-gateway
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: index-gateway
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
 maxUnavailable: 1
loki/templates/index-gateway/service-index-gateway.yaml
---
# Source: loki/templates/index-gateway/service-index-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-index-gateway
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: index-gateway
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
loki/templates/index-gateway/statefulset-index-gateway.yaml
---
# Source: loki/templates/index-gateway/statefulset-index-gateway.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-index-gateway
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: index-gateway
spec:
 replicas: 2
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-test-chart-name-index-gateway-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: index-gateway
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=index-gateway
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 livenessProbe:
 null
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: index-gateway
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/index-gateway/service-index-gateway-headless.yaml
---
# Source: loki/templates/index-gateway/service-index-gateway-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-index-gateway-headless
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: index-gateway
loki/templates/compactor/statefulset-compactor.yaml
---
# Source: loki/templates/compactor/statefulset-compactor.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-compactor
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: compactor
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-test-chart-name-compactor-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: compactor
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: compactor
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: compactor
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=compactor
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 
 volumeMounts:
 - name: temp
 mountPath: /tmp
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: compactor
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: temp
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: data
 emptyDir: {}
loki/templates/compactor/service-compactor.yaml
---
# Source: loki/templates/compactor/service-compactor.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-compactor
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: compactor
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: compactor
loki/templates/serviceaccount.yaml
---
# Source: loki/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
loki/templates/ruler/statefulset-ruler.yaml
---
# Source: loki/templates/ruler/statefulset-ruler.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-ruler
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: ruler
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 0
 revisionHistoryLimit: 10
 serviceName: loki-test-chart-name-ruler
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ruler
 template:
 metadata:
 annotations:
 checksum/config: 927412fe484bf5103a8ac7034f7bb86d52494eaff45e6aaf2ab9e5f9076b436d
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ruler
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: ruler
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=ruler
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 - name: tmp
 mountPath: /tmp/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: ruler
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: tmp
 emptyDir: {}
 - name: data
 emptyDir: {}
loki/templates/ruler/service-ruler.yaml
---
# Source: loki/templates/ruler/service-ruler.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-ruler
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ruler
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: ruler
loki/templates/chunks-cache/statefulset-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/statefulset-chunks-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-chunks-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 9830Mi
 requests:
 cpu: 500m
 memory: 9830Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 8192
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/chunks-cache/service-chunks-cache-headless.yaml
---
# Source: loki/templates/chunks-cache/service-chunks-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-chunks-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
 maxUnavailable: 1
loki/templates/runtime-configmap.yaml
---
# Source: loki/templates/runtime-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-runtime
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 runtime-config.yaml: |
 {}

Modified Files

No modified files

Removed Files

No removed files

Scenario: default-values (Added: 29, Modified: 0, Removed: 0)

Summary:

  • Added: 29

  • Modified: 0

  • Removed: 0

Added Files

loki/templates/tests/test-canary.yaml
---
# Source: loki/templates/tests/test-canary.yaml
apiVersion: v1
kind: Pod
metadata:
 name: "loki-helm-test"
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: helm-test
 annotations:
 "helm.sh/hook": test
spec:
 containers:
 - name: loki-helm-test
 image: docker.io/grafana/loki-helm-test:ewelch-distributed-helm-chart-17db5ee
 env:
 - name: CANARY_SERVICE_ADDRESS
 value: "http://loki-canary:3500/metrics"
 - name: CANARY_PROMETHEUS_ADDRESS
 value: ""
 - name: CANARY_TEST_TIMEOUT
 value: "1m"
 args:
 - -test.v
 restartPolicy: Never
loki/templates/read/service-read-headless.yaml
---
# Source: loki/templates/read/service-read-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/read/deployment-read.yaml
---
# Source: loki/templates/read/deployment-read.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-read
 namespace: default
 labels:
 app.kubernetes.io/part-of: memberlist
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
spec:
 replicas: 1
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/part-of: memberlist
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=read
 - -legacy-read-mode=false
 - -common.compactor-grpc-address=loki-backend.default.svc.cluster.local:9095
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: read
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: data
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/read/service-read.yaml
---
# Source: loki/templates/read/service-read.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/config.yaml
---
# Source: loki/templates/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 config.yaml: |
 
 auth_enabled: true
 chunk_store_config:
 chunk_cache_config:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 0s
 memcached:
 batch_size: 4
 parallelism: 5
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-chunks-cache.default.svc
 consistent_hash: true
 max_idle_conns: 72
 timeout: 2000ms
 common:
 compactor_address: 'http://loki-backend:3100'
 path_prefix: /var/loki
 replication_factor: 1
 storage:
 s3:
 bucketnames: chunks
 insecure: false
 s3forcepathstyle: false
 frontend:
 scheduler_address: ""
 tail_proxy_url: ""
 frontend_worker:
 scheduler_address: ""
 index_gateway:
 mode: simple
 limits_config:
 max_cache_freshness_per_query: 10m
 query_timeout: 300s
 reject_old_samples: true
 reject_old_samples_max_age: 168h
 split_queries_by_interval: 15m
 volume_enabled: true
 memberlist:
 join_members:
 - loki-memberlist
 pattern_ingester:
 enabled: false
 query_range:
 align_queries_with_step: true
 cache_results: true
 results_cache:
 cache:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 12h
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-results-cache.default.svc
 consistent_hash: true
 timeout: 500ms
 update_interval: 1m
 ruler:
 storage:
 s3:
 bucketnames: ruler
 insecure: false
 s3forcepathstyle: false
 type: s3
 runtime_config:
 file: /etc/loki/runtime-config/runtime-config.yaml
 schema_config:
 configs:
 - from: "2024-04-01"
 index:
 period: 24h
 prefix: index_
 object_store: 'filesystem'
 schema: v13
 store: tsdb
 server:
 grpc_listen_port: 9095
 http_listen_port: 3100
 http_server_read_timeout: 600s
 http_server_write_timeout: 600s
 storage_config:
 boltdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 hedging:
 at: 250ms
 max_per_second: 20
 up_to: 3
 tsdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 tracing:
 enabled: false
loki/templates/service-memberlist.yaml
---
# Source: loki/templates/service-memberlist.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-memberlist
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: tcp
 port: 7946
 targetPort: http-memberlist
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/part-of: memberlist
loki/templates/loki-canary/daemonset.yaml
---
# Source: loki/templates/loki-canary/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 updateStrategy:
 rollingUpdate:
 maxUnavailable: 1
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 spec:
 serviceAccountName: loki-canary
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 containers:
 - name: loki-canary
 image: docker.io/grafana/loki-canary:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -addr=loki-test-chart-name-gateway.default.svc.cluster.local.:80
 - -labelname=pod
 - -labelvalue=$(POD_NAME)
 - -user=self-monitoring
 - -tenant-id=self-monitoring
 - -pass=
 - -push=true
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 ports:
 - name: http-metrics
 containerPort: 3500
 protocol: TCP
 env:
 - name: POD_NAME
 valueFrom:
 fieldRef:
 fieldPath: metadata.name
 
 readinessProbe:
 httpGet:
 path: /metrics
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 volumes:
loki/templates/loki-canary/service.yaml
---
# Source: loki/templates/loki-canary/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3500
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
loki/templates/loki-canary/serviceaccount.yaml
---
# Source: loki/templates/loki-canary/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
automountServiceAccountToken: true
loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
---
# Source: loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-results-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
 maxUnavailable: 1
loki/templates/results-cache/statefulset-results-cache.yaml
---
# Source: loki/templates/results-cache/statefulset-results-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-results-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 1229Mi
 requests:
 cpu: 500m
 memory: 1229Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 1024
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/results-cache/service-results-cache-headless.yaml
---
# Source: loki/templates/results-cache/service-results-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
loki/templates/gateway/configmap-gateway.yaml
---
# Source: loki/templates/gateway/configmap-gateway.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
data:
 nginx.conf: | 
 worker_processes 5; ## Default: 1
 error_log /dev/stderr;
 pid /tmp/nginx.pid;
 worker_rlimit_nofile 8192;
 
 events {
 worker_connections 4096; ## Default: 1024
 }
 
 http {
 client_body_temp_path /tmp/client_temp;
 proxy_temp_path /tmp/proxy_temp_path;
 fastcgi_temp_path /tmp/fastcgi_temp;
 uwsgi_temp_path /tmp/uwsgi_temp;
 scgi_temp_path /tmp/scgi_temp;
 
 client_max_body_size 4M;
 
 proxy_read_timeout 600; ## 10 minutes
 proxy_send_timeout 600;
 proxy_connect_timeout 600;
 
 proxy_http_version 1.1;
 
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] $status '
 '"$request" $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 access_log /dev/stderr main;
 
 sendfile on;
 tcp_nopush on;
 resolver kube-dns.kube-system.svc.cluster.local.;
 
 
 server {
 listen 8080;
 listen [::]:8080;
 
 location = / {
 return 200 'OK';
 auth_basic off;
 }
 
 ########################################################
 # Configure backend targets# Distributor
 location = /api/prom/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /distributor/ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /otlp/v1/logs {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ingester
 location = /flush {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /ingester/ {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /ingester {
 internal; # to suppress 301
 }
 
 # Ring
 location = /ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # MemberListKV
 location = /memberlist {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ruler
 location = /ruler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /api/prom/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /loki/api/v1/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/alerts {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Compactor
 location = /compactor/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/delete {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/cache/generation_numbers {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # IndexGateway
 location = /indexgateway/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # QueryScheduler
 location = /scheduler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Config
 location = /config {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 
 # QueryFrontend, Querier
 location = /api/prom/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location = /loki/api/v1/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location ^~ /api/prom/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom {
 internal; # to suppress 301
 }
 location ^~ /loki/api/v1/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1 {
 internal; # to suppress 301
 }
 }
 }
loki/templates/gateway/service-gateway.yaml
---
# Source: loki/templates/gateway/service-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 80
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
loki/templates/gateway/deployment-gateway-nginx.yaml
---
# Source: loki/templates/gateway/deployment-gateway-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
spec:
 replicas: 1
 strategy:
 type: RollingUpdate
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 template:
 metadata:
 annotations:
 checksum/config: 9f31d0e363d3d13dcc6de473a599f0619f524418be6a7c1f71cbcac20631e25c
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 spec:
 serviceAccountName: loki
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 101
 runAsGroup: 101
 runAsNonRoot: true
 runAsUser: 101
 terminationGracePeriodSeconds: 30
 containers:
 - name: nginx
 image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
 imagePullPolicy: IfNotPresent
 ports:
 - name: http-metrics
 containerPort: 8080
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 - name: config
 mountPath: /etc/nginx
 - name: tmp
 mountPath: /tmp
 - name: docker-entrypoint-d-override
 mountPath: /docker-entrypoint.d
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: gateway
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki-test-chart-name-gateway
 - name: tmp
 emptyDir: {}
 - name: docker-entrypoint-d-override
 emptyDir: {}
loki/templates/write/service-write-headless.yaml
---
# Source: loki/templates/write/service-write-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/write/statefulset-write.yaml
---
# Source: loki/templates/write/statefulset-write.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-write-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=write
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: write
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/write/service-write.yaml
---
# Source: loki/templates/write/service-write.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/serviceaccount.yaml
---
# Source: loki/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
loki/templates/chunks-cache/statefulset-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/statefulset-chunks-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-chunks-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 9830Mi
 requests:
 cpu: 500m
 memory: 9830Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 8192
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/chunks-cache/service-chunks-cache-headless.yaml
---
# Source: loki/templates/chunks-cache/service-chunks-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-chunks-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
 maxUnavailable: 1
loki/templates/runtime-configmap.yaml
---
# Source: loki/templates/runtime-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-runtime
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 runtime-config.yaml: |
 {}
loki/templates/backend/service-backend.yaml
---
# Source: loki/templates/backend/service-backend.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/service-backend-headless.yaml
---
# Source: loki/templates/backend/service-backend-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/statefulset-backend.yaml
---
# Source: loki/templates/backend/statefulset-backend.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-backend-headless
 revisionHistoryLimit: 10
 
 persistentVolumeClaimRetentionPolicy:
 whenDeleted: Delete
 whenScaled: Delete
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki-sc-rules
 image: "kiwigrid/k8s-sidecar:1.27.5"
 imagePullPolicy: IfNotPresent
 env:
 - name: METHOD
 value: WATCH
 - name: LABEL
 value: "loki_rule"
 - name: FOLDER
 value: "/rules"
 - name: RESOURCE
 value: "both"
 - name: WATCH_SERVER_TIMEOUT
 value: "60"
 - name: WATCH_CLIENT_TIMEOUT
 value: "60"
 - name: LOG_LEVEL
 value: "INFO"
 volumeMounts:
 - name: sc-rules-volume
 mountPath: "/rules"
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=backend
 - -legacy-read-mode=false
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 - name: sc-rules-volume
 mountPath: "/rules"
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: backend
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: sc-rules-volume
 emptyDir: {}
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/backend/clusterrole.yaml
---
# Source: loki/templates/backend/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 name: loki-test-chart-name-clusterrole
rules:
- apiGroups: [""] # "" indicates the core API group
 resources: ["configmaps", "secrets"]
 verbs: ["get", "watch", "list"]
loki/templates/backend/clusterrolebinding.yaml
---
# Source: loki/templates/backend/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: loki-test-chart-name-clusterrolebinding
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
subjects:
 - kind: ServiceAccount
 name: loki
 namespace: default
roleRef:
 kind: ClusterRole
 name: loki-test-chart-name-clusterrole
 apiGroup: rbac.authorization.k8s.io
loki/templates/backend/query-scheduler-discovery.yaml
---
# Source: loki/templates/backend/query-scheduler-discovery.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-scheduler-discovery
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend

Modified Files

No modified files

Removed Files

No removed files

Scenario: ingress-values (Added: 30, Modified: 0, Removed: 0)

Summary:

  • Added: 30

  • Modified: 0

  • Removed: 0

Added Files

loki/templates/tests/test-canary.yaml
---
# Source: loki/templates/tests/test-canary.yaml
apiVersion: v1
kind: Pod
metadata:
 name: "loki-helm-test"
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: helm-test
 annotations:
 "helm.sh/hook": test
spec:
 containers:
 - name: loki-helm-test
 image: docker.io/grafana/loki-helm-test:ewelch-distributed-helm-chart-17db5ee
 env:
 - name: CANARY_SERVICE_ADDRESS
 value: "http://loki-canary:3500/metrics"
 - name: CANARY_PROMETHEUS_ADDRESS
 value: ""
 - name: CANARY_TEST_TIMEOUT
 value: "1m"
 args:
 - -test.v
 restartPolicy: Never
loki/templates/read/service-read-headless.yaml
---
# Source: loki/templates/read/service-read-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/read/deployment-read.yaml
---
# Source: loki/templates/read/deployment-read.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-read
 namespace: default
 labels:
 app.kubernetes.io/part-of: memberlist
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
spec:
 replicas: 1
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/part-of: memberlist
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=read
 - -legacy-read-mode=false
 - -common.compactor-grpc-address=loki-backend.default.svc.cluster.local:9095
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: read
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: data
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/read/service-read.yaml
---
# Source: loki/templates/read/service-read.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/config.yaml
---
# Source: loki/templates/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 config.yaml: |
 
 auth_enabled: true
 chunk_store_config:
 chunk_cache_config:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 0s
 memcached:
 batch_size: 4
 parallelism: 5
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-chunks-cache.default.svc
 consistent_hash: true
 max_idle_conns: 72
 timeout: 2000ms
 common:
 compactor_address: 'http://loki-backend:3100'
 path_prefix: /var/loki
 replication_factor: 1
 storage:
 s3:
 bucketnames: chunks
 insecure: false
 s3forcepathstyle: false
 frontend:
 scheduler_address: ""
 tail_proxy_url: ""
 frontend_worker:
 scheduler_address: ""
 index_gateway:
 mode: simple
 limits_config:
 max_cache_freshness_per_query: 10m
 query_timeout: 300s
 reject_old_samples: true
 reject_old_samples_max_age: 168h
 split_queries_by_interval: 15m
 volume_enabled: true
 memberlist:
 join_members:
 - loki-memberlist
 pattern_ingester:
 enabled: false
 query_range:
 align_queries_with_step: true
 cache_results: true
 results_cache:
 cache:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 12h
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-results-cache.default.svc
 consistent_hash: true
 timeout: 500ms
 update_interval: 1m
 ruler:
 storage:
 s3:
 bucketnames: ruler
 insecure: false
 s3forcepathstyle: false
 type: s3
 runtime_config:
 file: /etc/loki/runtime-config/runtime-config.yaml
 schema_config:
 configs:
 - from: "2024-04-01"
 index:
 period: 24h
 prefix: index_
 object_store: 'filesystem'
 schema: v13
 store: tsdb
 server:
 grpc_listen_port: 9095
 http_listen_port: 3100
 http_server_read_timeout: 600s
 http_server_write_timeout: 600s
 storage_config:
 boltdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 hedging:
 at: 250ms
 max_per_second: 20
 up_to: 3
 tsdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 tracing:
 enabled: false
loki/templates/service-memberlist.yaml
---
# Source: loki/templates/service-memberlist.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-memberlist
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: tcp
 port: 7946
 targetPort: http-memberlist
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/part-of: memberlist
loki/templates/loki-canary/daemonset.yaml
---
# Source: loki/templates/loki-canary/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 updateStrategy:
 rollingUpdate:
 maxUnavailable: 1
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 spec:
 serviceAccountName: loki-canary
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 containers:
 - name: loki-canary
 image: docker.io/grafana/loki-canary:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -addr=loki-test-chart-name-gateway.default.svc.cluster.local.:80
 - -labelname=pod
 - -labelvalue=$(POD_NAME)
 - -user=self-monitoring
 - -tenant-id=self-monitoring
 - -pass=
 - -push=true
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 ports:
 - name: http-metrics
 containerPort: 3500
 protocol: TCP
 env:
 - name: POD_NAME
 valueFrom:
 fieldRef:
 fieldPath: metadata.name
 
 readinessProbe:
 httpGet:
 path: /metrics
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 volumes:
loki/templates/loki-canary/service.yaml
---
# Source: loki/templates/loki-canary/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3500
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
loki/templates/loki-canary/serviceaccount.yaml
---
# Source: loki/templates/loki-canary/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
automountServiceAccountToken: true
loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
---
# Source: loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-results-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
 maxUnavailable: 1
loki/templates/results-cache/statefulset-results-cache.yaml
---
# Source: loki/templates/results-cache/statefulset-results-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-results-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 1229Mi
 requests:
 cpu: 500m
 memory: 1229Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 1024
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/results-cache/service-results-cache-headless.yaml
---
# Source: loki/templates/results-cache/service-results-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
loki/templates/gateway/configmap-gateway.yaml
---
# Source: loki/templates/gateway/configmap-gateway.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
data:
 nginx.conf: | 
 worker_processes 5; ## Default: 1
 error_log /dev/stderr;
 pid /tmp/nginx.pid;
 worker_rlimit_nofile 8192;
 
 events {
 worker_connections 4096; ## Default: 1024
 }
 
 http {
 client_body_temp_path /tmp/client_temp;
 proxy_temp_path /tmp/proxy_temp_path;
 fastcgi_temp_path /tmp/fastcgi_temp;
 uwsgi_temp_path /tmp/uwsgi_temp;
 scgi_temp_path /tmp/scgi_temp;
 
 client_max_body_size 4M;
 
 proxy_read_timeout 600; ## 10 minutes
 proxy_send_timeout 600;
 proxy_connect_timeout 600;
 
 proxy_http_version 1.1;
 
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] $status '
 '"$request" $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 access_log /dev/stderr main;
 
 sendfile on;
 tcp_nopush on;
 resolver kube-dns.kube-system.svc.cluster.local.;
 
 
 server {
 listen 8080;
 listen [::]:8080;
 
 location = / {
 return 200 'OK';
 auth_basic off;
 }
 
 ########################################################
 # Configure backend targets# Distributor
 location = /api/prom/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /distributor/ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /otlp/v1/logs {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ingester
 location = /flush {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /ingester/ {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /ingester {
 internal; # to suppress 301
 }
 
 # Ring
 location = /ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # MemberListKV
 location = /memberlist {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ruler
 location = /ruler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /api/prom/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /loki/api/v1/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/alerts {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Compactor
 location = /compactor/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/delete {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/cache/generation_numbers {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # IndexGateway
 location = /indexgateway/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # QueryScheduler
 location = /scheduler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Config
 location = /config {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 
 # QueryFrontend, Querier
 location = /api/prom/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location = /loki/api/v1/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location ^~ /api/prom/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom {
 internal; # to suppress 301
 }
 location ^~ /loki/api/v1/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1 {
 internal; # to suppress 301
 }
 }
 }
loki/templates/gateway/ingress-gateway.yaml
---
# Source: loki/templates/gateway/ingress-gateway.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
spec:
 tls:
 - hosts:
 - "gateway.loki.example.com"
 secretName: loki-gateway-tls
 rules:
 - host: "gateway.loki.example.com"
 http:
 paths:
 - path: /
 pathType: Prefix
 backend:
 service:
 name: loki-test-chart-name-gateway
 port:
 number: 80
loki/templates/gateway/service-gateway.yaml
---
# Source: loki/templates/gateway/service-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 80
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
loki/templates/gateway/deployment-gateway-nginx.yaml
---
# Source: loki/templates/gateway/deployment-gateway-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
spec:
 replicas: 1
 strategy:
 type: RollingUpdate
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 template:
 metadata:
 annotations:
 checksum/config: 9f31d0e363d3d13dcc6de473a599f0619f524418be6a7c1f71cbcac20631e25c
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 spec:
 serviceAccountName: loki
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 101
 runAsGroup: 101
 runAsNonRoot: true
 runAsUser: 101
 terminationGracePeriodSeconds: 30
 containers:
 - name: nginx
 image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
 imagePullPolicy: IfNotPresent
 ports:
 - name: http-metrics
 containerPort: 8080
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 - name: config
 mountPath: /etc/nginx
 - name: tmp
 mountPath: /tmp
 - name: docker-entrypoint-d-override
 mountPath: /docker-entrypoint.d
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: gateway
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki-test-chart-name-gateway
 - name: tmp
 emptyDir: {}
 - name: docker-entrypoint-d-override
 emptyDir: {}
loki/templates/write/service-write-headless.yaml
---
# Source: loki/templates/write/service-write-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/write/statefulset-write.yaml
---
# Source: loki/templates/write/statefulset-write.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-write-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=write
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: write
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/write/service-write.yaml
---
# Source: loki/templates/write/service-write.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/serviceaccount.yaml
---
# Source: loki/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
loki/templates/chunks-cache/statefulset-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/statefulset-chunks-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-chunks-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 9830Mi
 requests:
 cpu: 500m
 memory: 9830Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 8192
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/chunks-cache/service-chunks-cache-headless.yaml
---
# Source: loki/templates/chunks-cache/service-chunks-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-chunks-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
 maxUnavailable: 1
loki/templates/runtime-configmap.yaml
---
# Source: loki/templates/runtime-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-runtime
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 runtime-config.yaml: |
 {}
loki/templates/backend/service-backend.yaml
---
# Source: loki/templates/backend/service-backend.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/service-backend-headless.yaml
---
# Source: loki/templates/backend/service-backend-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/statefulset-backend.yaml
---
# Source: loki/templates/backend/statefulset-backend.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-backend-headless
 revisionHistoryLimit: 10
 
 persistentVolumeClaimRetentionPolicy:
 whenDeleted: Delete
 whenScaled: Delete
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki-sc-rules
 image: "kiwigrid/k8s-sidecar:1.27.5"
 imagePullPolicy: IfNotPresent
 env:
 - name: METHOD
 value: WATCH
 - name: LABEL
 value: "loki_rule"
 - name: FOLDER
 value: "/rules"
 - name: RESOURCE
 value: "both"
 - name: WATCH_SERVER_TIMEOUT
 value: "60"
 - name: WATCH_CLIENT_TIMEOUT
 value: "60"
 - name: LOG_LEVEL
 value: "INFO"
 volumeMounts:
 - name: sc-rules-volume
 mountPath: "/rules"
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=backend
 - -legacy-read-mode=false
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 - name: sc-rules-volume
 mountPath: "/rules"
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: backend
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: sc-rules-volume
 emptyDir: {}
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/backend/clusterrole.yaml
---
# Source: loki/templates/backend/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 name: loki-test-chart-name-clusterrole
rules:
- apiGroups: [""] # "" indicates the core API group
 resources: ["configmaps", "secrets"]
 verbs: ["get", "watch", "list"]
loki/templates/backend/clusterrolebinding.yaml
---
# Source: loki/templates/backend/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: loki-test-chart-name-clusterrolebinding
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
subjects:
 - kind: ServiceAccount
 name: loki
 namespace: default
roleRef:
 kind: ClusterRole
 name: loki-test-chart-name-clusterrole
 apiGroup: rbac.authorization.k8s.io
loki/templates/backend/query-scheduler-discovery.yaml
---
# Source: loki/templates/backend/query-scheduler-discovery.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-scheduler-discovery
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend

Modified Files

No modified files

Removed Files

No removed files

Scenario: legacy-monitoring-values (Added: 37, Modified: 0, Removed: 0)

Summary:

  • Added: 37

  • Modified: 0

  • Removed: 0

Added Files

loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: grafana-agent-test-sa
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: grafana-agent-test-cr
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
rules:
- apiGroups:
 - ""
 resources:
 - nodes
 - nodes/proxy
 - nodes/metrics
 - services
 - endpoints
 - pods
 verbs:
 - get
 - list
 - watch
- apiGroups:
 - networking.k8s.io
 resources:
 - ingresses
 verbs:
 - get
 - list
 - watch
- nonResourceURLs:
 - /metrics
 - /metrics/cadvisor
 verbs:
 - get
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: grafana-agent-test-crb
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: grafana-agent-test-cr
subjects:
- kind: ServiceAccount
 name: grafana-agent-test-sa
 namespace: default
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: v1
kind: Pod
metadata:
 name: grafana-agent-test-probe
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-weight": "1"
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
spec:
 containers:
 - name: busybox
 image: busybox
 command: ['wget']
 args: ['grafana-agent-test-operated:8080/-/healthy']
 # Wait for GrafanaAgent CR
 initContainers:
 - name: sleep
 image: busybox
 command: ['sleep', '60']
 restartPolicy: Never
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: monitoring.grafana.com/v1alpha1
kind: GrafanaAgent
metadata:
 name: grafana-agent-test
 labels:
 app: grafana-agent-test
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
spec:
 image: "docker.io/grafana/agent:v0.39.1"
 logLevel: info
 serviceAccountName: grafana-agent-test-sa
 metrics:
 instanceSelector:
 matchLabels:
 agent: grafana-agent-test
---
# Source: loki/charts/grafana-agent-operator/templates/tests/test-grafanaagent.yaml
apiVersion: monitoring.grafana.com/v1alpha1
kind: MetricsInstance
metadata:
 name: primary-test
 annotations:
 "helm.sh/hook": test
 "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
 labels:
 agent: grafana-agent-test
spec: {}
loki/charts/grafana-agent-operator/templates/operator-serviceaccount.yaml
---
# Source: loki/charts/grafana-agent-operator/templates/operator-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-test-chart-name-grafana-agent-operator
 namespace: default
 labels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: operator
 helm.sh/chart: grafana-agent-operator-0.3.15
 app.kubernetes.io/version: "0.39.1"
loki/charts/grafana-agent-operator/templates/operator-deployment.yaml
---
# Source: loki/charts/grafana-agent-operator/templates/operator-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-grafana-agent-operator
 labels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: operator
 helm.sh/chart: grafana-agent-operator-0.3.15
 app.kubernetes.io/version: "0.39.1"
spec:
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 template:
 metadata:
 labels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 spec:
 serviceAccountName: loki-test-chart-name-grafana-agent-operator
 containers:
 - name: grafana-agent-operator
 image: "docker.io/grafana/agent-operator:v0.39.1"
 imagePullPolicy: IfNotPresent
 args:
 - --kubelet-service=default/kubelet
loki/charts/grafana-agent-operator/templates/operator-clusterrole.yaml
---
# Source: loki/charts/grafana-agent-operator/templates/operator-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: loki-test-chart-name-grafana-agent-operator
 labels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: operator
 helm.sh/chart: grafana-agent-operator-0.3.15
 app.kubernetes.io/version: "0.39.1"
rules:
- apiGroups: [monitoring.grafana.com]
 resources:
 - grafanaagents
 - metricsinstances
 - logsinstances
 - podlogs
 - integrations
 verbs: [get, list, watch]
- apiGroups: [monitoring.grafana.com]
 resources:
 - grafanaagents/finalizers
 - metricsinstances/finalizers
 - logsinstances/finalizers
 - podlogs/finalizers
 - integrations/finalizers
 verbs: [get, list, watch, update]
- apiGroups: [monitoring.coreos.com]
 resources:
 - podmonitors
 - probes
 - servicemonitors
 verbs: [get, list, watch]
- apiGroups: [monitoring.coreos.com]
 resources:
 - podmonitors/finalizers
 - probes/finalizers
 - servicemonitors/finalizers
 verbs: [get, list, watch, update]
- apiGroups: [""]
 resources:
 - namespaces
 - nodes
 verbs: [get, list, watch]
- apiGroups: [""]
 resources:
 - secrets
 - services
 - configmaps
 - endpoints
 verbs: [get, list, watch, create, update, patch, delete]
- apiGroups: ["apps"]
 resources:
 - statefulsets
 - daemonsets
 - deployments
 verbs: [get, list, watch, create, update, patch, delete]
loki/charts/grafana-agent-operator/templates/operator-clusterrolebinding.yaml
---
# Source: loki/charts/grafana-agent-operator/templates/operator-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: loki-test-chart-name-grafana-agent-operator
 labels:
 app.kubernetes.io/name: grafana-agent-operator
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: operator
 helm.sh/chart: grafana-agent-operator-0.3.15
 app.kubernetes.io/version: "0.39.1"
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: loki-test-chart-name-grafana-agent-operator
subjects:
- kind: ServiceAccount
 name: loki-test-chart-name-grafana-agent-operator
 namespace: default
loki/templates/monitoring/pod-logs.yaml
---
# Source: loki/templates/monitoring/pod-logs.yaml
apiVersion: monitoring.grafana.com/v1alpha1
kind: PodLogs
metadata:
 name: loki-test-chart-name
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 pipelineStages:
 - cri: { }
 relabelings:
 - action: replace
 sourceLabels:
 - __meta_kubernetes_pod_node_name
 targetLabel: __host__
 - action: labelmap
 regex: __meta_kubernetes_pod_label_(.+)
 - action: replace
 replacement: "$1"
 separator: "-"
 sourceLabels:
 - __meta_kubernetes_pod_label_app_kubernetes_io_name
 - __meta_kubernetes_pod_label_app_kubernetes_io_component
 targetLabel: __service__
 - action: replace
 replacement: "$1"
 separator: "/"
 sourceLabels:
 - __meta_kubernetes_namespace
 - __service__
 targetLabel: job
 - action: replace
 sourceLabels:
 - __meta_kubernetes_pod_container_name
 targetLabel: container
 - action: replace
 replacement: "loki-test-chart-name"
 targetLabel: cluster
 namespaceSelector:
 matchNames:
 - default
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
loki/templates/monitoring/grafana-agent.yaml
---
# Source: loki/templates/monitoring/grafana-agent.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-test-chart-name-grafana-agent
 namespace: default
---
# Source: loki/templates/monitoring/grafana-agent.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: loki-test-chart-name-grafana-agent
rules:
- apiGroups:
 - ""
 resources:
 - nodes
 - nodes/proxy
 - nodes/metrics
 - services
 - endpoints
 - pods
 - events
 verbs:
 - get
 - list
 - watch
- apiGroups:
 - networking.k8s.io
 resources:
 - ingresses
 verbs:
 - get
 - list
 - watch
- nonResourceURLs:
 - /metrics
 - /metrics/cadvisor
 verbs:
 - get
---
# Source: loki/templates/monitoring/grafana-agent.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: loki-test-chart-name-grafana-agent
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: loki-test-chart-name-grafana-agent
subjects:
- kind: ServiceAccount
 name: loki-test-chart-name-grafana-agent
 namespace: default
---
# Source: loki/templates/monitoring/grafana-agent.yaml
apiVersion: monitoring.grafana.com/v1alpha1
kind: GrafanaAgent
metadata:
 name: loki-test-chart-name
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 serviceAccountName: loki-test-chart-name-grafana-agent
 enableConfigReadAPI: false
 
 logs:
 instanceSelector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
loki/templates/monitoring/logs-instance.yaml
---
# Source: loki/templates/monitoring/logs-instance.yaml
apiVersion: monitoring.grafana.com/v1alpha1
kind: LogsInstance
metadata:
 name: loki-test-chart-name
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 clients:
 - url: http://loki-test-chart-name-gateway.default.svc.cluster.local/loki/api/v1/push
 externalLabels:
 cluster: loki-test-chart-name
 tenantId: "self-monitoring"

 podLogsNamespaceSelector: {}

 podLogsSelector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
loki/templates/tests/test-canary.yaml
---
# Source: loki/templates/tests/test-canary.yaml
apiVersion: v1
kind: Pod
metadata:
 name: "loki-helm-test"
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: helm-test
 annotations:
 "helm.sh/hook": test
spec:
 containers:
 - name: loki-helm-test
 image: docker.io/grafana/loki-helm-test:ewelch-distributed-helm-chart-17db5ee
 env:
 - name: CANARY_SERVICE_ADDRESS
 value: "http://loki-canary:3500/metrics"
 - name: CANARY_PROMETHEUS_ADDRESS
 value: "http://prometheus-kube-prometheus-prometheus.prometheus.svc.cluster.local.:9090"
 - name: CANARY_TEST_TIMEOUT
 value: "1m"
 args:
 - -test.v
 restartPolicy: Never
loki/templates/read/service-read-headless.yaml
---
# Source: loki/templates/read/service-read-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/read/deployment-read.yaml
---
# Source: loki/templates/read/deployment-read.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-read
 namespace: default
 labels:
 app.kubernetes.io/part-of: memberlist
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
spec:
 replicas: 1
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/part-of: memberlist
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=read
 - -legacy-read-mode=false
 - -common.compactor-grpc-address=loki-backend.default.svc.cluster.local:9095
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: read
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: data
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
loki/templates/read/service-read.yaml
---
# Source: loki/templates/read/service-read.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-read
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/config.yaml
---
# Source: loki/templates/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 config.yaml: |
 
 auth_enabled: true
 chunk_store_config:
 chunk_cache_config:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 0s
 memcached:
 batch_size: 4
 parallelism: 5
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-chunks-cache.default.svc
 consistent_hash: true
 max_idle_conns: 72
 timeout: 2000ms
 common:
 compactor_address: 'http://loki-backend:3100'
 path_prefix: /var/loki
 replication_factor: 1
 storage:
 s3:
 bucketnames: chunks
 insecure: false
 s3forcepathstyle: false
 frontend:
 scheduler_address: ""
 tail_proxy_url: ""
 frontend_worker:
 scheduler_address: ""
 index_gateway:
 mode: simple
 limits_config:
 max_cache_freshness_per_query: 10m
 query_timeout: 300s
 reject_old_samples: true
 reject_old_samples_max_age: 168h
 split_queries_by_interval: 15m
 volume_enabled: true
 memberlist:
 join_members:
 - loki-memberlist
 pattern_ingester:
 enabled: false
 query_range:
 align_queries_with_step: true
 cache_results: true
 results_cache:
 cache:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 12h
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-results-cache.default.svc
 consistent_hash: true
 timeout: 500ms
 update_interval: 1m
 ruler:
 storage:
 s3:
 bucketnames: ruler
 insecure: false
 s3forcepathstyle: false
 type: s3
 runtime_config:
 file: /etc/loki/runtime-config/runtime-config.yaml
 schema_config:
 configs:
 - from: "2024-04-01"
 index:
 period: 24h
 prefix: index_
 object_store: 'filesystem'
 schema: v13
 store: tsdb
 server:
 grpc_listen_port: 9095
 http_listen_port: 3100
 http_server_read_timeout: 600s
 http_server_write_timeout: 600s
 storage_config:
 boltdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 hedging:
 at: 250ms
 max_per_second: 20
 up_to: 3
 tsdb_shipper:
 index_gateway_client:
 server_address: dns+loki-backend-headless.default.svc.cluster.local:9095
 tracing:
 enabled: false
loki/templates/service-memberlist.yaml
---
# Source: loki/templates/service-memberlist.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-memberlist
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: tcp
 port: 7946
 targetPort: http-memberlist
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/part-of: memberlist
loki/templates/loki-canary/daemonset.yaml
---
# Source: loki/templates/loki-canary/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 updateStrategy:
 rollingUpdate:
 maxUnavailable: 1
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 spec:
 serviceAccountName: loki-canary
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 containers:
 - name: loki-canary
 image: docker.io/grafana/loki-canary:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -addr=loki-test-chart-name-gateway.default.svc.cluster.local.:80
 - -labelname=pod
 - -labelvalue=$(POD_NAME)
 - -user=self-monitoring
 - -tenant-id=self-monitoring
 - -pass=
 - -push=true
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 ports:
 - name: http-metrics
 containerPort: 3500
 protocol: TCP
 env:
 - name: POD_NAME
 valueFrom:
 fieldRef:
 fieldPath: metadata.name
 
 readinessProbe:
 httpGet:
 path: /metrics
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 volumes:
loki/templates/loki-canary/service.yaml
---
# Source: loki/templates/loki-canary/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3500
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
loki/templates/loki-canary/serviceaccount.yaml
---
# Source: loki/templates/loki-canary/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
automountServiceAccountToken: true
loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
---
# Source: loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-results-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
 maxUnavailable: 1
loki/templates/results-cache/statefulset-results-cache.yaml
---
# Source: loki/templates/results-cache/statefulset-results-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-results-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 1229Mi
 requests:
 cpu: 500m
 memory: 1229Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 1024
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/results-cache/service-results-cache-headless.yaml
---
# Source: loki/templates/results-cache/service-results-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
loki/templates/gateway/configmap-gateway.yaml
---
# Source: loki/templates/gateway/configmap-gateway.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
data:
 nginx.conf: | 
 worker_processes 5; ## Default: 1
 error_log /dev/stderr;
 pid /tmp/nginx.pid;
 worker_rlimit_nofile 8192;
 
 events {
 worker_connections 4096; ## Default: 1024
 }
 
 http {
 client_body_temp_path /tmp/client_temp;
 proxy_temp_path /tmp/proxy_temp_path;
 fastcgi_temp_path /tmp/fastcgi_temp;
 uwsgi_temp_path /tmp/uwsgi_temp;
 scgi_temp_path /tmp/scgi_temp;
 
 client_max_body_size 4M;
 
 proxy_read_timeout 600; ## 10 minutes
 proxy_send_timeout 600;
 proxy_connect_timeout 600;
 
 proxy_http_version 1.1;
 
 default_type application/octet-stream;
 log_format main '$remote_addr - $remote_user [$time_local] $status '
 '"$request" $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 access_log /dev/stderr main;
 
 sendfile on;
 tcp_nopush on;
 resolver kube-dns.kube-system.svc.cluster.local.;
 
 
 server {
 listen 8080;
 listen [::]:8080;
 
 location = / {
 return 200 'OK';
 auth_basic off;
 }
 
 ########################################################
 # Configure backend targets# Distributor
 location = /api/prom/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/push {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /distributor/ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /otlp/v1/logs {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ingester
 location = /flush {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /ingester/ {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 location = /ingester {
 internal; # to suppress 301
 }
 
 # Ring
 location = /ring {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # MemberListKV
 location = /memberlist {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 # Ruler
 location = /ruler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /api/prom/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location ^~ /loki/api/v1/rules/ {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/alerts {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /prometheus/api/v1/rules {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Compactor
 location = /compactor/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/delete {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1/cache/generation_numbers {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # IndexGateway
 location = /indexgateway/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # QueryScheduler
 location = /scheduler/ring {
 proxy_pass http://loki-backend.default.svc.cluster.local:3100$request_uri;
 }
 
 # Config
 location = /config {
 proxy_pass http://loki-write.default.svc.cluster.local:3100$request_uri;
 }
 
 
 # QueryFrontend, Querier
 location = /api/prom/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location = /loki/api/v1/tail {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
 location ^~ /api/prom/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /api/prom {
 internal; # to suppress 301
 }
 location ^~ /loki/api/v1/ {
 proxy_pass http://loki-read.default.svc.cluster.local:3100$request_uri;
 }
 location = /loki/api/v1 {
 internal; # to suppress 301
 }
 }
 }
loki/templates/gateway/service-gateway.yaml
---
# Source: loki/templates/gateway/service-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 80
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
loki/templates/gateway/deployment-gateway-nginx.yaml
---
# Source: loki/templates/gateway/deployment-gateway-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
spec:
 replicas: 1
 strategy:
 type: RollingUpdate
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 template:
 metadata:
 annotations:
 checksum/config: 9f31d0e363d3d13dcc6de473a599f0619f524418be6a7c1f71cbcac20631e25c
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 spec:
 serviceAccountName: loki
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 101
 runAsGroup: 101
 runAsNonRoot: true
 runAsUser: 101
 terminationGracePeriodSeconds: 30
 containers:
 - name: nginx
 image: docker.io/nginxinc/nginx-unprivileged:1.27-alpine
 imagePullPolicy: IfNotPresent
 ports:
 - name: http-metrics
 containerPort: 8080
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 - name: config
 mountPath: /etc/nginx
 - name: tmp
 mountPath: /tmp
 - name: docker-entrypoint-d-override
 mountPath: /docker-entrypoint.d
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: gateway
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki-test-chart-name-gateway
 - name: tmp
 emptyDir: {}
 - name: docker-entrypoint-d-override
 emptyDir: {}
loki/templates/write/service-write-headless.yaml
---
# Source: loki/templates/write/service-write-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/write/statefulset-write.yaml
---
# Source: loki/templates/write/statefulset-write.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-write-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=write
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: write
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/write/service-write.yaml
---
# Source: loki/templates/write/service-write.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/serviceaccount.yaml
---
# Source: loki/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: loki
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
loki/templates/chunks-cache/statefulset-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/statefulset-chunks-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-chunks-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:

 spec:
 serviceAccountName: loki
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 9830Mi
 requests:
 cpu: 500m
 memory: 9830Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 8192
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/chunks-cache/service-chunks-cache-headless.yaml
---
# Source: loki/templates/chunks-cache/service-chunks-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-memcached-chunks-cache
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
 maxUnavailable: 1
loki/templates/runtime-configmap.yaml
---
# Source: loki/templates/runtime-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: loki-runtime
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 runtime-config.yaml: |
 {}
loki/templates/backend/service-backend.yaml
---
# Source: loki/templates/backend/service-backend.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/service-backend-headless.yaml
---
# Source: loki/templates/backend/service-backend-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-backend-headless
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/statefulset-backend.yaml
---
# Source: loki/templates/backend/statefulset-backend.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 1
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: loki-backend-headless
 revisionHistoryLimit: 10
 
 persistentVolumeClaimRetentionPolicy:
 whenDeleted: Delete
 whenScaled: Delete
 selector:
 matchLabels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 template:
 metadata:
 annotations:
 checksum/config: 500ba3df68a94b828b3eb91169c199117adfeef5370bb54ec4d7d3ca3536b480
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: loki
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki-sc-rules
 image: "kiwigrid/k8s-sidecar:1.27.5"
 imagePullPolicy: IfNotPresent
 env:
 - name: METHOD
 value: WATCH
 - name: LABEL
 value: "loki_rule"
 - name: FOLDER
 value: "/rules"
 - name: RESOURCE
 value: "both"
 - name: WATCH_SERVER_TIMEOUT
 value: "60"
 - name: WATCH_CLIENT_TIMEOUT
 value: "60"
 - name: LOG_LEVEL
 value: "INFO"
 volumeMounts:
 - name: sc-rules-volume
 mountPath: "/rules"
 - name: loki
 image: docker.io/grafana/loki:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=backend
 - -legacy-read-mode=false
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 - name: sc-rules-volume
 mountPath: "/rules"
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: backend
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: config
 configMap:
 name: loki
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: loki-runtime
 - name: sc-rules-volume
 emptyDir: {}
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: "10Gi"
loki/templates/backend/clusterrole.yaml
---
# Source: loki/templates/backend/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 name: loki-test-chart-name-clusterrole
rules:
- apiGroups: [""] # "" indicates the core API group
 resources: ["configmaps", "secrets"]
 verbs: ["get", "watch", "list"]
loki/templates/backend/clusterrolebinding.yaml
---
# Source: loki/templates/backend/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: loki-test-chart-name-clusterrolebinding
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
subjects:
 - kind: ServiceAccount
 name: loki
 namespace: default
roleRef:
 kind: ClusterRole
 name: loki-test-chart-name-clusterrole
 apiGroup: rbac.authorization.k8s.io
loki/templates/backend/query-scheduler-discovery.yaml
---
# Source: loki/templates/backend/query-scheduler-discovery.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-query-scheduler-discovery
 namespace: default
 labels:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: loki
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend

Modified Files

No modified files

Removed Files

No removed files

Scenario: simple-scalable-aws-kube-irsa-values (Added: 42, Modified: 0, Removed: 0)

Summary:

  • Added: 42

  • Modified: 0

  • Removed: 0

Added Files

loki/templates/tests/test-canary.yaml
---
# Source: loki/templates/tests/test-canary.yaml
apiVersion: v1
kind: Pod
metadata:
 name: "enterprise-logs-helm-test"
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: helm-test
 annotations:
 "helm.sh/hook": test
spec:
 containers:
 - name: loki-helm-test
 image: docker.io/grafana/loki-helm-test:ewelch-distributed-helm-chart-17db5ee
 env:
 - name: CANARY_SERVICE_ADDRESS
 value: "http://loki-canary:3500/metrics"
 - name: CANARY_PROMETHEUS_ADDRESS
 value: ""
 - name: CANARY_TEST_TIMEOUT
 value: "1m"
 args:
 - -test.v
 restartPolicy: Never
loki/templates/tokengen/job-tokengen.yaml
---
# Source: loki/templates/tokengen/job-tokengen.yaml
apiVersion: batch/v1
kind: Job
metadata:
 name: enterprise-logs-tokengen
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: tokengen
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
 "helm.sh/hook-weight": "10"
spec:
 backoffLimit: 6
 completions: 1
 parallelism: 1
 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: tokengen
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 spec:
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 initContainers:
 - name: loki
 image: docker.io/grafana/enterprise-logs:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 # The shared emptyDir exists only while the job is running, and is deleted once the job is completed.
 # The tokengen generates a new admin token in case the 'token-file' file doesn't exist.
 # As a result, subsequent executions of this tokengen job will generate new admin tokens.
 # Note that previously generated tokens remain valid, as these remain present in the object storage.
 - -config.file=/etc/loki/config/config.yaml
 - -target=tokengen
 - -tokengen.token-file=/shared/admin-token
 volumeMounts:
 - name: shared
 mountPath: /shared
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: license
 mountPath: /etc/loki/license
 env:
 containers:
 - name: create-secret
 image: docker.io/bitnami/kubectl:latest
 imagePullPolicy: IfNotPresent
 command:
 - /bin/bash
 - -euc
 - |
 # Create or update admin token secrets generated by tokengen job
 kubectl create secret generic "enterprise-logs-admin-token" \
 --from-file=token=/shared/admin-token \
 --dry-run=client -o yaml \
 | kubectl apply -f -
 volumeMounts:
 - name: shared
 mountPath: /shared
 - name: config
 mountPath: /etc/loki/config
 - name: license
 mountPath: /etc/loki/license
 restartPolicy: OnFailure
 serviceAccount: enterprise-logs-tokengen
 serviceAccountName: enterprise-logs-tokengen
 volumes:
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: enterprise-logs-runtime
 - name: license
 secret:
 secretName: enterprise-logs-license
 - name: shared
 emptyDir: {}
loki/templates/tokengen/clusterrole-tokengen.yaml
---
# Source: loki/templates/tokengen/clusterrole-tokengen.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: enterprise-logs-tokengen
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: tokengen
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
rules:
 - apiGroups: [""]
 resources: ["secrets"]
 verbs: ["create", "get", "patch"]
loki/templates/tokengen/serviceaccount-tokengen.yaml
---
# Source: loki/templates/tokengen/serviceaccount-tokengen.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: enterprise-logs-tokengen
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: tokengen
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
loki/templates/tokengen/clusterrolebinding-tokengen.yaml
---
# Source: loki/templates/tokengen/clusterrolebinding-tokengen.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: enterprise-logs-tokengen
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: tokengen
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: enterprise-logs-tokengen
subjects:
 - kind: ServiceAccount
 name: enterprise-logs-tokengen
 namespace: default
loki/templates/admin-api/deployment-admin-api.yaml
---
# Source: loki/templates/admin-api/deployment-admin-api.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-enterprise-logs-admin-api
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: admin-api
 target: admin-api
 app.kubernetes.io/part-of: memberlist
 annotations:
spec:
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: admin-api
 target: admin-api
 strategy:
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: admin-api
 target: admin-api
 app.kubernetes.io/part-of: memberlist
 annotations:
 checksum/config: 40ee874b8d9cd2ff500f549233cda3d88f452f13da79551155f43dbe7f2a0b65
 spec:
 serviceAccountName: enterprise-logs
 securityContext:
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 initContainers:
 # Taken from
 # https://github.com/minio/charts/blob/a5c84bcbad884728bff5c9c23541f936d57a13b3/minio/templates/post-install-create-bucket-job.yaml
 containers:
 - name: admin-api
 image: "docker.io/grafana/enterprise-logs:3.1.1"
 imagePullPolicy: IfNotPresent
 args:
 - -target=admin-api
 - -config.file=/etc/loki/config/config.yaml
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: license
 mountPath: /etc/loki/license
 - name: storage
 mountPath: /data
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 45
 resources:
 {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 env:
 nodeSelector:
 {}
 affinity:
 {}
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 volumes:
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: license
 secret:
 secretName: enterprise-logs-license
 - name: storage
 emptyDir: {}
loki/templates/admin-api/service-admin-api.yaml
---
# Source: loki/templates/admin-api/service-admin-api.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-enterprise-logs-admin-api
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: admin-api
 target: admin-api
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 protocol: TCP
 targetPort: http-metrics
 - name: grpc
 port: 9095
 protocol: TCP
 targetPort: grpc
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: admin-api
 target: admin-api
loki/templates/read/poddisruptionbudget-read.yaml
---
# Source: loki/templates/read/poddisruptionbudget-read.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: enterprise-logs-read
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 maxUnavailable: 1
loki/templates/read/service-read-headless.yaml
---
# Source: loki/templates/read/service-read-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-read-headless
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/read/deployment-read.yaml
---
# Source: loki/templates/read/deployment-read.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: enterprise-logs-read
 namespace: default
 labels:
 app.kubernetes.io/part-of: memberlist
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
spec:
 replicas: 3
 strategy:
 rollingUpdate:
 maxSurge: 0
 maxUnavailable: 1
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 template:
 metadata:
 annotations:
 checksum/config: 40ee874b8d9cd2ff500f549233cda3d88f452f13da79551155f43dbe7f2a0b65
 labels:
 app.kubernetes.io/part-of: memberlist
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
 spec:
 serviceAccountName: enterprise-logs
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 30
 containers:
 - name: loki
 image: docker.io/grafana/enterprise-logs:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=read
 - -legacy-read-mode=false
 - -common.compactor-grpc-address=enterprise-logs-backend.default.svc.cluster.local:9095
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 - name: license
 mountPath: /etc/loki/license
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: read
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: data
 emptyDir: {}
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: enterprise-logs-runtime
 - name: license
 secret:
 secretName: enterprise-logs-license
loki/templates/read/service-read.yaml
---
# Source: loki/templates/read/service-read.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-read
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: read
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: read
loki/templates/provisioner/job-provisioner.yaml
---
# Source: loki/templates/provisioner/job-provisioner.yaml
apiVersion: batch/v1
kind: Job
metadata:
 name: enterprise-logs-provisioner
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: provisioner
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
 "helm.sh/hook-weight": "15"
spec:
 backoffLimit: 6
 completions: 1
 parallelism: 1
 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: provisioner
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 spec:
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 initContainers:
 - name: provisioner
 image: docker.io/grafana/enterprise-logs-provisioner:latest
 imagePullPolicy: IfNotPresent
 command:
 - /bin/sh
 - -exuc
 - |
 /usr/bin/enterprise-logs-provisioner \
 -bootstrap-path=/bootstrap \
 -cluster-name=loki-test-chart-name \
 -gel-url=http://loki-test-chart-name-enterprise-logs-gateway.default.svc.cluster.local.:80 \
 -instance=self-monitoring \
 -access-policy=self-monitoring:self-monitoring:logs:write,logs:read \
 -token=self-monitoring
 volumeMounts:
 - name: bootstrap
 mountPath: /bootstrap
 - name: admin-token
 mountPath: /bootstrap/token
 subPath: token
 containers:
 - name: create-secret
 image: docker.io/bitnami/kubectl:latest
 imagePullPolicy: IfNotPresent
 command:
 - /bin/bash
 - -exuc
 - |
 # In case, the admin resources have already been created, the provisioner job
 # does not write the token files to the bootstrap mount.
 # Therefore, secrets are only created if the respective token files exist.
 # Note: the following bash commands should always return a success status code. 
 # Therefore, in case the token file does not exist, the first clause of the 
 # or-operation is successful.
 ! test -s /bootstrap/token-self-monitoring || \
 kubectl --namespace "default" create secret generic "enterprise-logs-provisioned-self-monitoring" \
 --from-literal=username="self-monitoring" \
 --from-literal=password="$(cat /bootstrap/token-self-monitoring)"
 volumeMounts:
 - name: bootstrap
 mountPath: /bootstrap
 restartPolicy: OnFailure
 serviceAccount: enterprise-logs-provisioner
 serviceAccountName: enterprise-logs-provisioner
 volumes:
 - name: admin-token
 secret:
 secretName: "enterprise-logs-admin-token"
 - name: bootstrap
 emptyDir: {}
loki/templates/provisioner/serviceaccount-provisioner.yaml
---
# Source: loki/templates/provisioner/serviceaccount-provisioner.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: enterprise-logs-provisioner
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: provisioner
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
loki/templates/provisioner/role-provisioner.yaml
---
# Source: loki/templates/provisioner/role-provisioner.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: enterprise-logs-provisioner
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: provisioner
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
rules:
 - apiGroups: [""]
 resources: ["secrets"]
 verbs: ["create"]
loki/templates/provisioner/rolebinding-provisioner.yaml
---
# Source: loki/templates/provisioner/rolebinding-provisioner.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: enterprise-logs-provisioner
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: provisioner
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
 "helm.sh/hook": post-install
roleRef:
 apiGroup: rbac.authorization.k8s.io
 kind: ClusterRole
 name: enterprise-logs-provisioner
subjects:
 - kind: ServiceAccount
 name: enterprise-logs-provisioner
 namespace: default
loki/templates/config.yaml
---
# Source: loki/templates/config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: enterprise-logs
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 config.yaml: |
 
 admin_client:
 storage:
 backend: s3
 s3:
 bucket_name: aws-s3-admin-bucket
 auth:
 type: enterprise
 auth_enabled: true
 chunk_store_config:
 chunk_cache_config:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 0s
 memcached:
 batch_size: 4
 parallelism: 5
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-enterprise-logs-chunks-cache.default.svc
 consistent_hash: true
 max_idle_conns: 72
 timeout: 2000ms
 cluster_name: loki-test-chart-name
 common:
 compactor_address: 'http://enterprise-logs-backend:3100'
 path_prefix: /var/loki
 replication_factor: 3
 storage:
 s3:
 bucketnames: aws-s3-chunks-bucket
 insecure: false
 region: eu-central-1
 s3forcepathstyle: false
 frontend:
 scheduler_address: ""
 tail_proxy_url: ""
 frontend_worker:
 scheduler_address: ""
 index_gateway:
 mode: simple
 license:
 path: /etc/loki/license/license.jwt
 limits_config:
 max_cache_freshness_per_query: 10m
 query_timeout: 300s
 reject_old_samples: true
 reject_old_samples_max_age: 168h
 split_queries_by_interval: 15m
 volume_enabled: true
 memberlist:
 join_members:
 - enterprise-logs-memberlist
 pattern_ingester:
 enabled: false
 query_range:
 align_queries_with_step: true
 cache_results: true
 results_cache:
 cache:
 background:
 writeback_buffer: 500000
 writeback_goroutines: 1
 writeback_size_limit: 500MB
 default_validity: 12h
 memcached_client:
 addresses: dnssrvnoa+_memcached-client._tcp.loki-test-chart-name-enterprise-logs-results-cache.default.svc
 consistent_hash: true
 timeout: 500ms
 update_interval: 1m
 ruler:
 storage:
 s3:
 bucketnames: aws-s3-ruler-bucket
 insecure: false
 region: eu-central-1
 s3forcepathstyle: false
 type: s3
 runtime_config:
 file: /etc/loki/runtime-config/runtime-config.yaml
 schema_config:
 configs:
 - from: "2023-09-19"
 index:
 period: 1d
 prefix: tsdb_index_
 object_store: s3
 schema: v13
 store: tsdb
 server:
 grpc_listen_port: 9095
 http_listen_port: 3100
 http_server_read_timeout: 600s
 http_server_write_timeout: 600s
 storage_config:
 boltdb_shipper:
 index_gateway_client:
 server_address: dns+enterprise-logs-backend-headless.default.svc.cluster.local:9095
 hedging:
 at: 250ms
 max_per_second: 20
 up_to: 3
 tsdb_shipper:
 index_gateway_client:
 server_address: dns+enterprise-logs-backend-headless.default.svc.cluster.local:9095
 tracing:
 enabled: false
loki/templates/service-memberlist.yaml
---
# Source: loki/templates/service-memberlist.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-memberlist
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: tcp
 port: 7946
 targetPort: http-memberlist
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/part-of: memberlist
loki/templates/loki-canary/daemonset.yaml
---
# Source: loki/templates/loki-canary/daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: enterprise-logs-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 updateStrategy:
 rollingUpdate:
 maxUnavailable: 1
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
 spec:
 serviceAccountName: enterprise-logs-canary
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 containers:
 - name: loki-canary
 image: docker.io/grafana/loki-canary:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -addr=loki-test-chart-name-enterprise-logs-gateway.default.svc.cluster.local.:80
 - -labelname=pod
 - -labelvalue=$(POD_NAME)
 - -user=$(USER)
 - -tenant-id=$(USER)
 - -pass=$(PASS)
 - -push=true
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 volumeMounts:
 ports:
 - name: http-metrics
 containerPort: 3500
 protocol: TCP
 env:
 - name: POD_NAME
 valueFrom:
 fieldRef:
 fieldPath: metadata.name
 
 - name: USER
 valueFrom:
 secretKeyRef:
 name: enterprise-logs-provisioned-self-monitoring
 key: username
 - name: PASS
 valueFrom:
 secretKeyRef:
 name: enterprise-logs-provisioned-self-monitoring
 key: password
 readinessProbe:
 httpGet:
 path: /metrics
 port: http-metrics
 initialDelaySeconds: 15
 timeoutSeconds: 1
 volumes:
loki/templates/loki-canary/service.yaml
---
# Source: loki/templates/loki-canary/service.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3500
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: canary
loki/templates/loki-canary/serviceaccount.yaml
---
# Source: loki/templates/loki-canary/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: enterprise-logs-canary
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: canary
automountServiceAccountToken: true
loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
---
# Source: loki/templates/results-cache/poddisruptionbudget-results-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-enterprise-logs-memcached-results-cache
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-results-cache
 maxUnavailable: 1
loki/templates/results-cache/statefulset-results-cache.yaml
---
# Source: loki/templates/results-cache/statefulset-results-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-enterprise-logs-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-enterprise-logs-results-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
 name: "memcached-results-cache"
 annotations:

 spec:
 serviceAccountName: enterprise-logs
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 1229Mi
 requests:
 cpu: 500m
 memory: 1229Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 1024
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/results-cache/service-results-cache-headless.yaml
---
# Source: loki/templates/results-cache/service-results-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-enterprise-logs-results-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-results-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-results-cache"
loki/templates/gateway/deployment-gateway-enterprise.yaml
---
# Source: loki/templates/gateway/deployment-gateway-enterprise.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: loki-test-chart-name-enterprise-logs-gateway
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 strategy:
 type: RollingUpdate
 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
 annotations:
 checksum/config: 40ee874b8d9cd2ff500f549233cda3d88f452f13da79551155f43dbe7f2a0b65
 spec:
 serviceAccountName: enterprise-logs
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 initContainers:
 []
 containers:
 - name: gateway
 image: "docker.io/grafana/enterprise-logs:3.1.1"
 imagePullPolicy: IfNotPresent
 args:
 - -target=gateway
 - -config.file=/etc/loki/config/config.yaml
 - -gateway.proxy.default.url=http://loki-test-chart-name-enterprise-logs-admin-api.default.svc:3100
 - -gateway.proxy.admin-api.url=http://loki-test-chart-name-enterprise-logs-admin-api.default.svc:3100
 - -gateway.proxy.compactor.url=http://enterprise-logs-backend-headless.default.svc:3100
 - -gateway.proxy.distributor.url=dns:///enterprise-logs-write-headless.default.svc:9095
 - -gateway.proxy.ingester.url=http://enterprise-logs-write.default.svc:3100
 - -gateway.proxy.query-frontend.url=http://enterprise-logs-read.default.svc:3100
 - -gateway.proxy.ruler.url=http://enterprise-logs-backend-headless.default.svc:3100
 - -gateway.proxy.query-scheduler.url=http://enterprise-logs-backend-headless.default.svc:3100
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: license
 mountPath: /etc/loki/license
 - name: storage
 mountPath: /data
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 45
 resources:
 {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 env:
 nodeSelector:
 {}
 affinity:
 {}
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 volumes:
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: license
 secret:
 secretName: enterprise-logs-license
 - name: storage
 emptyDir: {}
loki/templates/gateway/service-gateway.yaml
---
# Source: loki/templates/gateway/service-gateway.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-enterprise-logs-gateway
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: gateway
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 80
 targetPort: http-metrics
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: gateway
loki/templates/write/service-write-headless.yaml
---
# Source: loki/templates/write/service-write-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-write-headless
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 appProtocol: tcp
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/write/poddisruptionbudget-write.yaml
---
# Source: loki/templates/write/poddisruptionbudget-write.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: enterprise-logs-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 maxUnavailable: 1
loki/templates/write/statefulset-write.yaml
---
# Source: loki/templates/write/statefulset-write.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: enterprise-logs-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 3
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: enterprise-logs-write-headless
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 template:
 metadata:
 annotations:
 checksum/config: 40ee874b8d9cd2ff500f549233cda3d88f452f13da79551155f43dbe7f2a0b65
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: enterprise-logs
 automountServiceAccountToken: true
 enableServiceLinks: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki
 image: docker.io/grafana/enterprise-logs:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=write
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: data
 mountPath: /var/loki
 - name: license
 mountPath: /etc/loki/license
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: write
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: enterprise-logs-runtime
 - name: license
 secret:
 secretName: enterprise-logs-license
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 storageClassName: gp2
 resources:
 requests:
 storage: "10Gi"
loki/templates/write/service-write.yaml
---
# Source: loki/templates/write/service-write.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-write
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: write
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: write
loki/templates/serviceaccount.yaml
---
# Source: loki/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: enterprise-logs
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 annotations:
 eks.amazonaws.com/role-arn: arn:aws:iam::2222222:role/test-role
automountServiceAccountToken: true
loki/templates/chunks-cache/statefulset-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/statefulset-chunks-cache.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: loki-test-chart-name-enterprise-logs-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 podManagementPolicy: Parallel
 replicas: 1
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 updateStrategy:
 type: RollingUpdate
 serviceName: loki-test-chart-name-enterprise-logs-chunks-cache

 template:
 metadata:
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
 name: "memcached-chunks-cache"
 annotations:

 spec:
 serviceAccountName: enterprise-logs
 securityContext:
 {}
 initContainers:
 []
 nodeSelector:
 {}
 affinity:
 {}
 topologySpreadConstraints:
 []
 tolerations:
 []
 terminationGracePeriodSeconds: 60
 containers:
 - name: memcached
 image: memcached:1.6.23-alpine
 imagePullPolicy: IfNotPresent
 resources:
 limits:
 memory: 9830Mi
 requests:
 cpu: 500m
 memory: 9830Mi
 ports:
 - containerPort: 11211
 name: client
 args:
 - -m 8192
 - --extended=modern,track_sizes
 - -I 5m
 - -c 16384
 - -v
 - -u 11211
 env:
 envFrom:
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 - name: exporter
 image: prom/memcached-exporter:v0.14.2
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 9150
 name: http-metrics
 args:
 - "--memcached.address=localhost:11211"
 - "--web.listen-address=0.0.0.0:9150"
 resources:
 limits: {}
 requests: {}
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
loki/templates/chunks-cache/service-chunks-cache-headless.yaml
---
# Source: loki/templates/chunks-cache/service-chunks-cache-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-enterprise-logs-chunks-cache
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: "memcached-chunks-cache"
 annotations:
 {}
 namespace: "default"
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: memcached-client
 port: 11211
 targetPort: 11211
 - name: http-metrics
 port: 9150
 targetPort: 9150
 
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: "memcached-chunks-cache"
loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
---
# Source: loki/templates/chunks-cache/poddisruptionbudget-chunks-cache.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: loki-test-chart-name-enterprise-logs-memcached-chunks-cache
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: memcached-chunks-cache
 maxUnavailable: 1
loki/templates/secret-license.yaml
---
# Source: loki/templates/secret-license.yaml
apiVersion: v1
kind: Secret
metadata:
 name: enterprise-logs-license
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 license.jwt: Y29udGVudCBvZiBsaWNlbmNl
loki/templates/runtime-configmap.yaml
---
# Source: loki/templates/runtime-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: enterprise-logs-runtime
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
data:
 runtime-config.yaml: |
 {}
loki/templates/backend/service-backend.yaml
---
# Source: loki/templates/backend/service-backend.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 annotations:
spec:
 type: ClusterIP
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/poddisruptionbudget-backend.yaml
---
# Source: loki/templates/backend/poddisruptionbudget-backend.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
 name: enterprise-logs-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
spec:
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 maxUnavailable: 1
loki/templates/backend/service-backend-headless.yaml
---
# Source: loki/templates/backend/service-backend-headless.yaml
apiVersion: v1
kind: Service
metadata:
 name: enterprise-logs-backend-headless
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 variant: headless
 prometheus.io/service-monitor: "false"
 annotations:
spec:
 type: ClusterIP
 clusterIP: None
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
loki/templates/backend/statefulset-backend.yaml
---
# Source: loki/templates/backend/statefulset-backend.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: enterprise-logs-backend
 namespace: default
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
spec:
 replicas: 3
 podManagementPolicy: Parallel
 updateStrategy:
 rollingUpdate:
 partition: 0
 serviceName: enterprise-logs-backend-headless
 revisionHistoryLimit: 10
 
 persistentVolumeClaimRetentionPolicy:
 whenDeleted: Delete
 whenScaled: Delete
 selector:
 matchLabels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 template:
 metadata:
 annotations:
 checksum/config: 40ee874b8d9cd2ff500f549233cda3d88f452f13da79551155f43dbe7f2a0b65
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 app.kubernetes.io/part-of: memberlist
 spec:
 serviceAccountName: enterprise-logs
 automountServiceAccountToken: true
 
 securityContext:
 fsGroup: 10001
 runAsGroup: 10001
 runAsNonRoot: true
 runAsUser: 10001
 terminationGracePeriodSeconds: 300
 containers:
 - name: loki-sc-rules
 image: "kiwigrid/k8s-sidecar:1.27.5"
 imagePullPolicy: IfNotPresent
 env:
 - name: METHOD
 value: WATCH
 - name: LABEL
 value: "loki_rule"
 - name: FOLDER
 value: "/rules"
 - name: RESOURCE
 value: "both"
 - name: WATCH_SERVER_TIMEOUT
 value: "60"
 - name: WATCH_CLIENT_TIMEOUT
 value: "60"
 - name: LOG_LEVEL
 value: "INFO"
 volumeMounts:
 - name: sc-rules-volume
 mountPath: "/rules"
 - name: loki
 image: docker.io/grafana/enterprise-logs:3.1.1
 imagePullPolicy: IfNotPresent
 args:
 - -config.file=/etc/loki/config/config.yaml
 - -target=backend
 - -legacy-read-mode=false
 ports:
 - name: http-metrics
 containerPort: 3100
 protocol: TCP
 - name: grpc
 containerPort: 9095
 protocol: TCP
 - name: http-memberlist
 containerPort: 7946
 protocol: TCP
 securityContext:
 allowPrivilegeEscalation: false
 capabilities:
 drop:
 - ALL
 readOnlyRootFilesystem: true
 readinessProbe:
 httpGet:
 path: /ready
 port: http-metrics
 initialDelaySeconds: 30
 timeoutSeconds: 1
 volumeMounts:
 - name: config
 mountPath: /etc/loki/config
 - name: runtime-config
 mountPath: /etc/loki/runtime-config
 - name: tmp
 mountPath: /tmp
 - name: data
 mountPath: /var/loki
 - name: license
 mountPath: /etc/loki/license
 - name: sc-rules-volume
 mountPath: "/rules"
 resources:
 {}
 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app.kubernetes.io/component: backend
 topologyKey: kubernetes.io/hostname
 volumes:
 - name: tmp
 emptyDir: {}
 - name: config
 configMap:
 name: enterprise-logs
 items:
 - key: "config.yaml"
 path: "config.yaml"
 - name: runtime-config
 configMap:
 name: enterprise-logs-runtime
 - name: license
 secret:
 secretName: enterprise-logs-license
 - name: sc-rules-volume
 emptyDir: {}
 volumeClaimTemplates:
 - apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: data
 spec:
 accessModes:
 - ReadWriteOnce
 storageClassName: gp2
 resources:
 requests:
 storage: "10Gi"
loki/templates/backend/clusterrole.yaml
---
# Source: loki/templates/backend/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
 name: loki-test-chart-name-enterprise-logs-clusterrole
rules:
- apiGroups: [""] # "" indicates the core API group
 resources: ["configmaps", "secrets"]
 verbs: ["get", "watch", "list"]
loki/templates/backend/clusterrolebinding.yaml
---
# Source: loki/templates/backend/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: loki-test-chart-name-enterprise-logs-clusterrolebinding
 labels:
 helm.sh/chart: loki-6.12.0
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/version: "3.1.1"
 app.kubernetes.io/managed-by: Helm
subjects:
 - kind: ServiceAccount
 name: enterprise-logs
 namespace: default
roleRef:
 kind: ClusterRole
 name: loki-test-chart-name-enterprise-logs-clusterrole
 apiGroup: rbac.authorization.k8s.io
loki/templates/backend/query-scheduler-discovery.yaml
---
# Source: loki/templates/backend/query-scheduler-discovery.yaml
apiVersion: v1
kind: Service
metadata:
 name: loki-test-chart-name-enterprise-logs-query-scheduler-discovery
 namespace: default
 labels:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend
 prometheus.io/service-monitor: "false"
spec:
 type: ClusterIP
 clusterIP: None
 publishNotReadyAddresses: true
 ports:
 - name: http-metrics
 port: 3100
 targetPort: http-metrics
 protocol: TCP
 - name: grpc
 port: 9095
 targetPort: grpc
 protocol: TCP
 selector:
 app.kubernetes.io/name: enterprise-logs
 app.kubernetes.io/instance: loki-test-chart-name
 app.kubernetes.io/component: backend

Modified Files

No modified files

Removed Files

No removed files

@vlad-diachenko vlad-diachenko merged commit 1e939aa into main Sep 17, 2024
64 checks passed
@vlad-diachenko vlad-diachenko deleted the vlad.diachenko/helm-diff-printer branch September 17, 2024 12:07
mraboosk pushed a commit to mraboosk/loki that referenced this pull request Oct 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants