diff --git a/grafana-alloy/main.yaml b/grafana-alloy/main.yaml index 8666fbc..bbc6225 100644 --- a/grafana-alloy/main.yaml +++ b/grafana-alloy/main.yaml @@ -1,361 +1,467 @@ -apiVersion: v1 -automountServiceAccountToken: false -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana ---- -apiVersion: v1 -kind: ServiceAccount +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: - helm.sh/hook: test - helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana-test - namespace: grafana + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: podlogs.monitoring.grafana.com +spec: + group: monitoring.grafana.com + names: + categories: + - grafana-alloy + - alloy + kind: PodLogs + listKind: PodLogsList + plural: podlogs + singular: podlogs + scope: Namespaced + versions: + - name: v1alpha2 + schema: + openAPIV3Schema: + description: PodLogs defines how to collect logs for a Pod. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PodLogsSpec defines how to collect logs for a Pod. + properties: + namespaceSelector: + description: Selector to select which namespaces the Pod objects are + discovered from. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + relabelings: + description: RelabelConfigs to apply to logs before delivering. + items: + description: 'RelabelConfig allows dynamic rewriting of the label + set, being applied to samples before ingestion. It defines ``-section + of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + default: replace + description: Action to perform based on regex matching. Default + is 'replace'. uppercase and lowercase actions require Prometheus + >= 2.36. + enum: + - replace + - Replace + - keep + - Keep + - drop + - Drop + - hashmod + - HashMod + - labelmap + - LabelMap + - labeldrop + - LabelDrop + - labelkeep + - LabelKeep + - lowercase + - Lowercase + - uppercase + - Uppercase + type: string + modulus: + description: Modulus to take of the hash of the source label + values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted + value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace + is performed if the regular expression matches. Regex capture + groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label + values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. + Their content is concatenated using the configured separator + and matched against the configured regular expression for + the replace, keep, and drop actions. + items: + description: LabelName is a valid Prometheus label name which + may only contain ASCII letters, numbers, as well as underscores. + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in + a replace action. It is mandatory for replace actions. Regex + capture groups are available. + type: string + type: object + type: array + selector: + description: Selector to select Pod objects. Required. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + required: + - selector + type: object + type: object + served: true + storage: true --- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role +apiVersion: v1 +automountServiceAccountToken: true +kind: ServiceAccount metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana -rules: [] + app.kubernetes.io/component: rbac + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy + namespace: grafana-alloy --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana-clusterrole -rules: [] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: grafana -subjects: -- kind: ServiceAccount - name: grafana - namespace: grafana + app.kubernetes.io/component: rbac + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy +rules: +- apiGroups: + - "" + - discovery.k8s.io + - networking.k8s.io + resources: + - endpoints + - endpointslices + - ingresses + - pods + - services + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - pods + - pods/log + - namespaces + verbs: + - get + - list + - watch +- apiGroups: + - monitoring.grafana.com + resources: + - podlogs + verbs: + - get + - list + - watch +- apiGroups: + - monitoring.coreos.com + resources: + - prometheusrules + verbs: + - get + - list + - watch +- apiGroups: + - monitoring.coreos.com + resources: + - podmonitors + - servicemonitors + - probes + - scrapeconfigs + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - get + - list + - watch +- apiGroups: + - apps + - extensions + resources: + - replicasets + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + verbs: + - get + - list + - watch +- nonResourceURLs: + - /metrics + verbs: + - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana-clusterrolebinding + app.kubernetes.io/component: rbac + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: grafana-clusterrole + name: alloy subjects: - kind: ServiceAccount - name: grafana - namespace: grafana + name: alloy + namespace: grafana-alloy --- apiVersion: v1 data: - grafana.ini: | - [analytics] - check_for_updates = true - [grafana_net] - url = https://grafana.net - [log] - mode = console - [paths] - data = /var/lib/grafana/ - logs = /var/log/grafana - plugins = /var/lib/grafana/plugins - provisioning = /etc/grafana/provisioning - [server] - domain = '' - root_url = https://grafana.home + config.alloy: |- + loki.write "local" { + endpoint { + url = "http://loki-gateway.monitoring.svc/loki/api/v1/push" + tenant_id = "dev" + } kind: ConfigMap metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana ---- -apiVersion: v1 -data: - run.sh: |- - @test "Test Health" { - url="http://grafana/api/health" - - code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^ HTTP/{print $2}') - [ "$code" == "200" ] - } -kind: ConfigMap -metadata: - annotations: - helm.sh/hook: test - helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana-test - namespace: grafana ---- -apiVersion: v1 -data: - admin-password: UGxqZk51VEJWVkdPckF5ejJhYkZITTd2R1VEdmZJWjdVa0tCZnRObw== - admin-user: YWRtaW4= - ldap-toml: "" -kind: Secret -metadata: - labels: - app.kubernetes.io/component: admin-secret - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana -type: Opaque + app.kubernetes.io/component: config + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy + namespace: grafana-alloy --- apiVersion: v1 kind: Service metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana + app.kubernetes.io/component: networking + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy + namespace: grafana-alloy spec: + internalTrafficPolicy: Cluster ports: - - name: service - port: 80 + - name: http-metrics + port: 12345 protocol: TCP - targetPort: grafana + targetPort: 12345 selector: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana + app.kubernetes.io/instance: alloy + app.kubernetes.io/name: alloy type: ClusterIP --- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - finalizers: - - kubernetes.io/pvc-protection - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: openebs-3-replicas ---- apiVersion: apps/v1 -kind: Deployment +kind: DaemonSet metadata: labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana - namespace: grafana + app.kubernetes.io/instance: alloy + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: alloy + app.kubernetes.io/part-of: alloy + app.kubernetes.io/version: v1.11.3 + helm.sh/chart: alloy-1.4.0 + name: alloy + namespace: grafana-alloy spec: - replicas: 1 - revisionHistoryLimit: 10 + minReadySeconds: 10 selector: matchLabels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - strategy: - type: RollingUpdate + app.kubernetes.io/instance: alloy + app.kubernetes.io/name: alloy template: metadata: annotations: - checksum/config: 865352f890d817b19919dbaaab368249b89392713a14c874d30b59e35e91516c - checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 - checksum/secret: 72a35d7651c7ae487c86c90133ffd2add1ad6281cd42e1f21c428a169c6f0f9c - kubectl.kubernetes.io/default-container: grafana + kubectl.kubernetes.io/default-container: alloy labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 + app.kubernetes.io/instance: alloy + app.kubernetes.io/name: alloy spec: - automountServiceAccountToken: true containers: - - env: - - name: POD_IP + - args: + - run + - /etc/alloy/config.alloy + - --storage.path=/tmp/alloy + - --server.http.listen-addr=0.0.0.0:12345 + - --server.http.ui-path-prefix=/ + - --stability.level=generally-available + env: + - name: ALLOY_DEPLOY_MODE + value: helm + - name: HOSTNAME valueFrom: fieldRef: - fieldPath: status.podIP - - name: GF_SECURITY_ADMIN_USER - valueFrom: - secretKeyRef: - key: admin-user - name: grafana - - name: GF_SECURITY_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - key: admin-password - name: grafana - - name: GF_PATHS_DATA - value: /var/lib/grafana/ - - name: GF_PATHS_LOGS - value: /var/log/grafana - - name: GF_PATHS_PLUGINS - value: /var/lib/grafana/plugins - - name: GF_PATHS_PROVISIONING - value: /etc/grafana/provisioning - image: docker.io/grafana/grafana:12.2.1 + fieldPath: spec.nodeName + image: docker.io/grafana/alloy:v1.11.3 imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 10 - httpGet: - path: /api/health - port: 3000 - initialDelaySeconds: 60 - timeoutSeconds: 30 - name: grafana + name: alloy ports: - - containerPort: 3000 - name: grafana - protocol: TCP - - containerPort: 9094 - name: gossip-tcp - protocol: TCP - - containerPort: 9094 - name: gossip-udp - protocol: UDP - - containerPort: 6060 - name: profiling - protocol: TCP + - containerPort: 12345 + name: http-metrics readinessProbe: httpGet: - path: /api/health - port: 3000 - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - seccompProfile: - type: RuntimeDefault + path: /-/ready + port: 12345 + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 1 volumeMounts: - - mountPath: /etc/grafana/grafana.ini + - mountPath: /etc/alloy name: config - subPath: grafana.ini - - mountPath: /var/lib/grafana - name: storage - enableServiceLinks: true - initContainers: - - command: - - chown - - -R - - 472:472 - - /var/lib/grafana - image: docker.io/library/busybox:1.31.1 - imagePullPolicy: IfNotPresent - name: init-chown-data - securityContext: - capabilities: - add: - - CHOWN - drop: - - ALL - readOnlyRootFilesystem: false - runAsNonRoot: false - runAsUser: 0 - seccompProfile: - type: RuntimeDefault + - args: + - --watched-dir=/etc/alloy + - --reload-url=http://localhost:12345/-/reload + image: quay.io/prometheus-operator/prometheus-config-reloader:v0.81.0 + name: config-reloader + resources: + requests: + cpu: 10m + memory: 50Mi volumeMounts: - - mountPath: /var/lib/grafana - name: storage - securityContext: - fsGroup: 472 - runAsGroup: 472 - runAsNonRoot: true - runAsUser: 472 - serviceAccountName: grafana - shareProcessNamespace: false + - mountPath: /etc/alloy + name: config + dnsPolicy: ClusterFirst + serviceAccountName: alloy volumes: - configMap: - name: grafana + name: alloy name: config - - name: storage - persistentVolumeClaim: - claimName: grafana ---- -apiVersion: v1 -kind: Pod -metadata: - annotations: - helm.sh/hook: test - helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded - labels: - app.kubernetes.io/instance: grafana - app.kubernetes.io/name: grafana - app.kubernetes.io/version: 12.2.1 - helm.sh/chart: grafana-10.1.4 - name: grafana-test - namespace: grafana -spec: - containers: - - command: - - /opt/bats/bin/bats - - -t - - /tests/run.sh - image: docker.io/bats/bats:v1.4.1 - imagePullPolicy: IfNotPresent - name: grafana-test - volumeMounts: - - mountPath: /tests - name: tests - readOnly: true - restartPolicy: Never - serviceAccountName: grafana-test - volumes: - - configMap: - name: grafana-test - name: tests diff --git a/grafana-alloy/src/kustomization.yaml b/grafana-alloy/src/kustomization.yaml index 229a94d..f0b947a 100644 --- a/grafana-alloy/src/kustomization.yaml +++ b/grafana-alloy/src/kustomization.yaml @@ -8,5 +8,5 @@ helmCharts: version: 1.4.0 releaseName: alloy includeCRDs: true - namespace: alloy + namespace: grafana-alloy valuesFile: values.yaml diff --git a/grafana-loki/main.yaml b/grafana-loki/main.yaml index 52275bf..5af3c41 100644 --- a/grafana-loki/main.yaml +++ b/grafana-loki/main.yaml @@ -8,7 +8,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki - namespace: loki + namespace: grafana-loki --- apiVersion: v1 automountServiceAccountToken: true @@ -21,7 +21,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-canary - namespace: loki + namespace: grafana-loki --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -59,7 +59,7 @@ roleRef: subjects: - kind: ServiceAccount name: loki - namespace: loki + namespace: grafana-loki --- apiVersion: v1 data: @@ -68,11 +68,11 @@ data: auth_enabled: true bloom_build: builder: - planner_address: loki-backend-headless.loki.svc.cluster.local:9095 + planner_address: loki-backend-headless.grafana-loki.svc.cluster.local:9095 enabled: false bloom_gateway: client: - addresses: dnssrvnoa+_grpc._tcp.loki-backend-headless.loki.svc.cluster.local + addresses: dnssrvnoa+_grpc._tcp.loki-backend-headless.grafana-loki.svc.cluster.local enabled: false chunk_store_config: chunk_cache_config: @@ -85,12 +85,12 @@ data: batch_size: 4 parallelism: 5 memcached_client: - addresses: dnssrvnoa+_memcached-client._tcp.loki-chunks-cache.loki.svc.cluster.local + addresses: dnssrvnoa+_memcached-client._tcp.loki-chunks-cache.grafana-loki.svc.cluster.local consistent_hash: true max_idle_conns: 72 timeout: 2000ms common: - compactor_grpc_address: 'loki-backend.loki.svc.cluster.local:9095' + compactor_grpc_address: 'loki-backend.grafana-loki.svc.cluster.local:9095' path_prefix: /var/loki replication_factor: 3 storage: @@ -119,7 +119,7 @@ data: volume_enabled: true memberlist: join_members: - - loki-memberlist.loki.svc.cluster.local + - loki-memberlist.grafana-loki.svc.cluster.local pattern_ingester: enabled: false query_range: @@ -133,7 +133,7 @@ data: writeback_size_limit: 500MB default_validity: 12h memcached_client: - addresses: dnssrvnoa+_memcached-client._tcp.loki-results-cache.loki.svc.cluster.local + addresses: dnssrvnoa+_memcached-client._tcp.loki-results-cache.grafana-loki.svc.cluster.local consistent_hash: true timeout: 500ms update_interval: 1m @@ -172,14 +172,14 @@ data: working_directory: /var/loki/data/bloomshipper boltdb_shipper: index_gateway_client: - server_address: dns+loki-backend-headless.loki.svc.cluster.local:9095 + server_address: dns+loki-backend-headless.grafana-loki.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.loki.svc.cluster.local:9095 + server_address: dns+loki-backend-headless.grafana-loki.svc.cluster.local:9095 use_thanos_objstore: false tracing: enabled: false @@ -191,7 +191,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki - namespace: loki + namespace: grafana-loki --- apiVersion: v1 data: @@ -213,45 +213,45 @@ data: \ listen [::]:8080;\n\n location = / {\n \n return 200 'OK';\n auth_basic off;\n }\n\n ########################################################\n \ # Configure backend targets\n location ^~ /ui {\n \n proxy_pass - \ http://loki-read.loki.svc.cluster.local:3100$request_uri;\n }\n\n # - Distributor\n location = /api/prom/push {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /loki/api/v1/push {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /distributor/ring {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /otlp/v1/logs {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n - \ }\n\n # Ingester\n location = /flush {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location ^~ /ingester/ {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n + \ http://loki-read.grafana-loki.svc.cluster.local:3100$request_uri;\n }\n\n + \ # Distributor\n location = /api/prom/push {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /loki/api/v1/push {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /distributor/ring {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /otlp/v1/logs {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n\n # Ingester\n location = /flush {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location ^~ /ingester/ {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n location = /ingester {\n \n internal; # to suppress - 301\n }\n\n # Ring\n location = /ring {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n + 301\n }\n\n # Ring\n location = /ring {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n\n # MemberListKV\n location = /memberlist {\n \n proxy_pass - \ http://loki-write.loki.svc.cluster.local:3100$request_uri;\n }\n\n # - Ruler\n location = /ruler/ring {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /api/prom/rules {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location ^~ /api/prom/rules/ {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /loki/api/v1/rules {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location ^~ /loki/api/v1/rules/ {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /prometheus/api/v1/alerts {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location = /prometheus/api/v1/rules {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n + \ http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n }\n\n + \ # Ruler\n location = /ruler/ring {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /api/prom/rules {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location ^~ /api/prom/rules/ {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /loki/api/v1/rules {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location ^~ /loki/api/v1/rules/ {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /prometheus/api/v1/alerts {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /prometheus/api/v1/rules {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n\n # Compactor\n location = /compactor/ring {\n \n proxy_pass - \ http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n }\n location - = /loki/api/v1/delete {\n \n proxy_pass http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n + \ http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location = /loki/api/v1/delete {\n \n proxy_pass http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n location = /loki/api/v1/cache/generation_numbers {\n \n proxy_pass - \ http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n }\n\n - \ # IndexGateway\n location = /indexgateway/ring {\n \n proxy_pass - \ http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n }\n\n - \ # QueryScheduler\n location = /scheduler/ring {\n \n proxy_pass - \ http://loki-backend.loki.svc.cluster.local:3100$request_uri;\n }\n\n - \ # Config\n location = /config {\n \n proxy_pass http://loki-write.loki.svc.cluster.local:3100$request_uri;\n + \ http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n\n # IndexGateway\n location = /indexgateway/ring {\n \n proxy_pass + \ http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n\n # QueryScheduler\n location = /scheduler/ring {\n \n proxy_pass + \ http://loki-backend.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n\n # Config\n location = /config {\n \n proxy_pass http://loki-write.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n\n\n # QueryFrontend, Querier\n location = /api/prom/tail {\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n \n - \ proxy_pass http://loki-read.loki.svc.cluster.local:3100$request_uri;\n + \ proxy_pass http://loki-read.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n location = /loki/api/v1/tail {\n proxy_set_header Upgrade $http_upgrade;\n - \ proxy_set_header Connection \"upgrade\";\n \n proxy_pass http://loki-read.loki.svc.cluster.local:3100$request_uri;\n - \ }\n location ^~ /api/prom/ {\n \n proxy_pass http://loki-read.loki.svc.cluster.local:3100$request_uri;\n + \ proxy_set_header Connection \"upgrade\";\n \n proxy_pass http://loki-read.grafana-loki.svc.cluster.local:3100$request_uri;\n + \ }\n location ^~ /api/prom/ {\n \n proxy_pass http://loki-read.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n location = /api/prom {\n \n internal; # to suppress 301\n }\n location ^~ /loki/api/v1/ {\n # pass custom headers set by Grafana as X-Query-Tags which are logged as key/value pairs in metrics.go log messages\n proxy_set_header X-Query-Tags \"${query_tags},user=${http_x_grafana_user},dashboard_id=${http_x_dashboard_uid},dashboard_title=${http_x_dashboard_title},panel_id=${http_x_panel_id},panel_title=${http_x_panel_title},source_rule_uid=${http_x_rule_uid},rule_name=${http_x_rule_name},rule_folder=${http_x_rule_folder},rule_version=${http_x_rule_version},rule_source=${http_x_rule_source},rule_type=${http_x_rule_type}\";\n - \ \n proxy_pass http://loki-read.loki.svc.cluster.local:3100$request_uri;\n + \ \n proxy_pass http://loki-read.grafana-loki.svc.cluster.local:3100$request_uri;\n \ }\n location = /loki/api/v1 {\n \n internal; # to suppress 301\n }\n }\n}\n" kind: ConfigMap @@ -263,7 +263,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-gateway - namespace: loki + namespace: grafana-loki --- apiVersion: v1 data: @@ -277,7 +277,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-runtime - namespace: loki + namespace: grafana-loki --- apiVersion: v1 kind: Service @@ -289,7 +289,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-backend - namespace: loki + namespace: grafana-loki spec: ports: - name: http-metrics @@ -316,7 +316,7 @@ metadata: prometheus.io/service-monitor: "false" variant: headless name: loki-backend-headless - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -345,7 +345,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-canary - namespace: loki + namespace: grafana-loki spec: ports: - name: http-metrics @@ -368,7 +368,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-chunks-cache - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -395,7 +395,7 @@ metadata: helm.sh/chart: loki-6.46.0 prometheus.io/service-monitor: "false" name: loki-gateway - namespace: loki + namespace: grafana-loki spec: ports: - name: http-metrics @@ -417,7 +417,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-memberlist - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -440,7 +440,7 @@ metadata: app.kubernetes.io/name: loki prometheus.io/service-monitor: "false" name: loki-query-scheduler-discovery - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -469,7 +469,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-read - namespace: loki + namespace: grafana-loki spec: ports: - name: http-metrics @@ -496,7 +496,7 @@ metadata: prometheus.io/service-monitor: "false" variant: headless name: loki-read-headless - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -525,7 +525,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-results-cache - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -551,7 +551,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-write - namespace: loki + namespace: grafana-loki spec: ports: - name: http-metrics @@ -578,7 +578,7 @@ metadata: prometheus.io/service-monitor: "false" variant: headless name: loki-write-headless - namespace: loki + namespace: grafana-loki spec: clusterIP: None ports: @@ -607,7 +607,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-gateway - namespace: loki + namespace: grafana-loki spec: replicas: 1 revisionHistoryLimit: 10 @@ -621,7 +621,7 @@ spec: template: metadata: annotations: - checksum/config: 551f2f0b8c3a57d612deebdb6e46ed5e64807c15eebb972a030549402e4e6183 + checksum/config: 0bfd916d9c3159bef2fd8bad76d4e85a76b49ad1889d4aa25d93b16b27050c56 labels: app.kubernetes.io/component: gateway app.kubernetes.io/instance: loki @@ -692,7 +692,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-read - namespace: loki + namespace: grafana-loki spec: replicas: 3 revisionHistoryLimit: 10 @@ -708,7 +708,7 @@ spec: template: metadata: annotations: - checksum/config: a2fb9c19d9a78713b80fde0284ce0fb688151b2279ac622ecdbc55d9015069c7 + checksum/config: 2208614b99a31f48a1436641a701107d60d563c7d716864eee13d617a1fe7964 labels: app.kubernetes.io/component: read app.kubernetes.io/instance: loki @@ -730,7 +730,7 @@ spec: - -config.file=/etc/loki/config/config.yaml - -target=read - -legacy-read-mode=false - - -common.compactor-grpc-address=loki-backend.loki.svc.cluster.local:9095 + - -common.compactor-grpc-address=loki-backend.grafana-loki.svc.cluster.local:9095 - -config.expand-env=true env: - name: AWS_ACCESS_KEY_ID @@ -814,7 +814,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-backend - namespace: loki + namespace: grafana-loki spec: persistentVolumeClaimRetentionPolicy: whenDeleted: Delete @@ -831,7 +831,7 @@ spec: template: metadata: annotations: - checksum/config: a2fb9c19d9a78713b80fde0284ce0fb688151b2279ac622ecdbc55d9015069c7 + checksum/config: 2208614b99a31f48a1436641a701107d60d563c7d716864eee13d617a1fe7964 kubectl.kubernetes.io/default-container: loki labels: app.kubernetes.io/component: backend @@ -983,7 +983,7 @@ metadata: helm.sh/chart: loki-6.46.0 name: memcached-chunks-cache name: loki-chunks-cache - namespace: loki + namespace: grafana-loki spec: podManagementPolicy: Parallel replicas: 1 @@ -1115,7 +1115,7 @@ metadata: helm.sh/chart: loki-6.46.0 name: memcached-results-cache name: loki-results-cache - namespace: loki + namespace: grafana-loki spec: podManagementPolicy: Parallel replicas: 1 @@ -1247,7 +1247,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-write - namespace: loki + namespace: grafana-loki spec: podManagementPolicy: Parallel replicas: 3 @@ -1261,7 +1261,7 @@ spec: template: metadata: annotations: - checksum/config: a2fb9c19d9a78713b80fde0284ce0fb688151b2279ac622ecdbc55d9015069c7 + checksum/config: 2208614b99a31f48a1436641a701107d60d563c7d716864eee13d617a1fe7964 labels: app.kubernetes.io/component: write app.kubernetes.io/instance: loki @@ -1376,7 +1376,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-backend - namespace: loki + namespace: grafana-loki spec: maxUnavailable: 1 selector: @@ -1395,7 +1395,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-read - namespace: loki + namespace: grafana-loki spec: maxUnavailable: 1 selector: @@ -1414,7 +1414,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-write - namespace: loki + namespace: grafana-loki spec: maxUnavailable: 1 selector: @@ -1433,7 +1433,7 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-canary - namespace: loki + namespace: grafana-loki spec: selector: matchLabels: @@ -1449,7 +1449,7 @@ spec: spec: containers: - args: - - -addr=loki-gateway.loki.svc.cluster.local.:80 + - -addr=loki-gateway.grafana-loki.svc.cluster.local.:80 - -labelname=pod - -labelvalue=$(POD_NAME) - -user=self-monitoring @@ -1505,14 +1505,14 @@ metadata: app.kubernetes.io/version: 3.5.7 helm.sh/chart: loki-6.46.0 name: loki-helm-test - namespace: loki + namespace: grafana-loki spec: containers: - args: - -test.v env: - name: CANARY_SERVICE_ADDRESS - value: http://loki-canary.loki.svc.cluster.local:3500/metrics + value: http://loki-canary.grafana-loki.svc.cluster.local:3500/metrics - name: CANARY_PROMETHEUS_ADDRESS value: "" - name: CANARY_TEST_TIMEOUT diff --git a/grafana-loki/src/kustomization.yaml b/grafana-loki/src/kustomization.yaml index 970ee21..1a7e3c3 100644 --- a/grafana-loki/src/kustomization.yaml +++ b/grafana-loki/src/kustomization.yaml @@ -8,5 +8,5 @@ helmCharts: version: 6.46.0 releaseName: loki includeCRDs: true - namespace: loki + namespace: grafana-loki valuesFile: values.yaml