Skip to content

Commit 62ea2ce

Browse files
phemankitaAndrew Trice
andauthored
update storefront usecase (#475)
* Update container-image-security-enforcement.md Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * adding storefront usecase Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * adding storefront usecase Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * spell check fixes Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * spell fixes Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * update docs Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * resolving conflicts Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * rm package lock Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * update docs Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * revert the lock file Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> * fixing spells Signed-off-by: Hemankita Perabathini <phemankita@gmail.com> Co-authored-by: Andrew Trice <amtrice@us.ibm.com>
1 parent c6ef994 commit 62ea2ce

File tree

6 files changed

+53
-5
lines changed

6 files changed

+53
-5
lines changed

docs/adopting/use-cases/applying.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
Add additional use cases
55

66
- [Create an operator](operator/operator.md) : Shows how the toolkit can be used to create an operator
7-
- Quarkus :
8-
- [Deploy StoreFront - Quarkus Version](https://cloudnativereference.dev/deployments/quarkus)
9-
- [Git tracking for StoreFront Quarkus](https://github.com/ibm-garage-cloud/planning/issues/705)
7+
- [StoreFront - Quarkus Version](storefront/storefront.md): Exemplar application for developers to understand the cloud native toolkit and use cases on Red Hat OpenShift.
108
- [App Connect REST API Workflow](ace-pipeline/ace-pipeline.md)
119

1210
If you have requirements not supported by the Toolkit you can extend the toolkit by [adding a new use case](add-use-case.md)
439 KB
Loading
131 KB
Loading
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Storefront - Cloud Native Exemplar
2+
3+
<!--- cSpell:ignore CICD cntk pipelinerun Omni Frontends cloudnative -->
4+
5+
Exemplar application for developers to understand the cloud native toolkit and use cases on Red Hat OpenShift.
6+
7+
## Build and deploy a cloudnative reference implementation using Cloud native toolkit
8+
9+
This provides a working example of a Tekton based CICD pipeline to build and deploy a [StoreFront](https://cloudnativereference.dev/). The Pipeline and Task resources available in [Cloud Native Toolkit](https://cloudnativetoolkit.dev/) can be used to deploy different microservices that are part of this application.
10+
11+
### Prerequisites
12+
13+
| Task | Instructions |
14+
| ---------------------------------| -----------------------------------------|
15+
| Active OpenShift 4.x Cluster | |
16+
| Set up accounts and tools | [Instructions](../../../overview/prerequisites.md) |
17+
| Install the Cloud Native Toolkit | [Install the Cloud Native Toolkit](../../../setup/setup-options.md) |
18+
19+
### Deploy the StoreFront
20+
21+
Get started with deploying a simple retail application, Storefront using Cloud Native Toolkit. The Storefront application implements a simple shopping application that displays a catalog of antique computing devices. People can search for and buy products from the application’s web interface.
22+
23+
The logical architecture for this reference implementation is shown in the picture below.
24+
25+
![Architecture](images/storefront.png)
26+
27+
This application has a web interface that relies on separate BFF (Backend for Frontend) services to interact with the backend data.
28+
29+
These are several components of this architecture.
30+
31+
- This OmniChannel application contains an [AngularJS](https://angularjs.org/) based web application.
32+
- The Web app invokes its own backend Microservice to fetch data, we call this component BFFs following the [Backend for Frontends](http://samnewman.io/patterns/architectural/bff/) pattern. The Web BFF is implemented using the Node.js Express Framework.
33+
- The BFFs invokes another layer of reusable Java Microservices. The reusable microservices are written in Java using [Quarkus](https://quarkus.io/) framework.
34+
- The Java Microservices are as follows:
35+
- The [Inventory Service](https://cloudnativereference.dev/related-repositories/inventory) uses an instance of [MySQL](https://www.mysql.com/) to store the inventory items.
36+
- The [Catalog service](https://cloudnativereference.dev/related-repositories/catalog) retrieves items from a searchable JSON data source using [ElasticSearch](https://www.elastic.co/).
37+
- [Keycloak](https://cloudnativereference.dev/related-repositories/keycloak) delegates authentication and authorization.
38+
- The [Customer service](https://cloudnativereference.dev/related-repositories/customer) stores and retrieves Customer data from a searchable JSON data source using [CouchDB](http://couchdb.apache.org/).
39+
- The [Orders Service](https://cloudnativereference.dev/related-repositories/orders) uses an instance of [MariaDB](https://mariadb.org/) to store order information.
40+
41+
### Deploy the Storefront using Cloud native toolkit
42+
43+
Follow the below guide for instructions on how to deploy all the microservices of StoreFront onto Openshift using Cloud native toolkit.
44+
45+
[Cloud native toolkit - StoreFront Quarkus version](https://cloudnativereference.dev/deployments/cntk-quarkus)
46+
47+
To get an idea, here is a view of a completed and successful pipeline runs for all the microservices.
48+
49+
![Pipeline run](images/sf_pipelines.png)

docs/reference/tools/container-image-security-enforcement.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ skopeo --sign-by <KEY_FINGERPRINT> copy ${IMAGE_FROM_CREDS} docker://${IMAGE_FRO
130130
```
131131

132132
!!!note
133-
On Linux® and macOS: The default configuration for the signing tools is to store the signatures locally. Storing signatures locally can lead to signature verification failure because the signature is not in the registry. To fix this problem, you can modify or delete the configuration file. On Linux®, the configuration is saved in /etc/containers/registries.d/default.yaml. On macOS, the configuration file is saved in /usr/local/etc/containers/registries.d/default.yaml. If you sign images in your container registry, yet your deployments are failing with the message `policy denied the request: A signature was required, but no signature exists`, then the default configuration is likely saving your image signatures locally instead of pushing the signature to the registry API server and you need to modify the tools configuration.
133+
On Linux® and macOS: The default configuration for the signing tools is to store the signatures locally. Storing signatures locally can lead to signature verification failure because the signature is not in the registry. To fix this problem, you can modify or delete the configuration file. On Linux®, the configuration is saved in /etc/containers/registries.d/default.yaml. On macOS, the configuration file is saved in /usr/local/etc/containers/registries.d/default.yaml. If you sign images in your container registry, yet your deployments are failing with the message `policy denied the request: A signature was required, but no signature exists`, then the default configuration is likely saving your image signatures locally instead of pushing the signature to the registry API server and you need to modify the tools configuration.
134134

135135

136136

@@ -170,7 +170,7 @@ The [toolkit's 8-image-release.yaml](https://github.com/IBM/ibm-garage-tekton-ta
170170

171171
## Impact to Kubernetes yaml or helm charts
172172

173-
The Portieris image signing tools require an explicit specifcation which image pull secrets should be used to retrieve the signature/trust data. You deployment must specify an `imagePullSecret` value, or else the trust/verification will fail.
173+
The Portieris image signing tools require an explicit specification which image pull secrets should be used to retrieve the signature/trust data. You deployment must specify an `imagePullSecret` value, or else the trust/verification will fail.
174174

175175

176176
## Additional Information

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ nav:
177177
- App Connect REST API workflow: adopting/use-cases/ace-pipeline/ace-pipeline.md
178178
- GitOps with Toolkit: adopting/use-cases/gitops/gitops-toolkit.md
179179
- GitOps with App Connect: adopting/use-cases/gitops/gitops-ace.md
180+
- Storefront - Cloud Native Exemplar: adopting/use-cases/storefront/storefront.md
180181
- Reference:
181182
- Reference: reference/reference.md
182183
- Command Line Tool: reference/cli.md

0 commit comments

Comments
 (0)