From 5cc88a687791bd5948e733d0d39e365303732ec9 Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 15:20:54 +0200 Subject: [PATCH 1/6] salt: use metalk8s storageclass We now use a single metalk8s storageclass instead of one per addon (e.g. metalk8s-loki). Refs: #2742 --- buildchain/buildchain/salt_tree.py | 1 - .../addons/logging/loki/deployed/init.sls | 2 +- .../logging/loki/deployed/storageclass.sls | 18 ------------------ 3 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 salt/metalk8s/addons/logging/loki/deployed/storageclass.sls diff --git a/buildchain/buildchain/salt_tree.py b/buildchain/buildchain/salt_tree.py index 79acb4d56c..7ba62a369f 100644 --- a/buildchain/buildchain/salt_tree.py +++ b/buildchain/buildchain/salt_tree.py @@ -338,7 +338,6 @@ def _get_parts(self) -> Iterator[str]: Path('salt/metalk8s/addons/logging/loki/deployed/', 'service-configuration.sls'), Path('salt/metalk8s/addons/logging/loki/deployed/services.sls'), - Path('salt/metalk8s/addons/logging/loki/deployed/storageclass.sls'), Path('salt/metalk8s/addons/prometheus-adapter/deployed/chart.sls'), Path('salt/metalk8s/addons/prometheus-adapter/deployed/init.sls'), diff --git a/salt/metalk8s/addons/logging/loki/deployed/init.sls b/salt/metalk8s/addons/logging/loki/deployed/init.sls index 024eb05ccb..5d94f66788 100644 --- a/salt/metalk8s/addons/logging/loki/deployed/init.sls +++ b/salt/metalk8s/addons/logging/loki/deployed/init.sls @@ -1,8 +1,8 @@ include: + - ....storageclass.deployed - .service-configuration - .loki-configuration-secret - .chart - .services - - .storageclass - .datasource - .dashboard diff --git a/salt/metalk8s/addons/logging/loki/deployed/storageclass.sls b/salt/metalk8s/addons/logging/loki/deployed/storageclass.sls deleted file mode 100644 index ba5aa5e96f..0000000000 --- a/salt/metalk8s/addons/logging/loki/deployed/storageclass.sls +++ /dev/null @@ -1,18 +0,0 @@ -#! metalk8s_kubernetes - -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - name: metalk8s-loki - labels: - app.kubernetes.io/managed-by: salt - app.kubernetes.io/part-of: metalk8s -provisioner: kubernetes.io/no-provisioner -reclaimPolicy: Retain -volumeBindingMode: WaitForFirstConsumer -mountOptions: - - rw - - discard -parameters: - fsType: ext4 - mkfsOptions: '["-m", "0"]' From 61e4b4254ca75d945946c598d9a5bfdcf9617ef2 Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 15:22:18 +0200 Subject: [PATCH 2/6] charts: add support for selector in Loki pvc This is needed as Loki chart only allow to target a PV with its storageclass name and we now use a single storageclass for all addons. This change needs to be ported upstream so we can still upgrade Loki chart. Refs: #2742 --- charts/loki/templates/statefulset.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/charts/loki/templates/statefulset.yaml b/charts/loki/templates/statefulset.yaml index 0b22337125..5511a380e9 100644 --- a/charts/loki/templates/statefulset.yaml +++ b/charts/loki/templates/statefulset.yaml @@ -124,5 +124,9 @@ spec: requests: storage: {{ .Values.persistence.size | quote }} storageClassName: {{ .Values.persistence.storageClassName }} + {{- if .Values.persistence.selector }} + selector: + {{- toYaml .Values.persistence.selector | nindent 8 }} + {{- end }} {{- end }} From b3d545f064949810ffabfa3d0d91ac149c3b49da Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 15:24:46 +0200 Subject: [PATCH 3/6] salt,charts: use PV label selector for Loki pods Refs: #2742 --- charts/loki.yaml | 5 ++++- salt/metalk8s/addons/logging/loki/deployed/chart.sls | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/charts/loki.yaml b/charts/loki.yaml index 29a3926d0b..749fcf73e9 100644 --- a/charts/loki.yaml +++ b/charts/loki.yaml @@ -123,7 +123,10 @@ persistence: - ReadWriteOnce size: 10Gi annotations: {} - storageClassName: metalk8s-loki + storageClassName: metalk8s + selector: + matchLabels: + app.kubernetes.io/name: loki # subPath: "" # existingClaim: diff --git a/salt/metalk8s/addons/logging/loki/deployed/chart.sls b/salt/metalk8s/addons/logging/loki/deployed/chart.sls index 76ad471c52..b164280309 100644 --- a/salt/metalk8s/addons/logging/loki/deployed/chart.sls +++ b/salt/metalk8s/addons/logging/loki/deployed/chart.sls @@ -252,10 +252,13 @@ spec: spec: accessModes: - ReadWriteOnce + selector: + matchLabels: + app.kubernetes.io/name: loki resources: requests: storage: 10Gi - storageClassName: metalk8s-loki + storageClassName: metalk8s --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor From 1b751d3cec8372f80e1505dba2d759a308d4777a Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 15:25:24 +0200 Subject: [PATCH 4/6] example: update Loki PV example to use the new storageclass This also adds a label on the PV so that we can now select the PV based on this label instead of the storageclass name. Refs: #2742 --- examples/loki-sparse.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/loki-sparse.yaml b/examples/loki-sparse.yaml index 3482184bb5..8c939299d8 100644 --- a/examples/loki-sparse.yaml +++ b/examples/loki-sparse.yaml @@ -8,6 +8,10 @@ metadata: name: NODE_NAME-loki spec: nodeName: NODE_NAME - storageClassName: metalk8s-loki + storageClassName: metalk8s sparseLoopDevice: size: 10Gi + template: + metadata: + labels: + app.kubernetes.io/name: loki From 1f3783de2921d7df52ba06bb9d3aa52864850ebe Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 17:35:17 +0200 Subject: [PATCH 5/6] docs: update post-install doc with new metalk8s storageclass for Loki PV Refs: #2742 --- docs/installation/post-install.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/post-install.rst b/docs/installation/post-install.rst index 744621b319..6da99b69e1 100644 --- a/docs/installation/post-install.rst +++ b/docs/installation/post-install.rst @@ -58,7 +58,7 @@ path for the partitions to use: name: -loki spec: nodeName: - storageClassName: metalk8s-loki + storageClassName: metalk8s rawBlockDevice: # Choose a device with at least 10GiB capacity devicePath: template: From c51c331492826e5aa9ea719ba66477f35f573fb1 Mon Sep 17 00:00:00 2001 From: Alexandre Allard Date: Tue, 25 Aug 2020 18:49:37 +0200 Subject: [PATCH 6/6] tests: raise retries for logging tests As for now, sometimes the test checking the logging pipeline fails because we're not waiting enough. We now wait 2 minutes, it should avoid flakies. --- tests/post/steps/test_logging.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/post/steps/test_logging.py b/tests/post/steps/test_logging.py index 5bd84db3aa..4343915a79 100644 --- a/tests/post/steps/test_logging.py +++ b/tests/post/steps/test_logging.py @@ -192,7 +192,7 @@ def _check_log_line_exists(): utils.retry( _check_log_line_exists, - times=20, + times=40, wait=3, name="check that a log exists for 'logger' pod" )