{{- if .Values.loki.enabled }} apiVersion: apps/v1 kind: StatefulSet metadata: name: loki namespace: {{ .Release.Namespace }} labels: app: loki spec: serviceName: loki replicas: {{ .Values.loki.replicas }} selector: matchLabels: app: loki template: metadata: labels: app: loki spec: serviceAccountName: loki securityContext: fsGroup: 65534 runAsNonRoot: false runAsUser: 0 nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }} tolerations: {{ toYaml .Values.tolerations | nindent 8 }} affinity: {{ toYaml .Values.affinity | nindent 8 }} initContainers: - name: init-loki-storage image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/alpine:3.18 securityContext: runAsUser: 0 command: - sh - -c - | set -e mkdir -p /loki/chunks mkdir -p /loki/boltdb-shipper-active mkdir -p /loki/boltdb-shipper-cache mkdir -p /loki/compactor mkdir -p /wal chmod -R 777 /loki chmod -R 777 /wal echo "Loki storage and WAL directories created successfully" volumeMounts: - name: loki-storage mountPath: /loki - name: wal-vol mountPath: /wal containers: - name: loki image: "{{ .Values.loki.image.repository }}:{{ .Values.loki.image.tag }}" imagePullPolicy: IfNotPresent args: - -config.file=/etc/loki/loki-config.yaml ports: - name: http containerPort: 3100 protocol: TCP livenessProbe: httpGet: path: /ready port: http initialDelaySeconds: 45 timeoutSeconds: 1 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: http initialDelaySeconds: 45 timeoutSeconds: 1 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 resources: limits: cpu: {{ .Values.loki.resources.limits.cpu }} memory: {{ .Values.loki.resources.limits.memory }} requests: cpu: {{ .Values.loki.resources.requests.cpu }} memory: {{ .Values.loki.resources.requests.memory }} volumeMounts: - name: loki-config mountPath: /etc/loki readOnly: true - name: loki-storage mountPath: /loki - name: wal-vol mountPath: /wal volumes: - name: loki-config configMap: name: loki-config - name: wal-vol emptyDir: {} volumeClaimTemplates: - metadata: name: loki-storage spec: accessModes: - ReadWriteOnce storageClassName: {{ .Values.loki.persistence.storageClassName }} resources: requests: storage: {{ .Values.loki.persistence.size }} {{- end }}