|
|
|
|
@@ -1,7 +1,7 @@
|
|
|
|
|
---
|
|
|
|
|
title: "sonar-test-nest4"
|
|
|
|
|
generated_by: documentor-agent
|
|
|
|
|
generated_at: "2026-05-15T15:21:00+00:00"
|
|
|
|
|
generated_at: "2026-05-21T08:45:51+00:00"
|
|
|
|
|
human_edited: false
|
|
|
|
|
source_entity: "Component/default/sonar-test-nest4"
|
|
|
|
|
source_repo: "https://gitea.kyndemo.live/validate/sonar-test-nest4"
|
|
|
|
|
@@ -11,20 +11,20 @@ source_repo: "https://gitea.kyndemo.live/validate/sonar-test-nest4"
|
|
|
|
|
|
|
|
|
|
`sonar-test-nest4` is a stateless microservice built using the `typescript-nestjs` runtime. It was scaffolded from the **Create Microservice** golden-path template on the Kyndryl Platform. The service provides a REST API for managing items, including endpoints for CRUD operations. It is designed to be lightweight, scalable, and observable, with integrated OpenTelemetry instrumentation and Prometheus metrics.
|
|
|
|
|
|
|
|
|
|
This service plays a key role in the broader system by offering item management capabilities. It is deployed on Azure Kubernetes Service (AKS) via Humanitec's Score-based deployment model, with container images stored in Azure Container Registry (ACR). The CI/CD pipeline is managed through Gitea Actions, ensuring automated builds, tests, and deployments across development, staging, and production environments.
|
|
|
|
|
This service plays a critical role in the demo-apps domain, serving as a testbed for platform capabilities such as CI/CD pipelines, observability, and load testing. It is managed via Humanitec and deployed to Azure Kubernetes Service (AKS) using Score-based configurations.
|
|
|
|
|
|
|
|
|
|
## Repository
|
|
|
|
|
|
|
|
|
|
| Field | Value |
|
|
|
|
|
|----------------|------------------------------------------------------------------------------------------------------------------------------------|
|
|
|
|
|
| Source Repo | [validate/sonar-test-nest4](https://gitea.kyndemo.live/validate/sonar-test-nest4) |
|
|
|
|
|
| Source Repo | [sonar-test-nest4](https://gitea.kyndemo.live/validate/sonar-test-nest4) |
|
|
|
|
|
| Branch | `dev` |
|
|
|
|
|
| ArgoCD App | — |
|
|
|
|
|
| Namespace | `dev` |
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
`sonar-test-nest4` follows a stateless architecture and is deployed as a containerized service. Key components include:
|
|
|
|
|
`sonar-test-nest4` follows a modern microservice architecture with the following components:
|
|
|
|
|
|
|
|
|
|
- **Runtime**: `typescript-nestjs`
|
|
|
|
|
- **Container Port**: `3000`
|
|
|
|
|
@@ -32,43 +32,41 @@ This service plays a key role in the broader system by offering item management
|
|
|
|
|
- `/api/items` for CRUD operations
|
|
|
|
|
- `/health` for health checks
|
|
|
|
|
- `/metrics` for Prometheus metrics
|
|
|
|
|
- **Deployment Flow**:
|
|
|
|
|
- Push to `dev`, `staging`, or `prod` triggers CI/CD workflows:
|
|
|
|
|
- `build-push.yml`: Builds and tests the application, then pushes the container image to Azure Container Registry.
|
|
|
|
|
- `deploy-humanitec.yml`: Deploys the service to AKS using Humanitec's API.
|
|
|
|
|
- **Branch Model**:
|
|
|
|
|
- `dev`: Active development, auto-deploys to the dev environment.
|
|
|
|
|
- `staging`: Pre-production, promoted from `dev` via PR.
|
|
|
|
|
- `prod`: Production, promoted from `staging` via PR.
|
|
|
|
|
- `main`: System of record, receives merges from `prod`.
|
|
|
|
|
- **Deployment**:
|
|
|
|
|
- Images are built and pushed to Azure Container Registry (ACR).
|
|
|
|
|
- Humanitec API triggers deployments to AKS using Score-based configurations.
|
|
|
|
|
- **CI/CD**:
|
|
|
|
|
- Gitea Actions workflows (`build-push.yml` and `deploy-humanitec.yml`) automate build, test, and deployment processes.
|
|
|
|
|
- Promotion between environments (`dev → staging → prod`) is gated by CI checks and manual approvals.
|
|
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
|
|
| Config Key | Value |
|
|
|
|
|
|------------------|----------------|
|
|
|
|
|
| Config Key | Value |
|
|
|
|
|
|------------------|--------------------|
|
|
|
|
|
| `runtime` | `typescript-nestjs` |
|
|
|
|
|
| `health_path` | `/health` |
|
|
|
|
|
| `container_port` | `3000` |
|
|
|
|
|
| `health_path` | `/health` |
|
|
|
|
|
| `container_port` | `3000` |
|
|
|
|
|
|
|
|
|
|
Additional configuration options are managed via `.platform/config.yaml` and Humanitec score files.
|
|
|
|
|
|
|
|
|
|
## Operations
|
|
|
|
|
|
|
|
|
|
### Deployment Steps
|
|
|
|
|
### Deployment Flow
|
|
|
|
|
|
|
|
|
|
1. Push changes to the `dev` branch for automatic deployment to the dev environment.
|
|
|
|
|
2. Open a PR to promote changes from `dev` to `staging`. Ensure CI tests pass and obtain one approval.
|
|
|
|
|
3. Open a PR to promote changes from `staging` to `prod`. Ensure CI tests pass and obtain one approval.
|
|
|
|
|
4. Merge changes from `prod` to `main` for system-of-record updates.
|
|
|
|
|
1. Push changes to the `dev` branch to trigger automatic builds and deployments to the dev environment.
|
|
|
|
|
2. Promote changes to `staging` or `prod` via PRs, requiring CI checks and one approval.
|
|
|
|
|
3. Use Backstage's CI/CD tab to monitor and trigger promotions between environments.
|
|
|
|
|
|
|
|
|
|
### Runbook Notes
|
|
|
|
|
|
|
|
|
|
- Monitor `/health` for service status.
|
|
|
|
|
- Use `/metrics` for Prometheus-based observability.
|
|
|
|
|
- For load testing, refer to the K6 configuration in the `dev` namespace.
|
|
|
|
|
- **Health Check**: Verify service health via `/health`.
|
|
|
|
|
- **Metrics**: Access Prometheus metrics at `/metrics`.
|
|
|
|
|
- **Load Testing**: K6 is enabled for load testing, with configurations stored in the `k6-test-sonar-test-nest4` ConfigMap.
|
|
|
|
|
|
|
|
|
|
## Observability
|
|
|
|
|
|
|
|
|
|
- **Grafana Dashboard**: [Opentelemetry Application Observability](https://grafana.kyndemo.live/d/otel-app-observability-v2/opentelemetry-application-observability?orgId=1&var-app=sonar-test-nest4)
|
|
|
|
|
- **Prometheus Metrics**: Enabled at `/metrics` on port `3000`.
|
|
|
|
|
- **Grafana Dashboard**: [OpenTelemetry Application Observability](https://grafana.kyndemo.live/d/otel-app-observability-v2/opentelemetry-application-observability?orgId=1&var-app=sonar-test-nest4)
|
|
|
|
|
- **Prometheus Metrics**: Exposed at `/metrics` on port `3000`.
|
|
|
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
|
|
|