Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
caffafdfbc
|
|||
f5d271bba9
|
|||
a69b33ac32
|
|||
9041034723
|
|||
dae37100f5
|
|||
f6728eb898
|
|||
e18aeed273
|
|||
4eab542960
|
|||
c77394bf4d
|
|||
7eb7ec4798
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,3 +3,5 @@ src/udi/migrate_schema
|
|||||||
tmp/
|
tmp/
|
||||||
ENVDB
|
ENVDB
|
||||||
ENVDB.cluster
|
ENVDB.cluster
|
||||||
|
deployment/secrets.txt
|
||||||
|
deployment/secrets
|
||||||
|
@ -2,8 +2,7 @@ steps:
|
|||||||
build:
|
build:
|
||||||
image: plugins/kaniko
|
image: plugins/kaniko
|
||||||
settings:
|
settings:
|
||||||
repo:
|
repo: gitea.hottis.de/wn/udi
|
||||||
from_secret: image_name
|
|
||||||
registry:
|
registry:
|
||||||
from_secret: container_registry
|
from_secret: container_registry
|
||||||
tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG}
|
tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG}
|
||||||
@ -20,6 +19,10 @@ steps:
|
|||||||
secrets:
|
secrets:
|
||||||
- source: kube_config
|
- source: kube_config
|
||||||
target: KUBE_CONFIG_CONTENT
|
target: KUBE_CONFIG_CONTENT
|
||||||
|
- source: encryption_key
|
||||||
|
target: ENCRYPTION_KEY
|
||||||
|
- source: secrets_checksum
|
||||||
|
target: MD5_CHECKSUM
|
||||||
commands:
|
commands:
|
||||||
- export IMAGE_TAG=$CI_COMMIT_TAG
|
- export IMAGE_TAG=$CI_COMMIT_TAG
|
||||||
- printf "$KUBE_CONFIG_CONTENT" > /tmp/kubeconfig
|
- printf "$KUBE_CONFIG_CONTENT" > /tmp/kubeconfig
|
||||||
|
43
deployment/decrypt-secrets.sh
Executable file
43
deployment/decrypt-secrets.sh
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$ENCRYPTION_KEY" = "" ]; then
|
||||||
|
echo "ENCRYPTION_KEY not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$MD5_CHECKSUM" = "" ]; then
|
||||||
|
echo "No checksum given"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SECRETS_CIPHERTEXT_FILE=secrets.enc
|
||||||
|
SECRETS_PLAINTEXT_FILE=/tmp/secrets
|
||||||
|
TMP_FILE=`mktemp`
|
||||||
|
POD_NAME_SUFFIX=`date +%s`
|
||||||
|
|
||||||
|
cat $SECRETS_CIPHERTEXT_FILE | \
|
||||||
|
kubectl run openssl-$POD_NAME_SUFFIX \
|
||||||
|
--rm \
|
||||||
|
--image bitnami/debian-base-buildpack:latest \
|
||||||
|
--env KEY=$ENCRYPTION_KEY \
|
||||||
|
-i \
|
||||||
|
-q \
|
||||||
|
-- \
|
||||||
|
/bin/sh -c "openssl enc -aes-256-cbc -salt -pass env:KEY -a -d" > \
|
||||||
|
$TMP_FILE
|
||||||
|
|
||||||
|
if [ `uname` = "Darwin" ]; then
|
||||||
|
CALCULATED_CHECKSUM=`cat $TMP_FILE | md5`
|
||||||
|
elif [ `uname` = "Linux" ]; then
|
||||||
|
CALCULATED_CHECKSUM=`cat $TMP_FILE | md5sum - | awk '{print $1}'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$MD5_CHECKSUM" != "$CALCULATED_CHECKSUM" ]; then
|
||||||
|
echo "Invalid checksum"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# cat $TMP_FILE
|
||||||
|
mv $TMP_FILE $SECRETS_PLAINTEXT_FILE
|
||||||
|
|
||||||
|
|
@ -5,6 +5,7 @@ if [ "$IMAGE_TAG" == "" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
IMAGE_NAME=gitea.hottis.de/wn/udi
|
IMAGE_NAME=gitea.hottis.de/wn/udi
|
||||||
|
|
||||||
CONFIG_FILE=config.json
|
CONFIG_FILE=config.json
|
||||||
@ -13,6 +14,11 @@ CONFIG_FILE=config.json
|
|||||||
DEPLOYMENT_DIR=$PWD/deployment
|
DEPLOYMENT_DIR=$PWD/deployment
|
||||||
INSTANCES_DIR=$DEPLOYMENT_DIR/instances
|
INSTANCES_DIR=$DEPLOYMENT_DIR/instances
|
||||||
|
|
||||||
|
pushd $DEPLOYMENT_DIR > /dev/null
|
||||||
|
./decrypt-secrets.sh || exit 1
|
||||||
|
. /tmp/secrets
|
||||||
|
rm /tmp/secrets
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
for NAMESPACE_DIR in `find $INSTANCES_DIR -type d -mindepth 1 -maxdepth 1`; do
|
for NAMESPACE_DIR in `find $INSTANCES_DIR -type d -mindepth 1 -maxdepth 1`; do
|
||||||
NAMESPACE=`basename $NAMESPACE_DIR`
|
NAMESPACE=`basename $NAMESPACE_DIR`
|
||||||
@ -33,8 +39,8 @@ for NAMESPACE_DIR in `find $INSTANCES_DIR -type d -mindepth 1 -maxdepth 1`; do
|
|||||||
MQTT_PASSWORD_VARIABLE="$NAMESPACE""_""$INSTANCE""_MQTT_PASSWORD"
|
MQTT_PASSWORD_VARIABLE="$NAMESPACE""_""$INSTANCE""_MQTT_PASSWORD"
|
||||||
MQTT_PASSWORD_VARIABLE=`echo $MQTT_PASSWORD_VARIABLE | tr - _`
|
MQTT_PASSWORD_VARIABLE=`echo $MQTT_PASSWORD_VARIABLE | tr - _`
|
||||||
MQTT_PASSWORD="${!MQTT_PASSWORD_VARIABLE}"
|
MQTT_PASSWORD="${!MQTT_PASSWORD_VARIABLE}"
|
||||||
echo "MQTT_PASSWORD_VARIABLE: $MQTT_PASSWORD_VARIABLE"
|
# echo "MQTT_PASSWORD_VARIABLE: $MQTT_PASSWORD_VARIABLE"
|
||||||
echo "MQTT_PASSWORD: $MQTT_PASSWORD"
|
# echo "MQTT_PASSWORD: $MQTT_PASSWORD"
|
||||||
kubectl create secret generic $INSTANCE-mqtt-password \
|
kubectl create secret generic $INSTANCE-mqtt-password \
|
||||||
--from-literal=MQTT_PASSWORD="$MQTT_PASSWORD" \
|
--from-literal=MQTT_PASSWORD="$MQTT_PASSWORD" \
|
||||||
--dry-run=client \
|
--dry-run=client \
|
||||||
|
29
deployment/encrypt-secrets.sh
Executable file
29
deployment/encrypt-secrets.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$ENCRYPTION_KEY" = "" ]; then
|
||||||
|
echo "ENCRYPTION_KEY not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SECRETS_PLAINTEXT_FILE=secrets.txt
|
||||||
|
SECRETS_CIPHERTEXT_FILE=secrets.enc
|
||||||
|
|
||||||
|
if [ `uname` = "Darwin" ]; then
|
||||||
|
cat $SECRETS_PLAINTEXT_FILE | md5
|
||||||
|
elif [ `uname` = "Linux" ]; then
|
||||||
|
cat $SECRETS_PLAINTEXT_FILE | md5sum - | awk '{print $1}'
|
||||||
|
fi
|
||||||
|
|
||||||
|
POD_NAME_SUFFIX=`date +%s`
|
||||||
|
|
||||||
|
cat $SECRETS_PLAINTEXT_FILE | \
|
||||||
|
kubectl run openssl-$POD_NAME_SUFFIX \
|
||||||
|
--rm \
|
||||||
|
--image bitnami/debian-base-buildpack:latest \
|
||||||
|
--env KEY=$ENCRYPTION_KEY \
|
||||||
|
-i \
|
||||||
|
-q \
|
||||||
|
-- \
|
||||||
|
/bin/sh -c "openssl enc -aes-256-cbc -salt -pass env:KEY -a" > \
|
||||||
|
$SECRETS_CIPHERTEXT_FILE
|
||||||
|
|
@ -1,55 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
FILE=$1
|
|
||||||
if [ "$FILE" = "" ]; then
|
|
||||||
echo "give config file to load as first argument"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
MQTT_PASSWORD=$2
|
|
||||||
if [ "$MQTT_PASSWORD" = "" ]; then
|
|
||||||
echo "give mqtt password as second argument"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
NAMESPACE=$3
|
|
||||||
if [ "$NAMESPACE" = "" ]; then
|
|
||||||
echo "give namespace as third argument"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
kubectl create secret generic udi-conf \
|
|
||||||
--from-literal=UDI_CONF="`cat $FILE`" \
|
|
||||||
-n $NAMESPACE \
|
|
||||||
--dry-run=client \
|
|
||||||
-o yaml \
|
|
||||||
--save-config | \
|
|
||||||
kubectl apply -f -
|
|
||||||
|
|
||||||
kubectl create secret generic mqtt-password \
|
|
||||||
--from-literal=MQTT_PASSWORD="$MQTT_PASSWORD" \
|
|
||||||
-n $NAMESPACE \
|
|
||||||
--dry-run=client \
|
|
||||||
-o yaml \
|
|
||||||
--save-config | \
|
|
||||||
kubectl apply -f -
|
|
||||||
|
|
||||||
. ~/Workspace/MyKubernetesEnv/ENVDB
|
|
||||||
DATABASE="udi-$NAMESPACE"
|
|
||||||
LOGIN="udi-$NAMESPACE"
|
|
||||||
PASSWORD=`openssl rand -base64 24`
|
|
||||||
psql <<EOF
|
|
||||||
ALTER USER "$LOGIN" WITH PASSWORD '$PASSWORD';
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE "$DATABASE" TO "$LOGIN";
|
|
||||||
COMMIT;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
kubectl create secret generic udi-db-cred \
|
|
||||||
--dry-run=client \
|
|
||||||
-o yaml \
|
|
||||||
--save-config \
|
|
||||||
--from-literal=PGUSER="$LOGIN" \
|
|
||||||
--from-literal=PGHOST="timescaledb.database.svc.cluster.local" \
|
|
||||||
--from-literal=PGPASSWORD="$PASSWORD" \
|
|
||||||
--from-literal=PGSSLMODE="require" \
|
|
||||||
--from-literal=PGDATABASE="$DATABASE" | \
|
|
||||||
kubectl apply -f - -n $NAMESPACE
|
|
||||||
|
|
7
deployment/secrets.enc
Normal file
7
deployment/secrets.enc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
U2FsdGVkX1+jsPd67Sl8bXkH/OVKx3clFUnpJBzwRXA9qEhyDrwMJWg3UH6eiCZd
|
||||||
|
PIwApBbDKxR0W/NotaE9100gQo+L3tHL0elMo/YOFkiwkM3tJ1v3zngY1BUoEAGJ
|
||||||
|
4aZNVC7Eb9HDG0RKqh7fSPuazeKxd1fih9nQuxy//XgRivqjbgqfD/xLi5NZ/n0F
|
||||||
|
nJT1MsBKGmYF4ezC7thSYIN/+GDL6gpty/FYxAi56oFy6q2YGuADXPgRs1v22vz3
|
||||||
|
KP+9mIeg6VZn6IRv00w0HSJ3UghMMx/b3pDjIVrq9I3x9sXDD1YqYbjjcnopqKsl
|
||||||
|
+gVrX/jCsDBmArRXFu1innOJ+pOsHJ3sSR5fRugnn0Fgje63n4mN46eJYdwhHgEr
|
||||||
|
yIuyMipc0Uc1ZOsEpkrmYnEofgGaWC3IrdsVEwybbGQ=
|
Reference in New Issue
Block a user