diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 930ad63dd0baba9eb75f2fdd88e978ffa1963919..c700f7d9c9c19e87e26a3451d3fca79a0d99b253 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -349,3 +349,52 @@ delete-data-from-prod:
     - master
   environment:
     name: "k8sprod-02/jass-prod/${CI_COMMIT_REF_SLUG}"
+
+
+.log-fetcher:
+  stage: deploy
+  needs: []
+  when: manual
+  image: harbor.pasteur.fr/kube-system/helm-kubectl:3.12.0
+  variables:
+    GIT_STRATEGY: none # don't need to checkout sources
+    LAST_ROWS_COUNT: "400" # you can override it when triggering the job
+    CHART_LOCATION: "chart"
+  script:
+    - kubectl -n ${NAMESPACE} get quota
+    - mkdir logs
+    - |
+      for POD in $(kubectl -n ${NAMESPACE} get po -l="app.kubernetes.io/instance=${CI_COMMIT_REF_SLUG}" --output=jsonpath='{.items[*].metadata.name}'); do
+        echo "************************************************************"
+        echo "************************************************************"
+        echo "* ${POD}";
+        echo "************************************************************"
+        kubectl -n ${NAMESPACE} logs $POD --tail ${LAST_ROWS_COUNT} > logs/${POD}.log
+        cat logs/${POD}.log
+      done
+    - echo "Check Job artifacts to download or browse log files. See "Job artifacts">"Browse" on right panel"
+  artifacts:
+    when: always
+    paths:
+    - logs
+    expire_in: 1 month
+
+
+log-fetcher-in-dev:
+  except:
+    - master
+  extends: .log-fetcher
+  variables:
+    NAMESPACE: "jass-dev"
+  environment:
+    name: "k8sdev-01/${NAMESPACE}/${CI_COMMIT_REF_SLUG}"
+
+
+log-fetcher-in-prod:
+  only:
+    - master
+  extends: .log-fetcher
+  variables:
+    NAMESPACE: "jass-prod"
+  environment:
+    name: "k8sprod-02/${NAMESPACE}/${CI_COMMIT_REF_SLUG}"