Skip to content

Commit a42d7cb

Browse files
Merge branch 'develop' of https://github.com/akvo/akvo-rsr into develop
2 parents ce3a291 + 20b8139 commit a42d7cb

File tree

7 files changed

+156
-11
lines changed

7 files changed

+156
-11
lines changed

ci/k8s/deployment.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ spec:
2323
ports:
2424
- containerPort: 80
2525
protocol: TCP
26-
- containerPort: 8080
26+
- containerPort: 8081
2727
protocol: TCP
2828
livenessProbe:
2929
httpGet:
3030
path: /
31-
port: 8080
31+
port: 8081
3232
initialDelaySeconds: 5
3333
timeoutSeconds: 1
3434
readinessProbe:

ci/training-envs/delete-env.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22

3-
set -eu
3+
set -u
44

55
function log {
66
echo "$(date +"%T") - INFO - $*"
@@ -11,6 +11,10 @@ disk_name=rsr-${release_name}-1
1111

1212
gcloud container clusters get-credentials test --zone europe-west1-d --project akvo-lumen
1313

14+
log "Maybe deleting dangling snapshot"
15+
snapshot_name=rsr-${release_name}-1
16+
gcloud compute snapshots delete ${snapshot_name} --quiet
17+
1418
log "Deleting helm chart..."
1519
helm delete --purge ${release_name}
1620
log "Deleting Postgress persistent volume claim..."

ci/training-envs/new-env.sh

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,19 @@ function read_version () {
2020
VERSION=$(kubectl get deployments rsr -o jsonpath="{@.spec.template.metadata.labels['rsr-version']}")
2121
}
2222

23+
function read_report_server_version () {
24+
VERSION=$(kubectl get deployments reportserver -o jsonpath="{@.spec.template.metadata.labels['akvo-report-server-version']}")
25+
}
26+
2327
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
2428

2529
release_name=$1
2630
restore_from=$2
2731
rsr_version=${3:-prod}
32+
report_server_version=${4:-prod}
2833
HELM_EXTRA_OPTS=""
2934

30-
if [[ ! $release_name =~ ^rsr[1-4]$ ]]; then
35+
if [[ ! ${release_name} =~ ^rsr[1-4]$ ]]; then
3136
echo "Release must be one of rsr1,rsr2,rsr3 or rsr4"
3237
exit 1
3338
fi
@@ -57,12 +62,28 @@ if [[ ${rsr_version} == "prod" ]]; then
5762
read_version
5863
rsr_version=${VERSION}
5964
switch_cluster "test"
65+
elif [[ ${rsr_version} == "test" ]]; then
66+
read_version
67+
rsr_version=${VERSION}
68+
fi
69+
70+
if [[ ${report_server_version} == "prod" ]]; then
71+
switch_cluster "production"
72+
read_report_server_version
73+
report_server_version=${VERSION}
74+
switch_cluster "test"
75+
elif [[ ${report_server_version} == "test" ]]; then
76+
read_report_server_version
77+
report_server_version=${VERSION}
6078
fi
6179

6280
kubectl get pods > /dev/null
6381

6482
log Running helm ...
65-
helm install . --dep-up --namespace rsr-demo --name ${release_name} --set restoreFrom="${restore_from}" --set rsrVersion="${rsr_version}" ${HELM_EXTRA_OPTS}
83+
helm install . --dep-up --namespace rsr-demo --name ${release_name} --set restoreFrom="${restore_from}" \
84+
--set rsrVersion="${rsr_version}" \
85+
--set reportServerVersion="${report_server_version}" \
86+
${HELM_EXTRA_OPTS}
6687

6788
log Waiting for new environment to be ready
6889
${DIR}/helpers/wait-for-k8s-deployment-to-be-ready.sh ${release_name}

ci/training-envs/templates/deployment.yaml

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ spec:
2323
ports:
2424
- containerPort: 80
2525
protocol: TCP
26-
- containerPort: 8080
26+
- containerPort: 8081
2727
protocol: TCP
2828
livenessProbe:
2929
httpGet:
3030
path: /
31-
port: 8080
31+
port: 8081
3232
initialDelaySeconds: 5
3333
timeoutSeconds: 1
3434
readinessProbe:
@@ -48,11 +48,14 @@ spec:
4848
mountPath: "/var/akvo/rsr/mediaroot"
4949
env:
5050
- name: REPORT_SERVER_API_KEY
51-
value: "none useful"
51+
valueFrom:
52+
secretKeyRef:
53+
name: "rsr-common"
54+
key: report-server-api-key
5255
- name: ENVIRONMENT
5356
value: "test"
5457
- name: REPORT_SERVER_URL
55-
value: "http://localhost"
58+
value: "http://localhost:8080"
5659
- name: rsr-backend
5760
image: "eu.gcr.io/akvo-lumen/rsr-backend:{{ .Values.rsrVersion }}"
5861
imagePullPolicy: Always
@@ -123,6 +126,55 @@ spec:
123126
- "echo stats | nc 127.0.0.1 11211 | grep version"
124127
initialDelaySeconds: 10
125128
periodSeconds: 5
129+
- name: reportserver
130+
image: akvo/akvo-reportserver:{{ .Values.reportServerVersion }}
131+
ports:
132+
- containerPort: 8080
133+
livenessProbe:
134+
httpGet:
135+
path: /
136+
port: 8080
137+
initialDelaySeconds: 360
138+
env:
139+
- name: RS_DB_USER
140+
valueFrom:
141+
secretKeyRef:
142+
name: rsr-reportserver-training
143+
key: rs_db_user
144+
- name: RS_DB_PASSWORD
145+
valueFrom:
146+
secretKeyRef:
147+
name: rsr-reportserver-training
148+
key: rs_db_password
149+
- name: RS_DB_NAME
150+
valueFrom:
151+
secretKeyRef:
152+
name: rsr-reportserver-training
153+
key: rs_db_name
154+
- name: RS_DB_HOST
155+
value: "{{ include "rsrchart.dbname" . }}"
156+
- name: DISABLE_SSL_DB_CONNECTION
157+
value: "yes"
158+
- name: RS_PBE_SALT
159+
valueFrom:
160+
secretKeyRef:
161+
name: rsr-reportserver-training
162+
key: rs_pbe_salt
163+
- name: RS_PBE_PASSPHRASE
164+
valueFrom:
165+
secretKeyRef:
166+
name: rsr-reportserver-training
167+
key: rs_pbe_passphrase
168+
- name: RS_HMAC_PASSPHRASE
169+
valueFrom:
170+
secretKeyRef:
171+
name: rsr-reportserver-training
172+
key: rs_hmac_passphrase
173+
- name: RS_EXTRA_FONT_URL
174+
valueFrom:
175+
secretKeyRef:
176+
name: rsr-reportserver-training
177+
key: rs_extra_font_url
126178
initContainers:
127179
- name: copy-assets-to-backend-container
128180
image: "eu.gcr.io/akvo-lumen/rsr-nginx:{{ .Values.rsrVersion }}"

ci/training-envs/templates/seedDatabase.yaml

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ data:
3737
log Assign perms to RSR user in RSR DB
3838
psql "${psql_settings[@]}" --dbname="${RSR_DB_NAME}" --command="ALTER SCHEMA public OWNER TO ${RSR_DB_USER};"
3939
40+
DUMP_FILE=/tmp/backup.lzo
4041
if [[ "{{.Values.restoreFrom}}" == "prod" ]]; then
41-
DUMP_FILE=/tmp/backup.lzo
4242
4343
log Downloading latest production RSR backup
4444
curl -u :${ELEPHANTSQL_API_KEY} https://api.elephantsql.com/api/backup?db=rsr_db | jq .[0].url | xargs curl --output "${DUMP_FILE}"
@@ -67,7 +67,55 @@ data:
6767
log Deleting tmp files
6868
rm /tmp/cleaned.dump
6969
rm $DUMP_FILE
70+
7071
fi
7172
73+
log Creating ReportServer read-only user
74+
REPORTSERVER_DB_USER=${REPORTSERVER_DB_USER}
75+
REPORTSERVER_USER_PASSWORD=${REPORTSERVER_USER_PASSWORD}
76+
REPORTSERVER_DB_NAME=${REPORTSERVER_DB_NAME}
77+
78+
psql_settings=("--username=${SUPER_USER}" "--host=${DB_HOST}" "--set" "ON_ERROR_STOP=on")
79+
psql "${psql_settings[@]}" --command="CREATE USER ${REPORTSERVER_DB_USER} WITH ENCRYPTED PASSWORD '${REPORTSERVER_USER_PASSWORD}';"
80+
log Assinging read-only permissions to ReportServer user
81+
psql_settings=("--username=${SUPER_USER}" "--host=${DB_HOST}" "--dbname=${RSR_DB_NAME}" "--set" "ON_ERROR_STOP=on")
82+
psql "${psql_settings[@]}" --command="GRANT USAGE ON SCHEMA public TO ${REPORTSERVER_DB_USER};"
83+
psql "${psql_settings[@]}" --command="GRANT SELECT ON ALL TABLES IN SCHEMA public TO ${REPORTSERVER_DB_USER};"
84+
psql "${psql_settings[@]}" --command="ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ${REPORTSERVER_DB_USER};"
85+
86+
log Creating ReportServer DB
87+
psql_settings=("--username=${SUPER_USER}" "--host=${DB_HOST}" "--set" "ON_ERROR_STOP=on")
88+
psql "${psql_settings[@]}" --command="CREATE DATABASE ${REPORTSERVER_DB_NAME} OWNER ${REPORTSERVER_DB_USER};"
89+
log Assign perms to ReportServer user in ReportServer DB
90+
psql "${psql_settings[@]}" --dbname="${REPORTSERVER_DB_NAME}" --command="ALTER SCHEMA public OWNER TO ${REPORTSERVER_DB_USER};"
91+
92+
log Downloading latest production ReportServer backup
93+
curl -u :${ELEPHANTSQL_API_KEY} https://api.elephantsql.com/api/backup?db=reportserver | jq .[0].url | xargs curl --output "${DUMP_FILE}"
94+
log Preparing ReportServer DB dump
95+
dump_owner=reportserver
96+
lzop -cd "${DUMP_FILE}" | \
97+
sed -e '/COPY public.rs_audit_log_property/,/^--/d' | \
98+
sed -e "s/${dump_owner};\$/${REPORTSERVER_DB_USER};/" | \
99+
sed -e "/^GRANT/d" | sed -e "/ALTER DEFAULT PRIVILEGES/d" | \
100+
sed -e '/spatial_ref_sys/,+1 d' | \
101+
sed -e '/NOT EXISTS plv8/d' | sed -e '/ON EXTENSION plv8/d' | \
102+
sed -e '/NOT EXISTS "uuid-ossp/d' | sed -e '/ON EXTENSION "uuid-ossp/d' | \
103+
sed -e '/NOT EXISTS postgis/d' | sed -e '/ON EXTENSION postgis/d' \
104+
> /tmp/cleaned.dump
105+
106+
log Seeding ReportServer DB
107+
psql_settings=("--username=${SUPER_USER}" "--host=${DB_HOST}" "--dbname=${REPORTSERVER_DB_NAME}" "--set" "ON_ERROR_STOP=on")
108+
cat /tmp/cleaned.dump | psql "${psql_settings[@]}"
109+
log Deleting ReportServer tmp files
110+
rm /tmp/cleaned.dump
111+
rm $DUMP_FILE
112+
113+
log Changing credentials of ReportServer datasource
114+
## Removing the internal datasource so that it doesnt point to production
115+
db_external_host=$(echo $HOSTNAME | cut -f1-2 -d\-)
116+
psql "${psql_settings[@]}" --command="UPDATE rs_database_datasource SET username='none', password='none' WHERE username='$dump_owner'"
117+
psql "${psql_settings[@]}" --command="UPDATE rs_database_datasource SET username='${REPORTSERVER_DB_USER}', password='${ENCRYPTED_RSR_PASSWORD}', url='jdbc:postgresql://${db_external_host}:5432/${RSR_DB_NAME}' WHERE username='reportserver_user'"
118+
119+
72120
log Done
73121
exit 0

ci/training-envs/values.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,24 @@ postgresql:
1414
secretKeyRef:
1515
name: "rsr-common"
1616
key: elephantsql-api-key
17+
- name: REPORTSERVER_USER_PASSWORD
18+
valueFrom:
19+
secretKeyRef:
20+
name: rsr-reportserver-training
21+
key: rs_db_password
22+
- name: REPORTSERVER_DB_USER
23+
valueFrom:
24+
secretKeyRef:
25+
name: rsr-reportserver-training
26+
key: rs_db_user
27+
- name: REPORTSERVER_DB_NAME
28+
valueFrom:
29+
secretKeyRef:
30+
name: rsr-reportserver-training
31+
key: rs_db_name
32+
- name: ENCRYPTED_RSR_PASSWORD
33+
valueFrom:
34+
secretKeyRef:
35+
name: rsr-reportserver-training
36+
key: rs_rsr_db_encrypted_password
1737
initdbScriptsConfigMap: "{{ include \"rsrchart.fullname\" . }}-seed-db"

nginx/default.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
server {
2-
listen 8080;
2+
listen 8081;
33
server_name health;
44
location / {
55
stub_status on;

0 commit comments

Comments
 (0)