diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 97f7b347eff0cf3d9a57006b85786feb680c0a7c..c63289f2d2b26b784b2c9fcfa7801802572536ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -165,8 +165,6 @@ setup-openappstack: artifacts: paths: - ./clusters - - ansible/inventory.yml - - ansible/group_vars/all/settings.yml expire_in: 1 month when: always only: @@ -220,6 +218,11 @@ grafana-helm-release: APP: "grafana" <<: *helm-release +eventrouter-helm-release: + variables: + APP: "eventrouter" + <<: *helm-release + nextcloud-helm-release: variables: APP: "nextcloud" diff --git a/ansible/group_vars/all/settings.yml.example b/ansible/group_vars/all/settings.yml.example index ca7dd118f3d6ef2279b89b740c61bfdf64b8f711..38bfac0a736c0cb71561150df1d4a89e4e935856 100644 --- a/ansible/group_vars/all/settings.yml.example +++ b/ansible/group_vars/all/settings.yml.example @@ -102,6 +102,7 @@ enabled_applications: # Applications. - 'grafana' - 'loki-stack' + - 'eventrouter' - 'nextcloud' - 'prometheus' - 'rocketchat' diff --git a/ansible/roles/apps/tasks/eventrouter.yml b/ansible/roles/apps/tasks/eventrouter.yml new file mode 100644 index 0000000000000000000000000000000000000000..89b351e50aa291fb2ebb041a04abce482ca26664 --- /dev/null +++ b/ansible/roles/apps/tasks/eventrouter.yml @@ -0,0 +1,16 @@ +- name: Create Kubernetes secret with eventrouter settings + tags: + - config + - flux + - eventrouter + vars: + flux_secret: + name: "eventrouter" + namespace: "oas" + include_tasks: + file: flux_secret.yml + apply: + tags: + - config + - flux + - eventrouter diff --git a/ansible/roles/apps/tasks/main.yml b/ansible/roles/apps/tasks/main.yml index 8c985d38b5e7a6ddf6f8e998ba35500fa3f807d6..18c388289e4d5381f57fe50abf25a47ba37cc3a4 100644 --- a/ansible/roles/apps/tasks/main.yml +++ b/ansible/roles/apps/tasks/main.yml @@ -18,6 +18,9 @@ - name: Tasks pertaining to loki-stack import_tasks: loki-stack.yml +- name: Tasks pertaining to eventrouter + import_tasks: eventrouter.yml + - name: Tasks pertaining to grafana import_tasks: grafana.yml diff --git a/ansible/roles/apps/templates/settings/eventrouter.yaml b/ansible/roles/apps/templates/settings/eventrouter.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d6c40c2e0c115a2c4da4aea665228e1b8cd9e0e8 --- /dev/null +++ b/ansible/roles/apps/templates/settings/eventrouter.yaml @@ -0,0 +1,3 @@ +--- +# https://github.com/helm/charts/tree/master/stable/eventrouter +sink: stdout diff --git a/docs/maintenance.md b/docs/maintenance.md index a640bfdcc407426e10e58b8b9530d81452f203b2..4b12a1136582aa4da211cf21acbe1a197e97215a 100644 --- a/docs/maintenance.md +++ b/docs/maintenance.md @@ -60,6 +60,9 @@ Debug oauth2 single sign-on with rocketchat: {container_name=~"(hydra|rocketchat)"} +Query kubernetes events processed by the `eventrouter` app containing `warning`: + + logcli query '{app="eventrouter"} |~ "warning"' #### Cert-manager diff --git a/flux/oas/eventrouter.yaml b/flux/oas/eventrouter.yaml new file mode 100644 index 0000000000000000000000000000000000000000..59eb956223b52c6ede2ab6378ffc6c3534275ee7 --- /dev/null +++ b/flux/oas/eventrouter.yaml @@ -0,0 +1,18 @@ +--- +apiVersion: helm.fluxcd.io/v1 +kind: HelmRelease +metadata: + name: eventrouter + namespace: oas + annotations: + flux.weave.works/automated: "false" +spec: + releaseName: eventrouter + chart: + repository: https://charts.helm.sh/stable + name: eventrouter + version: 0.3.2 + valuesFrom: + - secretKeyRef: + name: eventrouter-settings + key: values.yaml diff --git a/test/behave/features/grafana.feature b/test/behave/features/grafana.feature index 418e12e77bfa498183b4c6c3cdab71f864aa91ca..e62a28fc33bd383a22e4747ed15538a6797bdeb1 100644 --- a/test/behave/features/grafana.feature +++ b/test/behave/features/grafana.feature @@ -2,6 +2,7 @@ Feature: Test grafana admin login As an OAS admin I want to be able to login to grafana as the user admin + And I want to be able to look at the logs Scenario: Open grafana When I open the grafana URL @@ -17,3 +18,8 @@ Scenario: Login to grafana And I click on the button "//button[@aria-label='Login button']" Then I wait on element "sidemenu.sidemenu" for 60000ms to be visible And I expect that the path is "/" + +Scenario: As an admin I want to look at the eventrouter logs + When I open the grafana explore eventrouter URL + Then I wait on element ".logs-panel" for 25000ms to be visible + And I expect that element ".datapoints-warning" does not exist diff --git a/test/behave/features/steps/steps.py b/test/behave/features/steps/steps.py index 6455a9d416f79da49b03a725d9df3af1b42e67b5..f65e96ff80ac3874df92cd7bca59cbafafa1e1b6 100644 --- a/test/behave/features/steps/steps.py +++ b/test/behave/features/steps/steps.py @@ -12,3 +12,12 @@ def step_impl(context): def step_impl(context): """Open wordpress URL.""" context.behave_driver.get(context.wordpress['url']) + +@when(u'I open the grafana explore eventrouter URL') +@given(u'I open the grafana explore eventrouter URL') +def step_impl(context): + """Open wordpress URL.""" + eventrouter_url = str(context.grafana["url"]) + '/explore?orgId=1&left=["now-1h","now","Loki",{"expr":"{app=\\\"eventrouter\\\"}"}]' + print(eventrouter_url) + context.behave_driver.get(eventrouter_url) + diff --git a/test/pytest/test_app_deployments.py b/test/pytest/test_app_deployments.py index edb3a3821e92d608a1991bad37bc7733d43e8814..da93fd2653749d8934e45ebd45ee0c0332c224cd 100644 --- a/test/pytest/test_app_deployments.py +++ b/test/pytest/test_app_deployments.py @@ -19,6 +19,7 @@ EXPECTED_RELEASES = { 'prometheus', 'grafana', 'loki-stack', + 'eventrouter', 'single-sign-on' ], 'oas-apps': ['nextcloud', 'rocketchat', 'wordpress'], @@ -37,6 +38,9 @@ EXPECTED_APP_LABELS = { 'grafana': { 'namespace': 'oas', 'label_selector': 'app=grafana'}, + 'eventrouter': { + 'namespace': 'oas', + 'label_selector': 'app=eventrouter'}, 'prometheus': { 'namespace': 'oas', 'label_selector': 'app=prometheus'},