9 changed files with 255 additions and 2 deletions
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
FROM python:3.8-slim |
||||
|
||||
RUN mkdir -p /usr/src/app |
||||
WORKDIR /usr/src/app |
||||
|
||||
COPY requirements.txt /usr/src/app/ |
||||
|
||||
RUN pip3 install --no-cache-dir -r requirements.txt |
||||
|
||||
COPY . /usr/src/app |
||||
|
||||
EXPOSE 8080 |
||||
|
||||
RUN chmod +x /usr/src/app/entrypoint.sh |
||||
|
||||
ENTRYPOINT ["/usr/src/app/entrypoint.sh"] |
@ -1,3 +1,3 @@
@@ -1,3 +1,3 @@
|
||||
# redis_clean_trigger |
||||
# alarmlist_trigger |
||||
|
||||
En kubernetes cronjobb för att tömma redis stream |
||||
Microservice trigger of larmlist updates |
||||
|
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash |
||||
python trigger_redis_clean.py |
||||
echo "Yeah, the job has run, I will die now" |
@ -0,0 +1,46 @@
@@ -0,0 +1,46 @@
|
||||
-- |
||||
apiVersion: v1 |
||||
kind: ConfigMap |
||||
metadata: |
||||
name: redis-clean-trigger |
||||
namespace: k2 |
||||
data: |
||||
REDIS_TRIM: "10000" |
||||
--- |
||||
apiVersion: v1 |
||||
kind: CronJob |
||||
metadata: |
||||
name: redis-clean-trigger |
||||
spec: |
||||
schedule: "0 6 * * *" |
||||
successfulJobsHistoryLimit: 4 |
||||
failedJobsHistoryLimit: 1 |
||||
concurrencyPolicy: Forbid |
||||
jobTemplate: |
||||
spec: |
||||
template: |
||||
spec: |
||||
#imagePullSecrets: |
||||
# - name: k2-repository |
||||
containers: |
||||
- name: alarmlist-trigger |
||||
image: 935062023832.dkr.ecr.eu-west-1.amazonaws.com/redis_clean_trigger:1.0.0 |
||||
envFrom: |
||||
- configMapRef: |
||||
name: k2 |
||||
- configMapRef: |
||||
name: redis_clean_trigger |
||||
env: |
||||
- name: REDIS_PASSWORD |
||||
valueFrom: |
||||
secretKeyRef: |
||||
name: redis |
||||
key: redis-password |
||||
|
||||
resources: |
||||
limits: |
||||
memory: 128M |
||||
requests: |
||||
cpu: 100m |
||||
memory: 128M |
||||
restartPolicy: OnFailure |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
# This will create or update your pipeline |
||||
fly -t se set-pipeline -p alarmlist_trigger -c pipeline.yaml -l $1 |
@ -0,0 +1,152 @@
@@ -0,0 +1,152 @@
|
||||
resource_types: |
||||
- name: slack-notification |
||||
type: docker-image |
||||
source: |
||||
repository: cfcommunity/slack-notification-resource |
||||
tag: latest |
||||
- name: kubernetes |
||||
type: docker-image |
||||
source: |
||||
repository: zlabjp/kubernetes-resource |
||||
tag: "1.10" |
||||
- name: kubernetes_2 |
||||
type: docker-image |
||||
source: |
||||
repository: ferrologic/concourse-kubernetes |
||||
tag: "1.1.0" |
||||
|
||||
resources: |
||||
- name: se-gitea |
||||
type: git |
||||
source: |
||||
uri: https://git.smartenergi.org/smartenergi/redis_clean_trigger.git |
||||
branch: master |
||||
username: ((git_username)) |
||||
password: ((git_password)) |
||||
- name: docker-repository |
||||
type: docker-image |
||||
source: |
||||
repository: 935062023832.dkr.ecr.eu-west-1.amazonaws.com/redis_clean_trigger |
||||
aws_access_key_id: ((aws_access_key_id)) |
||||
aws_secret_access_key: ((aws_secret_access_key)) |
||||
- name: version |
||||
type: semver |
||||
source: |
||||
initial_version: 1.0.0 |
||||
driver: git |
||||
uri: https://git.smartenergi.org/smartenergi/versionfiles.git |
||||
branch: master |
||||
file: redis_clean_trigger-version |
||||
username: ((git_username)) |
||||
password: ((git_password)) |
||||
- name: notify |
||||
type: slack-notification |
||||
source: |
||||
url: https://hooks.slack.com/services/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 |
||||
insecure: true |
||||
- name: kubernetes_io |
||||
type: kubernetes_2 |
||||
source: |
||||
cluster_url: https://api.k8s.smartenergi.io |
||||
namespace: k2 |
||||
cluster_ca: ((kube_cluster_ca)) |
||||
admin_key: ((kube_admin_key)) |
||||
admin_cert: ((kube_admin_cert)) |
||||
resource_type: cronjob |
||||
resource_name: redis-clean-trigger |
||||
- name: kubernetes_demo |
||||
type: kubernetes_2 |
||||
source: |
||||
cluster_url: https://api.k8s.smartenergi.org |
||||
namespace: k2 |
||||
cluster_ca: ((demo_kube_cluster_ca)) |
||||
admin_key: ((demo_kube_admin_key)) |
||||
admin_cert: ((demo_kube_admin_cert)) |
||||
resource_type: cronjob |
||||
resource_name: redis-clean-trigger |
||||
|
||||
jobs: |
||||
- name: "Build" |
||||
public: true |
||||
serial: true |
||||
plan: |
||||
- get: version |
||||
params: { bump: patch } |
||||
- get: se-gitea |
||||
trigger: true |
||||
- put: docker-repository |
||||
params: |
||||
build: se-gitea |
||||
tag: version/number |
||||
tag_as_latest: true |
||||
- put: version |
||||
params: { bump: patch } |
||||
- put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Success! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Build & Test |
||||
*URL*: http://cicd.smartenergi.io:8080/builds/$BUILD_ID |
||||
on_failure: |
||||
put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Failure! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Build & Test |
||||
*URL*: http://cicd.smartenergi.io:8080/builds/$BUILD_ID |
||||
- name: "Deploy to internal" |
||||
public: true |
||||
plan: |
||||
- get: docker-repository |
||||
trigger: true |
||||
passed: |
||||
- "Build" |
||||
- get: version |
||||
- put: kubernetes_io |
||||
params: |
||||
image_name: docker-repository/repository |
||||
image_tag: version/number |
||||
- put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Success! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Deployment to Internal |
||||
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||
on_failure: |
||||
put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Failure! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Deploy to internal |
||||
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||
- name: "Deploy to demo" |
||||
public: true |
||||
plan: |
||||
- get: docker-repository |
||||
trigger: false |
||||
passed: |
||||
- "Deploy to internal" |
||||
- get: version |
||||
- put: kubernetes_demo |
||||
params: |
||||
image_name: docker-repository/repository |
||||
image_tag: version/number |
||||
- put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Success! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Deployment to Demo |
||||
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
||||
on_failure: |
||||
put: notify |
||||
params: |
||||
text: | |
||||
*Result*: Failure! |
||||
*Build Pipeline Name*: $BUILD_PIPELINE_NAME |
||||
*Job*: Deploy to demo |
||||
*URL*: http://pipeline.smartenergi.io:8080/builds/$BUILD_ID |
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
import requests |
||||
import os |
||||
import logging |
||||
from redis import Redis |
||||
|
||||
logging.basicConfig() |
||||
logging.getLogger().setLevel(logging.INFO) |
||||
log = logging.getLogger(__name__) |
||||
REDIS_HOST = os.environ['REDIS_HOST'] |
||||
REDIS_PORT = os.environ['REDIS_PORT'] |
||||
REDIS_EVENT_LOG_STREAM = os.environ['REDIS_EVENT_LOG_STREAM'] |
||||
REDIS_MREADINGS_NOT_VALIDATED_STREAM = os.environ['REDIS_MREADINGS_NOT_VALIDATED_STREAM'] |
||||
REDIS_MREADINGS_VALIDATED_STREAM = os.environ['REDIS_MREADINGS_VALIDATED_STREAM'] |
||||
REDIS_PASSWORD = os.getenv('REDIS_PASSWORD') |
||||
REDIS_TRIM = os.getenv('REDIS_TRIM') |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
try: |
||||
redis = Redis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD) |
||||
deleted_entries = redis.xtrim(REDIS_EVENT_LOG_STREAM,REDIS_TRIM) |
||||
log.info(f'Removed {deleted_entries} old entries from {REDIS_EVENT_LOG_STREAM}') |
||||
deleted_entries = redis.xtrim(REDIS_MREADINGS_VALIDATED_STREAM,REDIS_TRIM) |
||||
log.info(f'Removed {deleted_entries} old entries {REDIS_MREADINGS_VALIDATED_STREAM}') |
||||
deleted_entries = redis.xtrim(REDIS_MREADINGS_NOT_VALIDATED_STREAM,REDIS_TRIM) |
||||
log.info(f'Removed {deleted_entries} old entries from {REDIS_MREADINGS_NOT_VALIDATED_STREAM}') |
||||
|
||||
except Exception as e: |
||||
log.error(e) |
Loading…
Reference in new issue