From af610ab49194f12783fdfb2cc676c4877b22ed7c Mon Sep 17 00:00:00 2001 From: clarkzjw Date: Thu, 23 Feb 2023 22:24:05 -0800 Subject: deploy: add Dockerfile and docker-compose.yaml --- contrib/docker-compose.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 contrib/docker-compose.yaml (limited to 'contrib') diff --git a/contrib/docker-compose.yaml b/contrib/docker-compose.yaml new file mode 100644 index 0000000..7ba8c2d --- /dev/null +++ b/contrib/docker-compose.yaml @@ -0,0 +1,13 @@ +version: '3' +services: + checkin.bot: + image: "clarkzjw/checkin.bot:latest" + restart: always + volumes: + - "./config.ini:/usr/src/app/config.ini" + - sqlite3:/usr/src/app/database/ + ports: + - "8080:8080" + +volumes: + sqlite3: -- cgit v1.2.3 From b097f3c13ddfa51551bce9ca9344c796e5cea9cb Mon Sep 17 00:00:00 2001 From: clarkzjw Date: Thu, 23 Feb 2023 23:42:50 -0800 Subject: deploy: add krakend api gateway --- contrib/docker-compose.yaml | 11 +++++- contrib/krakend.json | 90 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 contrib/krakend.json (limited to 'contrib') diff --git a/contrib/docker-compose.yaml b/contrib/docker-compose.yaml index 7ba8c2d..3ca7981 100644 --- a/contrib/docker-compose.yaml +++ b/contrib/docker-compose.yaml @@ -1,6 +1,6 @@ version: '3' services: - checkin.bot: + checkinbot: image: "clarkzjw/checkin.bot:latest" restart: always volumes: @@ -9,5 +9,14 @@ services: ports: - "8080:8080" + krakend: + image: "devopsfaith/krakend:latest" + restart: always + ports: + - "8081:8080" + - "9091:9091" + volumes: + - "./krakend.json:/etc/krakend/krakend.json" + volumes: sqlite3: diff --git a/contrib/krakend.json b/contrib/krakend.json new file mode 100644 index 0000000..1f89340 --- /dev/null +++ b/contrib/krakend.json @@ -0,0 +1,90 @@ +{ + "$schema": "https://www.krakend.io/schema/v3.json", + "version": 3, + "name": "Checkin.bot API", + "extra_config": { + "telemetry/opencensus": { + "sample_rate": 100, + "reporting_period": 0, + "exporters": { + "prometheus": { + "port": 9091, + "namespace": "krakend", + "tag_host": false, + "tag_path": true, + "tag_method": true, + "tag_statuscode": false + } + } + }, + "telemetry/metrics": { + "collection_time": "60s", + "proxy_disabled": false, + "router_disabled": false, + "backend_disabled": false, + "endpoint_disabled": false, + "listen_address": ":8090" + } + }, + "timeout": "3000ms", + "cache_ttl": "300s", + "output_encoding": "json", + "debug_endpoint": true, + "endpoints": [ + { + "endpoint": "/checkinbot/webhook", + "method": "POST", + "output_encoding": "json", + "backend": [ + { + "url_pattern": "/checkinbot/webhook", + "encoding": "json", + "sd": "static", + "method": "POST", + "host": [ + "http://checkinbot:8080" + ], + "disable_host_sanitize": false + } + ] + }, + { + "endpoint": "/checkinbot/healthcheck", + "method": "GET", + "output_encoding": "string", + "backend": [ + { + "url_pattern": "/checkinbot/healthcheck", + "encoding": "string", + "sd": "static", + "method": "GET", + "host": [ + "http://checkinbot:8080" + ], + "disable_host_sanitize": false + } + ] + }, + { + "endpoint": "/checkinbot/fedi_login_callback", + "method": "GET", + "output_encoding": "string", + "backend": [ + { + "url_pattern": "/checkinbot/fedi_login_callback", + "encoding": "string", + "sd": "static", + "method": "GET", + "disable_host_sanitize": false, + "host": [ + "http://checkinbot:8080" + ] + } + ], + "input_query_strings": [ + "code", + "state" + ] + } + ] +} \ No newline at end of file -- cgit v1.2.3 From 391abe42adf3bf065d9543ada068b696b00efdcd Mon Sep 17 00:00:00 2001 From: clarkzjw Date: Fri, 24 Feb 2023 00:49:12 -0800 Subject: deploy: add krakend monitoring using influxdb and grafana --- contrib/docker-compose.yaml | 27 ++++++++++++++++++++++++++- contrib/influx/initdb.sh | 16 ++++++++++++++++ contrib/krakend.json | 20 +++++++------------- 3 files changed, 49 insertions(+), 14 deletions(-) create mode 100755 contrib/influx/initdb.sh (limited to 'contrib') diff --git a/contrib/docker-compose.yaml b/contrib/docker-compose.yaml index 3ca7981..8aeaff8 100644 --- a/contrib/docker-compose.yaml +++ b/contrib/docker-compose.yaml @@ -10,7 +10,7 @@ services: - "8080:8080" krakend: - image: "devopsfaith/krakend:latest" + image: "devopsfaith/krakend:2.2" restart: always ports: - "8081:8080" @@ -18,5 +18,30 @@ services: volumes: - "./krakend.json:/etc/krakend/krakend.json" + influx: + image: influxdb:2.6.1 + environment: + - "DOCKER_INFLUXDB_INIT_MODE=setup" + - "DOCKER_INFLUXDB_INIT_USERNAME=krakend" + - "DOCKER_INFLUXDB_INIT_PASSWORD=password" + - "DOCKER_INFLUXDB_INIT_ORG=my-org" + - "DOCKER_INFLUXDB_INIT_BUCKET=krakend" + - "DOCKER_INFLUXDB_INIT_RETENTION=1w" + - "DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token" + ports: + - "8086:8086" + volumes: + - "./influx/initdb.sh:/docker-entrypoint-initdb.d/initdb.sh" + + grafana: + image: "grafana/grafana:9.3.6" + restart: always + ports: + - "3000:3000" + volumes: + - grafana:/var/lib/grafana + volumes: sqlite3: + grafana: + influxdb: diff --git a/contrib/influx/initdb.sh b/contrib/influx/initdb.sh new file mode 100755 index 0000000..b1d07af --- /dev/null +++ b/contrib/influx/initdb.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# The following script creates the authentication for Grafana +# and is meant to be added to InfluxDB docker-compose.yml file. +# image: influxdb +# volumes: +# - "./config/influx:/docker-entrypoint-initdb.d" +set -e + +# Retrieve the ID from the bucket created during setup +BUCKET_ID=$(influx bucket list | grep "$DOCKER_INFLUXDB_INIT_BUCKET" | awk '{print $1}') + +influx v1 auth create \ + --username ${DOCKER_INFLUXDB_INIT_USERNAME} \ + --password ${DOCKER_INFLUXDB_INIT_PASSWORD} \ + --write-bucket ${BUCKET_ID} \ + --org ${DOCKER_INFLUXDB_INIT_ORG} diff --git a/contrib/krakend.json b/contrib/krakend.json index 1f89340..2ed23d8 100644 --- a/contrib/krakend.json +++ b/contrib/krakend.json @@ -3,19 +3,13 @@ "version": 3, "name": "Checkin.bot API", "extra_config": { - "telemetry/opencensus": { - "sample_rate": 100, - "reporting_period": 0, - "exporters": { - "prometheus": { - "port": 9091, - "namespace": "krakend", - "tag_host": false, - "tag_path": true, - "tag_method": true, - "tag_statuscode": false - } - } + "telemetry/influx": { + "address": "http://influx:8086", + "ttl": "25s", + "buffer_size": 100, + "db": "krakend", + "username": "krakend", + "password": "password" }, "telemetry/metrics": { "collection_time": "60s", -- cgit v1.2.3