Compare commits
2 commits
61e63e56ef
...
5450db4d3d
Author | SHA1 | Date | |
---|---|---|---|
5450db4d3d | |||
559cff4d28 |
1 changed files with 65 additions and 1 deletions
|
@ -1 +1,65 @@
|
||||||
patrick
|
## Spring's PetClinic
|
||||||
|
|
||||||
|
The [PetClinic](https://github.com/spring-projects/spring-petclinic) has been
|
||||||
|
Spring's example project for years and is being updated with each new version
|
||||||
|
of the framework. It consists of a simple, old-school Java webapp and a
|
||||||
|
PostgreSQL relational database for persistence.
|
||||||
|
|
||||||
|
Within the IDP the PetClinic backstage template creates a copy of the PetClinic
|
||||||
|
code, builds and deploys it. This demonstrates a golden path to set up an
|
||||||
|
entire development and deployment pipeline of an example or starter
|
||||||
|
application.
|
||||||
|
|
||||||
|
### Instance Creation
|
||||||
|
|
||||||
|
To instantiate a new PetClinic instance, create a new project from the
|
||||||
|
PetClinic template in [Backstage](https://cnoe.localtest.me/create). The
|
||||||
|
template executes the following steps:
|
||||||
|
|
||||||
|
1. Download the app source code from the given code repository
|
||||||
|
1. Apply overrides for compatibility with Forgejo Actions.
|
||||||
|
1. Create a new git repository in Forgejo and push the merged code.
|
||||||
|
1. Create a new deployment in ArgoCD.
|
||||||
|
|
||||||
|
|
||||||
|
After the code is pushed into Forgejo the configured workflows in the git
|
||||||
|
repository are triggered. They compile, test and scan the project and finally
|
||||||
|
push a container image into Forgejo's internal container registry.
|
||||||
|
|
||||||
|
At the same time, ArgoCD starts deploying the newly created instance of the
|
||||||
|
PetClinic based on the kubernetes manifests located in the git repo. However,
|
||||||
|
as the application is built from source, the webapp only becomes available as
|
||||||
|
soon as the container image of the Java app is pushed into the container
|
||||||
|
registry.
|
||||||
|
|
||||||
|
Eventually, the new PetClinic will go live on a subdomain corresponding to the
|
||||||
|
chosen name in the template, e.g.
|
||||||
|
[mypetclinic.cnoe.localtest.me](https://mypetclinic.cnoe.localtest.me).
|
||||||
|
|
||||||
|
### Build Customizations
|
||||||
|
|
||||||
|
The existing GitHub Actions workflows in the upstream PetClinic are overwritten
|
||||||
|
by the app template as they are not 100% compatible with Forgejo Actions. This
|
||||||
|
affects predominantly the coordinates of actions as Forgejo can download
|
||||||
|
actions from other platforms and defaults to actions hosted on
|
||||||
|
`code.forgejo.org`. Thus, actions from GitHub have to be marked as such
|
||||||
|
specifically to be found.
|
||||||
|
|
||||||
|
Furthermore, the current runner setup does not support nested containerization,
|
||||||
|
yet. Consequently, all container image builds and interactions avoid the need
|
||||||
|
for a container engine and opt for alternative tooling such as Google Jib or
|
||||||
|
evaluating tarballs of image layers.
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
|
||||||
|
ArgoCD creates a synchronized deployment from the resources in the git
|
||||||
|
repository into a dedicated namespace. It contains the deployment of a
|
||||||
|
PostgreSQL database and the PetClinic Java app, as well as Ingress and
|
||||||
|
monitoring definitions.
|
||||||
|
|
||||||
|
The Prometheus instance included in the IDP stack is instructed to scrape data
|
||||||
|
from exposed monitoring endpoints on the Java application. The gathered data
|
||||||
|
can be analyzed in Grafana. Fitting dashboards are currently not part of the
|
||||||
|
deployment but can be easily imported from Grafana Cloud, board
|
||||||
|
[4701](https://grafana.com/grafana/dashboards/4701-jvm-micrometer/) is quite
|
||||||
|
capable of displaying JVM stats provided by Spring Boot's default monitoring.
|
||||||
|
|
Loading…
Reference in a new issue