Skip to content

Commit d415f3c

Browse files
cloudbank k8s service and funds transfer (#412)
* enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * observability * enable teq * enable teq * enable teq * enable teq * enable teq * observability work * observability work * enable teq * enable teq * enable teq * observ * enable teq * observability dash * observability * osbservability * enable teq * enable teq * enable teq * obs * obs * enable teq * obs * enable teq * observ * obs * converged wording change * fix k6 command * correct workshop link * update workshop link * modifiy python impl to conn.autocommit = False * enable teq * various including security fix in inventory-nodejs * various including security fix in inventory-nodejs * various including security fix in inventory-nodejs * enable teq * inventory-micronaut * inventory-micronaut * inventory-quarkus * inventory-micronaut-native-image * upgrade helidon and db versions * mn and quarkus build wrappers * mn native-image build and deploy fixes * mn native-image build and deploy fixes * mn native-image use JsonObject instead of Jackson * dotnet vault work, etc. * vault work, various languages * Go OCI Vault/Secrets client * displaysetuplogs util script * displaysetuplogs util script * displaysetuplogs util script * displaysetuplogs util script * createsecretfromwallet * createsecretfromwallet * createsecretfromwallet * set order and inventory helidon versions back to 2.4.0 * travelagency readme * createsecretfromwallet * temp eventmesh and osaga java api * travelagencysaga * observability workshop and various fixes * travelagency saga ws work * saga ws work * saga ws * saga ws * saga ws * saga ws * saga ws * osaga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * obs ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * saga ws * obs ws * saga ws * obs ws * foodwinepairing scripts were not chmoded properly * fix inventory-helidon/deploy.sh to renable IS_SUGGESTIVE_SALE_ENABLED functionality * ws fixes * revert unrelated changes * revert unwanted changes * saga ws * ws fixes * fix typo * remove extraneous deploy-order-metrics-exporter.sh * fix typo * jackson databind version change to address https://github.com/oracle/microservices-datadriven/security/dependabot/5 * remove verrazzano yaml etc * add back privs for observability * add back db-log-exporter deploy * add back privs for observability * add back privs for observability * add back privs for observability * add back privs for observability * add back privs for observability * add back privs for observability * add back privs for observability * cloudbank and observability dirs and readmes, inventory-helidon fix, fanEnabled flag in travel app * tx tests * tests * tests * tests * obs mods * obs mods * obs mods * rename obs dir * add exporter build * obs mods * obs mods * obs mods * obs mods * temp removal of foodwinepairing * directions for running aq/teq deq/enq grafana dashboard and alerts * cloudbank k8s service and funds transfer
1 parent b12d055 commit d415f3c

22 files changed

+777
-69
lines changed

cloudbank/README.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,25 @@
33

44
This is a work in progress.
55

6+
### Steps for basic bank transfer application
7+
8+
This app uses a single database with two users (bankauser and bankbuser) and two queues (bankaqueue and bankbqueue)
9+
There is one bank-springboot microservices that is reused for both banka and bankb deployments (just uses different env values accordingly)
10+
11+
1. create DB with kubernetes secrets as done in normal setup for simplify microservices workshop (ie run lab 1)
12+
2. run `microservices-datadriven/cloudbank/sql/AdminCreateUsers.sql` as admin
13+
3. run `microservices-datadriven/cloudbank/sql/AQUserCreateQueues.sql` as aquser
14+
4. run `microservices-datadriven/cloudbank/sql/BankAUser.sql` as bankauser
15+
5. run `microservices-datadriven/cloudbank/sql/BankBUser.sql` as bankbuser
16+
7. run `./build.sh` to build and push the bank-springboot image (note that this will also attempt to create public OCIR repos)
17+
8. run `./deploy.sh` to create banka and bankb deployments and services
18+
9. run `curlpod bank` shortcut command and issue curl such as...
19+
10. curl -X POST -H "Content-type: application/json" -d "{\"frombank\" : \"banka\" , \"fromaccount\" : \"100\", \"tobank\" : \"bankb\", \"toaccount\" : \"200\", \"amount\" : \"1\"}" "http://banka.msdataworkshop:8080/transferfunds"
20+
21+
22+
23+
24+
625
### Steps for setting up AQ/TEQ prometheus metrics, Grafana dashboard, and deq/enq alert(s)
726

827
1. create DB with kubernetes secrets as done in normal setup for simplify microservices workshop (ie run lab 1)
@@ -18,13 +37,13 @@ This is a work in progress.
1837
11. create an alert for deq/enq rate falling as in the image alertrule_deqenqrate.png (todo add src here)
1938
12. `cd microservices-datadriven/cloudbank/cloudbank-backend`
2039
13. export `bankauser, bankapw, and bankaurl`
21-
1. eg `export bankauser=bankauser ; export bankapw=myPW ; export bankaurl="jdbc:oracle:thin:@gd49301311_tp?TNS_ADMIN=/Users/pparkins/Downloads/Wallet_gd49301311"
40+
1. eg `export localbankqueueschema=aquser ; export localbankqueuename=BANKAQUEUE ; export banksubscribername=bankb_service ; export bankdbuser=bankauser ; export bankdbpw=Welcome12345 ; export bankdburl="jdbc:oracle:thin:@gd49301311_tp?TNS_ADMIN=/Users/pparkins/Downloads/Wallet_gd49301311"
2241
14. run `mvn package`
2342
15. run `java -jar target/springboot-0.0.1-SNAPSHOT.jar`
2443
16. run `./loadTest.sh dequeue 1000`
2544
17. run `./loadTest.sh enqueue 1000`
2645
18. notice Grafana console and enq/rate above .5
27-
19. kill enqueue load test
46+
19. kill dequeue load test
2847
20. notice Grafana console and enq/rate drop below .5 and alert notification in console and/or channel as configured in step 10
2948

3049
<p><img src="alertrule_deqenqrate.png" ></p>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM maven:3.6.3-openjdk-11 AS maven_build
2+
COPY pom.xml /tmp/
3+
COPY src /tmp/src/
4+
WORKDIR /tmp/
5+
FROM openjdk
6+
EXPOSE 8080
7+
ARG JAR_FILE=target/*.jar
8+
COPY ${JAR_FILE} app.jar
9+
ENTRYPOINT ["java","-jar","/app.jar"]
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: %BANK_NAME%-springboot
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: %BANK_NAME%
10+
template:
11+
metadata:
12+
labels:
13+
app: %BANK_NAME%
14+
version: springboot
15+
spec:
16+
containers:
17+
- name: bank
18+
image: %DOCKER_REGISTRY%/bank-springboot:0.1
19+
imagePullPolicy: Always
20+
env:
21+
- name: localbankqueueschema
22+
value: "%localbankqueueschema%"
23+
- name: localbankqueuename
24+
value: "%localbankqueuename%"
25+
- name: remotebankqueueschema
26+
value: "%remotebankqueueschema%"
27+
- name: remotebankqueuename
28+
value: "%remotebankqueuename%"
29+
- name: banksubscribername
30+
value: "%banksubscribername%"
31+
- name: bankdbuser
32+
value: "%USER%"
33+
- name: bankdburl
34+
value: "jdbc:oracle:thin:@%PDB_NAME%_tp?TNS_ADMIN=/msdataworkshop/creds"
35+
- name: bankdbpw
36+
valueFrom:
37+
secretKeyRef:
38+
name: dbuser
39+
key: dbpassword
40+
optional: true
41+
volumeMounts:
42+
- name: creds
43+
mountPath: /msdataworkshop/creds
44+
ports:
45+
- containerPort: 8080
46+
restartPolicy: Always
47+
volumes:
48+
- name: creds
49+
secret:
50+
secretName: %db-wallet-secret%
51+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
##
3+
## Copyright (c) 2021 Oracle and/or its affiliates.
4+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
5+
apiVersion: v1
6+
kind: Service
7+
metadata:
8+
name: banka
9+
labels:
10+
app: banka
11+
spec:
12+
type: NodePort
13+
ports:
14+
- port: 8080
15+
name: http
16+
selector:
17+
app: banka
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
##
3+
## Copyright (c) 2021 Oracle and/or its affiliates.
4+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
5+
apiVersion: v1
6+
kind: Service
7+
metadata:
8+
name: bankb
9+
labels:
10+
app: bankb
11+
spec:
12+
type: NodePort
13+
ports:
14+
- port: 8080
15+
name: http
16+
selector:
17+
app: bankb

cloudbank/cloudbank-backend/build.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
## Copyright (c) 2021 Oracle and/or its affiliates.
3+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4+
5+
6+
export IMAGE_NAME=bank-springboot
7+
export IMAGE_VERSION=0.1
8+
9+
if [ -z "$DOCKER_REGISTRY" ]; then
10+
echo "DOCKER_REGISTRY not set. Will get it with state_get"
11+
export DOCKER_REGISTRY=$(state_get DOCKER_REGISTRY)
12+
fi
13+
14+
export IMAGE=${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_VERSION}
15+
16+
mvn clean package spring-boot:repackage
17+
docker build -t=$IMAGE .
18+
19+
export IS_CREATE_REPOS=$1
20+
if [ -z "IS_CREATE_REPOS" ]; then
21+
echo "not creating OCIR repos"
22+
else
23+
echo "creating OCIR repos and setting to public"
24+
if [ -z "COMPARTMENT_OCID" ]; then
25+
echo "COMPARTMENT_OCID not set. Will get it with state_get"
26+
export COMPARTMENT_OCID=$(state_get COMPARTMENT_OCID)
27+
fi
28+
if [ -z "RUN_NAME" ]; then
29+
echo "RUN_NAME not set. Will get it with state_get"
30+
export RUN_NAME=$(state_get RUN_NAME)
31+
fi
32+
# RUN_NAME is randomly generated name from workshop, eg gd4930131
33+
oci artifacts container repository create --compartment-id "$COMPARTMENT_OCID" --display-name "$RUN_NAME/$IMAGE_NAME" --is-public true
34+
fi
35+
36+
docker push "$IMAGE"
37+
if [ $? -eq 0 ]; then
38+
docker rmi "$IMAGE"
39+
fi
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/bash
2+
## Copyright (c) 2022 Oracle and/or its affiliates.
3+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4+
5+
SCRIPT_DIR=$(dirname $0)
6+
7+
if [ -z "$DOCKER_REGISTRY" ]; then
8+
echo "DOCKER_REGISTRY not set. Will get it with state_get"
9+
export DOCKER_REGISTRY=$(state_get DOCKER_REGISTRY)
10+
fi
11+
12+
if [ -z "$DOCKER_REGISTRY" ]; then
13+
echo "Error: DOCKER_REGISTRY env variable needs to be set!"
14+
exit 1
15+
fi
16+
17+
if [ -z "$ORDER_DB_NAME" ]; then
18+
echo "ORDER_DB_NAME not set. Will get it with state_get"
19+
export ORDER_DB_NAME=$(state_get ORDER_DB_NAME)
20+
fi
21+
22+
if [ -z "$ORDER_DB_NAME" ]; then
23+
echo "Error: ORDER_DB_NAME env variable needs to be set!"
24+
exit 1
25+
fi
26+
27+
echo create banka deployment and service...
28+
export CURRENTTIME=generated
29+
#export CURRENTTIME=$( date '+%F_%H:%M:%S' )
30+
echo CURRENTTIME is $CURRENTTIME ...this will be appended to generated deployment yaml
31+
32+
cp bank-deployment.yaml bank-deployment-$CURRENTTIME.yaml
33+
34+
sed -e "s|%DOCKER_REGISTRY%|${DOCKER_REGISTRY}|g" bank-deployment-$CURRENTTIME.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
35+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
36+
sed -e "s|%BANK_NAME%|banka|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
37+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
38+
sed -e "s|%db-wallet-secret%|order-db-tns-admin-secret|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
39+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
40+
sed -e "s|%PDB_NAME%|${ORDER_DB_NAME}|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
41+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
42+
sed -e "s|%USER%|bankauser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
43+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
44+
45+
sed -e "s|%localbankqueueschema%|aquser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
46+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
47+
sed -e "s|%localbankqueuename%|BANKAQUEUE|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
48+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
49+
sed -e "s|%banksubscribername%|banka_service|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
50+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
51+
52+
sed -e "s|%remotebankqueueschema%|aquser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
53+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
54+
sed -e "s|%remotebankqueuename%|BANKBQUEUE|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
55+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
56+
57+
kubectl apply -f $SCRIPT_DIR/bank-deployment-$CURRENTTIME.yaml -n msdataworkshop
58+
59+
kubectl apply -f $SCRIPT_DIR/banka-service.yaml -n msdataworkshop
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/bin/bash
2+
## Copyright (c) 2022 Oracle and/or its affiliates.
3+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4+
5+
SCRIPT_DIR=$(dirname $0)
6+
7+
if [ -z "$DOCKER_REGISTRY" ]; then
8+
echo "DOCKER_REGISTRY not set. Will get it with state_get"
9+
export DOCKER_REGISTRY=$(state_get DOCKER_REGISTRY)
10+
fi
11+
12+
if [ -z "$DOCKER_REGISTRY" ]; then
13+
echo "Error: DOCKER_REGISTRY env variable needs to be set!"
14+
exit 1
15+
fi
16+
17+
if [ -z "$ORDER_DB_NAME" ]; then
18+
echo "ORDER_DB_NAME not set. Will get it with state_get"
19+
export ORDER_DB_NAME=$(state_get ORDER_DB_NAME)
20+
fi
21+
22+
if [ -z "$ORDER_DB_NAME" ]; then
23+
echo "Error: ORDER_DB_NAME env variable needs to be set!"
24+
exit 1
25+
fi
26+
27+
echo create bankb deployment and service...
28+
export CURRENTTIME=generated
29+
#export CURRENTTIME=$( date '+%F_%H:%M:%S' )
30+
echo CURRENTTIME is $CURRENTTIME ...this will be appended to generated deployment yaml
31+
32+
cp bank-deployment.yaml bank-deployment-$CURRENTTIME.yaml
33+
34+
sed -e "s|%DOCKER_REGISTRY%|${DOCKER_REGISTRY}|g" bank-deployment-$CURRENTTIME.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
35+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
36+
sed -e "s|%BANK_NAME%|bankb|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
37+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
38+
sed -e "s|%db-wallet-secret%|order-db-tns-admin-secret|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
39+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
40+
sed -e "s|%PDB_NAME%|${ORDER_DB_NAME}|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
41+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
42+
sed -e "s|%USER%|bankbuser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
43+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
44+
45+
sed -e "s|%localbankqueueschema%|aquser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
46+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
47+
sed -e "s|%localbankqueuename%|BANKBQUEUE|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
48+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
49+
sed -e "s|%banksubscribername%|bankb_service|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
50+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
51+
52+
sed -e "s|%remotebankqueueschema%|aquser|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
53+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
54+
sed -e "s|%remotebankqueuename%|BANKAQUEUE|g" bank-deployment-${CURRENTTIME}.yaml > /tmp/bank-deployment-$CURRENTTIME.yaml
55+
mv -- /tmp/bank-deployment-$CURRENTTIME.yaml bank-deployment-$CURRENTTIME.yaml
56+
57+
kubectl apply -f $SCRIPT_DIR/bank-deployment-$CURRENTTIME.yaml -n msdataworkshop
58+

cloudbank/cloudbank-backend/deploy.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
## Copyright (c) 2022 Oracle and/or its affiliates.
3+
## Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4+
5+
./deploy-banka.sh
6+
./deploy-bankb.sh

cloudbank/cloudbank-backend/pom.xml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
<relativePath/> <!-- lookup parent from repository -->
1010
</parent>
1111
<groupId>com.cloudbank</groupId>
12-
<artifactId>springboot</artifactId>
12+
<artifactId>bank-springboot</artifactId>
1313
<version>0.0.1-SNAPSHOT</version>
14-
<name>springboot</name>
15-
<description>springboot</description>
14+
<name>bank-springboot</name>
15+
<description>bank-springboot</description>
1616
<properties>
1717
<java.version>11</java.version>
1818
</properties>
@@ -64,13 +64,26 @@
6464
<artifactId>spring-jms</artifactId>
6565
<version>5.3.5</version>
6666
</dependency>
67-
<!-- for Synchronization used in AQJmsConnection -->
67+
<dependency>
68+
<groupId>com.fasterxml.jackson.core</groupId>
69+
<artifactId>jackson-databind</artifactId>
70+
</dependency>
71+
<dependency>
72+
<groupId>javax.json.bind</groupId>
73+
<artifactId>javax.json.bind-api</artifactId>
74+
<version>1.0</version>
75+
</dependency>
6876
<dependency>
6977
<groupId>javax.transaction</groupId>
7078
<artifactId>javax.transaction-api</artifactId>
7179
<version>1.2</version>
7280
<scope>runtime</scope>
7381
</dependency>
82+
<dependency>
83+
<groupId>org.json</groupId>
84+
<artifactId>json</artifactId>
85+
<version>20211205</version>
86+
</dependency>
7487
</dependencies>
7588

7689
<build>

0 commit comments

Comments
 (0)