From 5b9f456c977f69840fc9470b304c6360adc2d971 Mon Sep 17 00:00:00 2001 From: agrawalgaurav Date: Thu, 25 Mar 2021 11:07:58 +0530 Subject: [PATCH] Added deployment and development artifacts. Signed-off-by: agrawalgaurav Change-Id: I0a33be3aa999a7de5693fa5d05646fe5124a2cb1 --- example-apps/ROBO/Deployment/robo-dep.yaml | 34 ---- .../ROBO/deployment/SmartShelf_description.md | 31 +++ example-apps/ROBO/deployment/SmartShelf_icon.png | Bin 0 -> 4911 bytes .../ROBO/deployment/smartshelf-deployment.yaml | 217 +++++++++++++++++++++ 4 files changed, 248 insertions(+), 34 deletions(-) delete mode 100644 example-apps/ROBO/Deployment/robo-dep.yaml create mode 100644 example-apps/ROBO/deployment/SmartShelf_description.md create mode 100644 example-apps/ROBO/deployment/SmartShelf_icon.png create mode 100644 example-apps/ROBO/deployment/smartshelf-deployment.yaml diff --git a/example-apps/ROBO/Deployment/robo-dep.yaml b/example-apps/ROBO/Deployment/robo-dep.yaml deleted file mode 100644 index 3137b90..0000000 --- a/example-apps/ROBO/Deployment/robo-dep.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: robo-deployment -spec: - replicas: 2 - selector: - matchLabels: - app: robo - template: - metadata: - labels: - app: robo - spec: - containers: - - name: robo - image: ealtedge/robo - ports: - - containerPort: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: robo-service -spec: - type: NodePort - selector: - app: robo - ports: - - protocol: "TCP" - port: 8000 - targetPort: 80 - nodePort: 30001 diff --git a/example-apps/ROBO/deployment/SmartShelf_description.md b/example-apps/ROBO/deployment/SmartShelf_description.md new file mode 100644 index 0000000..0835c76 --- /dev/null +++ b/example-apps/ROBO/deployment/SmartShelf_description.md @@ -0,0 +1,31 @@ +# Smart Shelf Application + +This application is an entry level application to demonstrate Remote Office Branch Office usecase (ROBO) for Retail Enterprise for scenario wherein there is a retail chain comprising of multiple retail stores and a retail headquater. +The application provides Smart Shelf solution to monitor shelf's for a retail chain. + +Why Smart Shelf solution: +Smart Shelf is a technological breakthrough that enhances the overall shopping experience and improves a store’s operational efficiency in terms of stock misplacement and notify empty shelves. + +Smart shelf benefits: +- Smart Shelves can notify empty shelf for items when needed without requiring humans, making it easier to prevent + shortages of popular items at peak times. +- Smart Shelves allow retailers to make more informed decisions about stocking and inventory, notify the back-end + system about the existing quantity of items on the shelves, alert when product levels are running low and when items are misplaced. +- Provides access to the store or shelf information remotely, enables visibility of stock position, cross and up + selling of products. +- Better customer experience with proper inventory for each shelf. + +Available Solutions: +- Camera based with Video analytics solution +- weight sensors/optical sensors based solutions +This application is based on 1st solution + +Why Edge: +This use case demands for low latency, jitter for scenarios like theft detection, stock misplacement. +Currently available in-retail enterprise solutions, wherein in store deployment of compute/storage resources + are done, consumes store spaces and are not cost effective. 5G Telco edge based solution is a need here and this + application demonstrates the same. + +This application is developed as part of Akraino EALTEdge BP using EdgeGallery as an upstream project. Kindly refer + below link to get more insights about this application: +https://wiki.akraino.org/display/AK/EALT-EDGE+Landing+Application diff --git a/example-apps/ROBO/deployment/SmartShelf_icon.png b/example-apps/ROBO/deployment/SmartShelf_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..def175165fc565d4f0f05450cd0bedf7b0606c47 GIT binary patch literal 4911 zcmV+~6VU95P)rsRJ(;-|0bk?rWCmMSJ(R%{*HK zZP&$5z0mQ7sp?OH?rxd%p}hU=^6E=}?PikhYL)J7 zm+y6*@O`82c%Sflq40d7@P4H4be!y7jqiG)>|l=VVUO>5q3mCc>rsU6ahmRMne?B# z@PVc0Gj2%7YBc}=09kZWPE)1;x9{WFy#3S2&G`KKsI9UH(DLoB;i&|`wD#Zhz8GTE z%fztOs-W}h=Ezy<+tk9sxc2DX67ij_y6oh<4d8~xtmmbci)T1fJ~S?CzC^pTP37Em ze8(b;mZU!b01wVv~&-ec# zHM=+oNf5Fmag*`)vNNsIKgnLKAbg>|N_>_0D)Cj~tHf7{K$J*dl@43&M)_cOTasja zBTLfu?m@ZHZXKRoHUR z@XYdfRG*V7qqXp$gnBxS?>48vV^f>>Zu*pc?DV2UX&1Z1nF#nGG9zNw?wP>GgA&(e zy+aColG0n0uLTC~mq=G+?8+6uM}-`A$rXlI#Pt%7N7(fg0iQ*lu5TP4zM5vi>te46AIQevB7v~Z=wRR^i> zarjj6??`p71a|Bt4izNCr96DH{E~=-awsrjFR|Z1DjER}M50JF*alAa64#yg2Ojhh~nxT_*D^XZESd-*LSs&|6U zixQ6#65I_Dx=AD?eRt|bi8@_Z%4@)}HJPqA>jLFPiIPln?*P|!B>H*Lg@qR-ZfJ<< z0&uQSr73O%!u1k2BHekWfP0H{cPicpu9whXjc67EAREMY>J@S#+^P`k79j0hl$6 zQglD|oOZ7S-G(b%oYOfGp-bYLYb9EAa^`RsKFAzh0<~N!aYp~S-w;5*>4$jcN{Mrc z_uc2b5{Go97N~_puSNQHAC6e! zN(t(;VV*#g%aKZ`ogj~vy`$z)dXy4v)Wjg*VyJl-p~Qtq7TE#XcG=5LlXtw%TwY`GpU0T zMRK_D148EqId&=zU*Z@wAz57-MNo4*bcrGvWOEQgIWi>{hb_@28xHPo&afzu?MHja z5=AA@$NEDY`YX-hO0>u$5wLHAhm|4^#mP`5($gV+B)ShpH9bs;!>~>q#_8klFeQ#c zx|Zl!QydLZq8`rWrEUr}^}!`-!`W-xWqlVHUc3>E|=VYSVARdRr3&X^W^MG z{isBVY&nw9g-*3FDWF|RKoId{DF7O(HD_FDbW3~c|E`~bHsqL#0J*`MHP%<*4YCr%c@t_5?C-U zUU)NOy~VuSx5T+Vb5QJW;sWx9jAEwQGLb?9CBf@J5w*WeQMN6iN(`s_rZv>M z@va+B#_Uh~CDpFPCHYiYZZGL3jYr59)48Q@K3LlNj%I6MLC)|lO(paTMVlao)g-pHgu8&)0%(`fjl2?9mIh@thq{wMedjK) zUzm|!<&~Hq4w6012Dr*ypjo*5Px4BAYuj>v3E#z3uIvPsmKlDrb)q3)pVz9px*7w}#y+?~9s zh}cBOc_qY80k&7#k7&`n9jum6o5~&WFJ`PnEiv>XhFe~#TttegNKY9`c;Aivi0$U_ z`bs$*SH}gWqVkncH(QU~@gok2uVbbWQ{8O!obe;}$+BYtuA(ZDlYYcga+!(1%u3~< zlYYc4@^Cu?vu%}4C;f;W(hu|k+<~dAx#&mq>DYFN?#fk89P}eD(*>qWv{Iw;&_O@q zF@4HEfU0-2A2D#lkEoi8=<3~9wW7QDenj7(zVyE=0hYiue)RGjAN$3HX$J%r z(T7JL5-Gl0@p3q*IWV|Qz36_#$fy9lOWd#r z*m1>=NIp?{!=C86fUxI?ACV~2PrELVoj4ZVkGN)HhZ+#wSs+$S{D|e#GkSO5Q5|~_ z(pVEHn!$ZSyxCO89(JDd5F*B9x98MOyEsvuz3@Qc_H-QC*^BP>hH&<$xyMc9uHe0S z2SD7o>}XGW*#WR&))f*jF+1F(S^SL$hMhuT@cxr`Hw?qSAY6U#W#Hm}N0Wiq~o^IpREz!Vex=r~Lk9vIG1i-{2d1GGB6pf`pzdIIDKfYBlKVi0Z&Z=6jsdy%TXgZ@?Ezas*E4E`M@6 z?KW%8WUC(zfywRkG=KTp;q-~tm1Zm>K08T05(i(zG=GKnvpT~X0rwb<514)P*2nJ| zp@hPKcx3R$A!*H~4%RX4Dl}mKti(+${?HVk`&&$E(S1gRUglB}F5??Q3H?gC4Oi3w z%ZGV);#EU0+%B_Fq9IB)A)0BnKr5|e8}uA{OQ9%eH*Az(-^365>HnZa>Wjzvjaezd zzRKwSKYSf>5&p_7m3aMP21)lr7b2!ivtPWnRf0Vc-$$>$=&NYGC%%m*%vuRqv*AH$ znU(p$V}xW@0rhRrN;F={WOn}9_7Txho8E7{Z6Hdpn?$@jB*=^`yk)2o zl8O9vK(5)@;|fU^m}6vEu38V39Vo2?9W|3Rz`5Iu^H+Rr4qm(c{3?7=7-bVBT7pV6 zen@jAa%wzWPWY6urBx-Z_V4PjS}QylknV*a4OodOkL3c=A9?`k)=@j+JZ=S5MAD1x zy&mUbZ(JD}MW@5Z3{XPhb0!}`$6FXWa>dF%GeilMFEUf}>)wJ;_hokcg<(ple2f=L zieEy+9~r8I%Em7#7UBcx{1Re=0ZLFAR?E@bD|Z>T$c&0sf|eq4(w~2qwLT#Pssy`@ zWfVH|oaRhM_gD%6C_%@H_}Fup6}Jts3uTnYC0k_)1B&pFO|TyXiAk>E5?jn?fDH0vbS~i~?dkP|jlH zu|d$;`Pa|3POeCt%{g!;l|a z=nbGpPYtpiO5ii;kZg@7^a{``t;)!j&4Z8fS+cRJhMoa>cUvZ#yqyA{q_$vx{rNq$*2yt?>@{n;6`2pmp*l}Ky(z{9EEV-K|r$eWRJOOgmnwa!Xj#lrt0LcRbw(_XL0!J?NL;2?9EW#qVe)sQzp{^~VGE7Hxb3LdE4W|~&8S{(%d6rnh2 z&?+Sw@2c)9#G?wWYD|hK1fU?-52y42J8M=_@B^tz^Ni64rw`XC3ZO80X`#?3EPWo& z<+tF!w(`07d79BDic!*096*uu*}|kR6b`Z*o3Z18l*%O4w<}0yQqtf!wz-i#D9{(o z#Y{(`07biRKQr=#J-6>sI6xl^>(#PCt|;YdeTaSl^of2mHTsNxfc1^(jgEc+^pie+ z8P_iU$lnd2UmL&7b@UZr0JM2&)b1GNi=L?{|FSSeG0omZ+32)KvzrzM0WcJn2up+| h!V+PLutZqGo4+)D2|XZ8nt1>K002ovPDHLkV1g;Co__!U literal 0 HcmV?d00001 diff --git a/example-apps/ROBO/deployment/smartshelf-deployment.yaml b/example-apps/ROBO/deployment/smartshelf-deployment.yaml new file mode 100644 index 0000000..8ceb09d --- /dev/null +++ b/example-apps/ROBO/deployment/smartshelf-deployment.yaml @@ -0,0 +1,217 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: robo-deployment +spec: + replicas: 2 + selector: + matchLabels: + app: robo + template: + metadata: + labels: + app: robo + spec: + containers: + - name: robo + image: ealtedge/robo + ports: + - containerPort: 80 +--- +apiVersion: v1 +kind: Service +metadata: + name: robo-service +spec: + type: NodePort + selector: + app: robo + ports: + - protocol: "TCP" + port: 8000 + targetPort: 80 + nodePort: 30001 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backup-be +spec: + replicas: 1 + selector: + matchLabels: + app: backup + template: + metadata: + labels: + app: backup + spec: + volumes: + - name: task-pv-storage + persistentVolumeClaim: + claimName: task-pv-claim + containers: + - name: backup-be + image: ealtedge/robo-be + env: + - name: KUBE_CONFIG + value: "/usr/app/.kube/config" + - name: HOSTIP + value: "159.138.129.53" + ports: + - containerPort: 8091 + volumeMounts: + - name: task-pv-storage + mountPath: "/usr/app/.kube/" +--- +apiVersion: v1 +kind: Service +metadata: + name: backup-be +spec: + selector: + app: backup + type: NodePort + ports: + - port: 8091 + name: service-port + nodePort: 30081 +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: task-pv-volume + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 1Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/root/.kube/" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: task-pv-claim +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: inventory-be + namespace: my-test +spec: + replicas: 1 + selector: + matchLabels: + app: inventory + template: + metadata: + labels: + app: inventory + spec: + containers: + - name: inventory-be + image: ealtedge/inventory-be:v1.3 + env: + - name: INFLUXDB_IP + value: "159.138.129.53" + - name: INFLUXDB_PORT + value: "30270" + - name: OBJ_DET_SER_IP + value: "159.138.129.53" + - name: OBJ_DET_SER_PORT + value: "30093" + ports: + - containerPort: 9995 +--- +apiVersion: v1 +kind: Service +metadata: + name: inventory-be + namespace: my-test +spec: + selector: + app: inventory + type: NodePort + ports: + - port: 9995 + name: service-port + nodePort: 30092 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: obj-detection +spec: + replicas: 1 + selector: + matchLabels: + app: detection + template: + metadata: + labels: + app: detection + spec: + containers: + - name: obj-detection + image: ealtedge/obj-detection + ports: + - containerPort: 9999 + volumeMounts: + - name: host-path-storage + mountPath: "/usr/app/model/" + volumes: + - name: host-path-storage + persistentVolumeClaim: + claimName: host-path-claim +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: host-path-pv + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 2Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/root/model/" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: host-path-claim +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: obj-detection +spec: + selector: + app: detection + type: NodePort + ports: + - port: 9999 + name: service-port + nodePort: 30093 -- 2.16.6