From 29f28ee52f6f1c3f78a5163d5fa8eafd41e3c7fd Mon Sep 17 00:00:00 2001 From: Varac <varac@varac.net> Date: Tue, 1 Jun 2021 13:43:45 +0200 Subject: [PATCH] Install loki + promtail seperatly --- .gitlab-ci.yml | 44 ++++++--- .../issue_templates/update_all_components.md | 3 +- ansible/group_vars/all/settings.yml.example | 3 +- .../apps/tasks/{loki-stack.yml => loki.yml} | 8 +- ansible/roles/apps/tasks/main.yml | 7 +- ansible/roles/apps/tasks/promtail.yml | 16 ++++ .../apps/templates/settings/loki-stack.yaml | 90 ------------------- .../roles/apps/templates/settings/loki.yaml | 9 ++ .../apps/templates/settings/promtail.yaml | 38 ++++++++ docs/upgrading.md | 3 +- flux/oas/{loki-stack_hr.yaml => loki_hr.yaml} | 12 +-- flux/oas/promtail_hr.yaml | 19 ++++ test/pytest/test_app_deployments.py | 8 +- 13 files changed, 143 insertions(+), 117 deletions(-) rename ansible/roles/apps/tasks/{loki-stack.yml => loki.yml} (59%) create mode 100644 ansible/roles/apps/tasks/promtail.yml delete mode 100644 ansible/roles/apps/templates/settings/loki-stack.yaml create mode 100644 ansible/roles/apps/templates/settings/loki.yaml create mode 100644 ansible/roles/apps/templates/settings/promtail.yaml rename flux/oas/{loki-stack_hr.yaml => loki_hr.yaml} (71%) create mode 100644 flux/oas/promtail_hr.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index caa161ebf..16ceeb9bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -305,12 +305,19 @@ enable-eventrouter: - .enable_app_template - .eventrouter_rules -enable-loki-stack: +enable-loki: variables: - APP: "loki-stack" + APP: "loki" extends: - .enable_app_template - - .loki_stack_rules + - .loki_rules + +enable-promtail: + variables: + APP: "promtail" + extends: + - .enable_app_template + - .promtail_rules enable-nextcloud: variables: @@ -429,12 +436,19 @@ local-path-provisioner-helm-release: - .helm-release - .local_path_provisioner_rules -loki-stack-helm-release: +loki-helm-release: + variables: + APP: "loki" + extends: + - .helm-release + - .loki_rules + +promtail-helm-release: variables: - APP: "loki-stack" + APP: "promtail" extends: - .helm-release - - .loki_stack_rules + - .promtail_rules nextcloud-helm-release: variables: @@ -519,15 +533,25 @@ local-path-provisioner-ready: - .apps-ready - .local_path_provisioner_rules -loki-stack-ready: +loki-ready: + variables: + APP: "loki" + needs: + - job: loki-helm-release + - job: setup-openappstack + extends: + - .apps-ready + - .loki_rules + +promtail-ready: variables: - APP: "loki-stack" + APP: "promtail" needs: - - job: loki-stack-helm-release + - job: promtail-helm-release - job: setup-openappstack extends: - .apps-ready - - .loki_stack_rules + - .promtail_rules nextcloud-ready: variables: diff --git a/.gitlab/issue_templates/update_all_components.md b/.gitlab/issue_templates/update_all_components.md index 0d0e10520..430f37656 100644 --- a/.gitlab/issue_templates/update_all_components.md +++ b/.gitlab/issue_templates/update_all_components.md @@ -21,7 +21,8 @@ Installed by flux: * [ ] ./oas/prometheus.yaml * [ ] ./oas/letsencrypt-staging.yaml * [ ] ./oas/ingress.yaml -* [ ] ./oas/loki-stack.yaml +* [ ] ./oas/loki.yaml +* [ ] ./oas/promtail.yaml * [ ] ./velero/velero.yaml * [ ] ./oas-custom/flux-custom.yaml * [ ] ./cert-manager/cert-manager.yaml diff --git a/ansible/group_vars/all/settings.yml.example b/ansible/group_vars/all/settings.yml.example index ac71430f4..379dae021 100644 --- a/ansible/group_vars/all/settings.yml.example +++ b/ansible/group_vars/all/settings.yml.example @@ -95,7 +95,8 @@ enabled_applications: # # Monitoring components (auto-enabled by GitLab CI) # - 'prometheus-stack' - # - 'loki-stack' + # - 'loki' + # - 'promtail' # - 'eventrouter' # # The backup system Velero is disabled by default, see settings under `backup` above. diff --git a/ansible/roles/apps/tasks/loki-stack.yml b/ansible/roles/apps/tasks/loki.yml similarity index 59% rename from ansible/roles/apps/tasks/loki-stack.yml rename to ansible/roles/apps/tasks/loki.yml index 9933761b6..eaac7c223 100644 --- a/ansible/roles/apps/tasks/loki-stack.yml +++ b/ansible/roles/apps/tasks/loki.yml @@ -1,11 +1,11 @@ -- name: Create Kubernetes secret with loki-stack settings +- name: Create Kubernetes secret with loki settings tags: - config - flux - - loki-stack + - loki vars: flux_secret: - name: "loki-stack" + name: "loki" namespace: "oas" include_tasks: file: flux_secret.yml @@ -13,4 +13,4 @@ tags: - config - flux - - loki-stack + - loki diff --git a/ansible/roles/apps/tasks/main.yml b/ansible/roles/apps/tasks/main.yml index b1a6f9e32..3d0b0eff9 100644 --- a/ansible/roles/apps/tasks/main.yml +++ b/ansible/roles/apps/tasks/main.yml @@ -12,8 +12,11 @@ - name: Tasks pertaining to prometheus and grafana import_tasks: prometheus-stack.yml -- name: Tasks pertaining to loki-stack - import_tasks: loki-stack.yml +- name: Tasks pertaining to loki + import_tasks: loki.yml + +- name: Tasks pertaining to promtail + import_tasks: promtail.yml - name: Tasks pertaining to eventrouter import_tasks: eventrouter.yml diff --git a/ansible/roles/apps/tasks/promtail.yml b/ansible/roles/apps/tasks/promtail.yml new file mode 100644 index 000000000..7e2bf955e --- /dev/null +++ b/ansible/roles/apps/tasks/promtail.yml @@ -0,0 +1,16 @@ +- name: Create Kubernetes secret with promtail settings + tags: + - config + - flux + - promtail + vars: + flux_secret: + name: "promtail" + namespace: "oas" + include_tasks: + file: flux_secret.yml + apply: + tags: + - config + - flux + - promtail diff --git a/ansible/roles/apps/templates/settings/loki-stack.yaml b/ansible/roles/apps/templates/settings/loki-stack.yaml deleted file mode 100644 index 2d5bba2a6..000000000 --- a/ansible/roles/apps/templates/settings/loki-stack.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -# https://github.com/grafana/helm-charts/blob/main/charts/loki-stack/values.yaml -loki: - # https://github.com/grafana/helm-charts/blob/main/charts/loki/values.yaml - enabled: true - resources: - limits: - cpu: 400m - memory: 180Mi - requests: - cpu: 200m - memory: 90Mi - persistence: - enabled: true - accessModes: - - ReadWriteOnce - size: 10Gi - annotations: {} - # existingClaim: - config: - # https://github.com/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml - # https://grafana.com/docs/loki/latest/operations/storage/retention - schema_config: - configs: - - from: 2021-05-31 - store: boltdb-shipper - object_store: filesystem - schema: v11 - index: - prefix: index_ - period: 24h - storage_config: - boltdb_shipper: - active_index_directory: /data/loki/boltdb-shipper-active - cache_location: /data/loki/boltdb-shipper-cache - cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space - shared_store: filesystem - filesystem: - directory: /data/loki/chunks - compactor: - working_directory: /data/loki/boltdb-shipper-compactor - shared_store: filesystem - limits_config: - reject_old_samples: true - reject_old_samples_max_age: 168h # 7 days - chunk_store_config: - max_look_back_period: 672h # 28 days - table_manager: - retention_deletes_enabled: true - retention_period: 672h # 28 days - -promtail: - # https://github.com/grafana/helm-charts/blob/main/charts/promtail/values.yaml - enabled: true - initContainer: - enabled: true - fsInotifyMaxUserInstances: 512 - resources: - limits: - cpu: 400m - memory: 256Mi - requests: - cpu: 300m - memory: 128Mi - config: - # https://github.com/grafana/helm-charts/blob/main/charts/promtail/values.yaml#L217 - snippets: - # https://grafana.com/docs/loki/latest/clients/promtail/pipelines/ - pipelineStages: - - cri: {} - - match: - selector: '{app="eventrouter"}' - stages: - - json: - expressions: - event_verb: verb - event_kind: event.involvedObject.kind - event_reason: event.reason - event_namespace: event.involvedObject.namespace - event_name: event.metadata.name - event_source_host: event.source.host - event_source_component: event.source.component - - labels: - event_verb: - event_kind: - event_reason: - event_namespace: - event_name: - event_source_host: - event_source_component: diff --git a/ansible/roles/apps/templates/settings/loki.yaml b/ansible/roles/apps/templates/settings/loki.yaml new file mode 100644 index 000000000..0983a57b9 --- /dev/null +++ b/ansible/roles/apps/templates/settings/loki.yaml @@ -0,0 +1,9 @@ +--- +enabled: true +resources: + limits: + cpu: 400m + memory: 180Mi + requests: + cpu: 200m + memory: 90Mi diff --git a/ansible/roles/apps/templates/settings/promtail.yaml b/ansible/roles/apps/templates/settings/promtail.yaml new file mode 100644 index 000000000..e66b7cdcc --- /dev/null +++ b/ansible/roles/apps/templates/settings/promtail.yaml @@ -0,0 +1,38 @@ +--- +enabled: true +initContainer: + enabled: true + fsInotifyMaxUserInstances: 512 +resources: + limits: + cpu: 400m + memory: 256Mi + requests: + cpu: 300m + memory: 128Mi +config: + # https://github.com/grafana/helm-charts/blob/main/charts/promtail/values.yaml#L217 + snippets: + # https://grafana.com/docs/loki/latest/clients/promtail/pipelines/ + pipelineStages: + - cri: {} + - match: + selector: '{app="eventrouter"}' + stages: + - json: + expressions: + event_verb: verb + event_kind: event.involvedObject.kind + event_reason: event.reason + event_namespace: event.involvedObject.namespace + event_name: event.metadata.name + event_source_host: event.source.host + event_source_component: event.source.component + - labels: + event_verb: + event_kind: + event_reason: + event_namespace: + event_name: + event_source_host: + event_source_component: diff --git a/docs/upgrading.md b/docs/upgrading.md index db7f96163..2cb191fb8 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -81,7 +81,8 @@ enabled_applications: # - 'velero' # Applications. - 'grafana' - - 'loki-stack' + - 'loki' + - 'promtail' - 'nextcloud' - 'prometheus' - 'rocketchat' diff --git a/flux/oas/loki-stack_hr.yaml b/flux/oas/loki_hr.yaml similarity index 71% rename from flux/oas/loki-stack_hr.yaml rename to flux/oas/loki_hr.yaml index 481921694..b973dcf8b 100644 --- a/flux/oas/loki-stack_hr.yaml +++ b/flux/oas/loki_hr.yaml @@ -2,18 +2,18 @@ apiVersion: helm.fluxcd.io/v1 kind: HelmRelease metadata: - name: loki-stack + name: loki namespace: oas annotations: flux.weave.works/automated: "false" spec: - releaseName: loki-stack + releaseName: loki chart: - # https://github.com/grafana/helm-charts/tree/main/charts/loki-stack + # https://github.com/grafana/helm-charts/tree/main/charts/loki repository: https://grafana.github.io/helm-charts - name: loki-stack - version: 2.4.1 + name: loki + version: 2.5.0 valuesFrom: - secretKeyRef: - name: loki-stack-settings + name: loki-settings key: values.yaml diff --git a/flux/oas/promtail_hr.yaml b/flux/oas/promtail_hr.yaml new file mode 100644 index 000000000..2fb7a68f2 --- /dev/null +++ b/flux/oas/promtail_hr.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: helm.fluxcd.io/v1 +kind: HelmRelease +metadata: + name: promtail + namespace: oas + annotations: + flux.weave.works/automated: "false" +spec: + releaseName: promtail + chart: + # https://github.com/grafana/helm-charts/tree/main/charts/promtail + repository: https://grafana.github.io/helm-charts + name: promtail + version: 3.5.1 + valuesFrom: + - secretKeyRef: + name: promtail-settings + key: values.yaml diff --git a/test/pytest/test_app_deployments.py b/test/pytest/test_app_deployments.py index 362eb221c..0f94a38e4 100644 --- a/test/pytest/test_app_deployments.py +++ b/test/pytest/test_app_deployments.py @@ -17,7 +17,8 @@ EXPECTED_RELEASES = { 'oas': [ 'ingress', 'prometheus-stack', - 'loki-stack', + 'loki', + 'promtail', 'eventrouter', 'single-sign-on' ], @@ -35,9 +36,12 @@ EXPECTED_APP_LABELS = { 'local-path-provisioner': { 'namespace': 'kube-system', 'label_selector': 'app.kubernetes.io/instance=local-path-provisioner'}, - 'loki-stack': { + 'loki': { 'namespace': 'oas', 'label_selector': 'app=loki'}, + 'promtail': { + 'namespace': 'oas', + 'label_selector': 'app=promtail'}, 'nextcloud': { 'namespace': 'oas-apps', 'label_selector': 'app.kubernetes.io/instance=nc'}, -- GitLab