From 04b0218280b829e98dbaeb92be9517a9e84238ca Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Mon, 2 Dec 2024 09:42:12 +0100 Subject: [PATCH] deployment --- .woodpecker.yml | 28 ++++++++++++++++++++++++++++ Dockerfile | 15 +++++++++++++++ ENVDB.matest | 4 ++++ deployment/config.json | 6 ++++-- deployment/deploy-yml.tmpl | 28 ++++++++++++++++++++++++++++ deployment/deploy.sh | 29 +++++++++++++++++++++++++++++ deployment/namespace | 1 + deployment/roll-db-credentials.sh | 2 +- src/ma/archiver/archiver.go | 4 ++++ 9 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 .woodpecker.yml create mode 100644 Dockerfile create mode 100644 deployment/deploy-yml.tmpl create mode 100755 deployment/deploy.sh create mode 100644 deployment/namespace diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..7fc3523 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,28 @@ +steps: + build: + image: plugins/kaniko + settings: + repo: ${FORGE_NAME}/${CI_REPO} + registry: + from_secret: container_registry + tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG} + username: + from_secret: container_registry_username + password: + from_secret: container_registry_password + dockerfile: Dockerfile + when: + - event: [push, tag] + + deploy: + image: portainer/kubectl-shell:latest + secrets: + - source: kube_config + target: KUBE_CONFIG_CONTENT + commands: + - export IMAGE_TAG=$CI_COMMIT_TAG + - printf "$KUBE_CONFIG_CONTENT" > /tmp/kubeconfig + - export KUBECONFIG=/tmp/kubeconfig + - ./deployment/deploy.sh + when: + - event: tag diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7d15a54 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:1.22.5-alpine3.20 as builder + +RUN mkdir -p /go/src +COPY ./src/ /go/src +WORKDIR /go/src/ma +RUN go build -a -installsuffix nocgo -o ma main.go + + +FROM scratch + +ENV MA_CONF "" + +COPY --from=builder /go/src/ma ./ +ENTRYPOINT ["./ma"] + diff --git a/ENVDB.matest b/ENVDB.matest index 6bba305..86ada52 100644 --- a/ENVDB.matest +++ b/ENVDB.matest @@ -1,7 +1,11 @@ N=homea + PGHOST=`kubectl get services traefik -n system -o jsonpath="{.status.loadBalancer.ingress[0].ip}"` PGPASSWORD=`kubectl get secrets ma-db-cred -n $N -o jsonpath="{.data.PGPASSWORD}" | base64 --decode` PGUSER=`kubectl get secrets ma-db-cred -n $N -o jsonpath="{.data.PGUSER}" | base64 --decode` PGSSLMODE=`kubectl get secrets ma-db-cred -n $N -o jsonpath="{.data.PGSSLMODE}" | base64 --decode` PGDATABASE="matest" export PGUSER PGHOST PGPASSWORD PGSSLMODE PGDATABASE + +MA_CONF=`cat config-test.json` +export MA_CONF diff --git a/deployment/config.json b/deployment/config.json index a973884..6ee4598 100644 --- a/deployment/config.json +++ b/deployment/config.json @@ -6,8 +6,10 @@ "includeTopics": [ "#" ], - "includeTopics": [ - "mainscnt/#" + "excludeTopics": [ + "IoT/Watchdog", + "snmp", + "MainsCnt/#", "cem/#" ] } diff --git a/deployment/deploy-yml.tmpl b/deployment/deploy-yml.tmpl new file mode 100644 index 0000000..4d2b036 --- /dev/null +++ b/deployment/deploy-yml.tmpl @@ -0,0 +1,28 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ma + labels: + app: ma + annotations: + secret.reloader.stakater.com/reload: ma-db-cred +spec: + replicas: 1 + selector: + matchLabels: + app: ma + template: + metadata: + labels: + app: ma + spec: + containers: + - name: ma + image: %IMAGE% + imagePullPolicy: Always + envFrom: + - secretRef: + name: ma-db-cred + - configMapRef: + name: ma-conf + diff --git a/deployment/deploy.sh b/deployment/deploy.sh new file mode 100755 index 0000000..7f82de7 --- /dev/null +++ b/deployment/deploy.sh @@ -0,0 +1,29 @@ +#!/bin/bash + + + +ARG1=$1 +NAMESPACE=`cat namespace` +IMAGE_NAME=$FORGE_NAME/$CI_REPO + +DEPLOYMENT_DIR=$PWD/deployment + + + +pushd $DEPLOYMENT_DIR > /dev/null + +./roll-db-credential.sh + +kubectl create configmap ma-conf \ + --from-literal=MA_CONF="`cat config.json`" \ + --dry-run=client \ + --o yaml \ + --save-config | \ + kubectl apply -f - -n $NAMESPACE + +cat deploy-yml.tmpl | \ + sed -e 's,%IMAGE%,'$IMAGE_NAME':'$IMAGE_TAG','g | \ + kubectl apply -f - -n $NAMESPACE + + +popd /dev/null diff --git a/deployment/namespace b/deployment/namespace new file mode 100644 index 0000000..65d6ce4 --- /dev/null +++ b/deployment/namespace @@ -0,0 +1 @@ +homea diff --git a/deployment/roll-db-credentials.sh b/deployment/roll-db-credentials.sh index 30aeb7a..c03bd17 100755 --- a/deployment/roll-db-credentials.sh +++ b/deployment/roll-db-credentials.sh @@ -9,7 +9,7 @@ export PGSSLMODE=require DATABASE=ma LOGIN=ma PASSWORD=`openssl rand -base64 24` -NAMESPACE=homea +NAMESPACE=`cat namespace` psql <