Browse Source

First version

pull/1/head
Öystein Andersen 4 years ago
parent
commit
582ae604ae
  1. 4
      .gitignore
  2. 16
      Dockerfile
  3. 4
      README.md
  4. 3
      entrypoint.sh
  5. 46
      kube/deployment.yaml
  6. 2
      pipeline/create-pipeline.sh
  7. 152
      pipeline/pipeline.yaml
  8. 1
      requirements.txt
  9. 29
      trigger_redis_clean.py

4
.gitignore vendored

@ -1,3 +1,7 @@ @@ -1,3 +1,7 @@
venv
venv36
venv38
EXPORT_VARIABLES.sh
# ---> Vim
# Swap
[._]*.s[a-v][a-z]

16
Dockerfile

@ -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"]

4
README.md

@ -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

3
entrypoint.sh

@ -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"

46
kube/deployment.yaml

@ -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

2
pipeline/create-pipeline.sh

@ -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

152
pipeline/pipeline.yaml

@ -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

1
requirements.txt

@ -0,0 +1 @@ @@ -0,0 +1 @@
redis == 3.5.3

29
trigger_redis_clean.py

@ -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…
Cancel
Save