Skip to content

Commit f50ca9b

Browse files
authored
Documentation update (#1109)
* Documentation update
1 parent ddbc38e commit f50ca9b

18 files changed

+373
-20
lines changed

docs-source/site/docs/deploy/dbaccess.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,23 @@ Create a secret with database access information. This secret is used by the app
1616

1717
For example if you have the following information:
1818

19-
- name: `Your database name`. For example `helmdb`
20-
- username: `Your database user name`. For example `phonebook`
21-
- password: `Your database user password`. For example `Welcome-12345`
22-
- service: `Your servicename`. For example `helmdb_tp`
19+
- `db.name:` Your database name. For example `helmdb`
20+
- `db.username:` Your database user name. For example `phonebook`
21+
- `db.password:` Your database user password. For example `Welcome-12345`
22+
- `db.service:` Your servicename. For example `helmdb_tp`
23+
- `db.lb_username` Your Liquibase username.
24+
- `db.lb_password` Your Liquibase user password.
2325

2426
Create a Kubernetes secret (in this example, `phonebook-db-secrets` in the `obaas-dev` namespace):
2527

2628
```bash
2729
kubectl -n obaas-dev create secret generic phonebook-db-secrets \
28-
--from-literal=name=helmdb \
29-
--from-literal=username=phonebook \
30-
--from-literal=password=Welcome-12345 \
31-
--from-literal=service=helmdb_tp
30+
--from-literal=db.name=helmdb \
31+
--from-literal=db.username=phonebook \
32+
--from-literal=db.password=Welcome-12345 \
33+
--from-literal=db.service=helmdb_tp \
34+
--from-literal=db.lb_username=phonebook \
35+
--from-literal=db.lb_password=Welcome-12345
3236
```
3337

3438
You can verify the values by running the following command (this is for the `username` value):
@@ -70,7 +74,7 @@ args:
7074
sql $(DB_USER)/$(DB_PASSWORD)@$(TNS_ALIAS) @/tmp/run.sql
7175
```
7276

73-
Update the `env:` section to reference the correct secret and keys (here using `obaas-db-secrets`):
77+
Update the `env:` section to reference the correct secret and keys (here using `obaas-db-secrets`, this is not the same secret as been created above.):
7478

7579
```yaml
7680
env:

docs-source/site/docs/observability/acces.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ sidebar_position: 2
44
---
55
## How to access SigNoz
66

7-
1. Get the _admin_ email and password for SigNoz
7+
1. Get the _admin_ email and password for SigNoz. Replace the example namespace `observability` with the namespace where SigNoz is deployed.
88

99
```shell
1010
kubectl -n observability get secret signoz-authn -o jsonpath='{.data.email}' | base64 -d
1111
kubectl -n observability get secret signoz-authn -o jsonpath='{.data.password}' | base64 -d
1212
```
1313

14-
1. Expose the SigNoz user interface (UI) using this command:
14+
1. Expose the SigNoz user interface (UI) using this command. Replace the example namespace `observability` with the namespace where SigNoz is deployed:
1515

1616
```shell
1717
kubectl -n observability port-forward svc/obaas-signoz-frontend 3301:3301
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Spring Boot Admin
3+
sidebar_position: 9
4+
---
5+
## Spring Boot Admin
6+
7+
Spring Boot Admin works by registering Spring Boot applications that expose Actuator endpoints. Each application's health and metrics data is polled by Spring Boot Admin Server, which aggregates and displays this information in a web dashboard. The registered applications can either self-register or be discovered using service discovery tools like Eureka or Consul. Through the dashboard, users can monitor the health, memory usage, logs, and more for each application, and even interact with them via management endpoints for tasks like restarting or updating configurations.
8+
9+
[Spring Boot Admin Documentation](https://docs.spring-boot-admin.com/3.5.5/docs/installation-and-setup/)
10+
11+
### Installing Spring Boot Admin
12+
13+
Spring Boot Admin will be installed if the `admin-server.enabled` is set to `true` in the `values.yaml` file. The default namespace for Spring Boot Admin is `admin-server`.
14+
15+
### Access Spring Boot Admin Web Interface
16+
17+
To access the Spring Boot Admin Web Interface, use kubectl port-forward to create a secure channel to `service/admin-server`. Run the following command to establish the secure tunnel (replace the example namespace `obaas-dev` with the namespace where the Spring Boot Admin Server is deployed):
18+
19+
```shell
20+
kubectl port-forward -n obaas-dev svc/admin-server 8989
21+
```
22+
23+
Open the [Spring Boot Admin dashboard](http://localhost:8989)
24+
25+
![Spring Boot Admin Server](images/admin-server.png)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: Apache APISIX
3+
sidebar_position: 1
4+
---
5+
## Apache APISIX
6+
7+
[Apache APISIX](https://apisix.apache.org) is an open source cloud native API platform that supports the full lifecycle of API management including publishing, traffic management, deployment strategies, and circuit breakers.
8+
9+
### Installing APISIX
10+
11+
Apache APISIX will be installed if the `apisix.enabled` is set to `true` in the `values.yaml` file. The default namespace for Apache APISIX is `apisix`.
12+
13+
### Accessing Apache APISIX
14+
15+
Oracle Backend for Microservices and AI deploys the Apache APISIX Gateway and Dashboard in the `apisix` namespace by default. The gateway is exposed via an external load balancer and an ingress controller.
16+
17+
To access the Apache APISIX APIs, use kubectl port-forward to create a secure channel to `service/apisix-admin`. Run the following command to establish the secure tunnel (replace the example namespace `obaas-dev` with the namespace where APISIX is deployed):
18+
19+
```shell
20+
kubectl port-forward -n obaas-dev svc/apisix-admin 9180
21+
```
22+
23+
### Retrieving admin key
24+
25+
To access the APISIX APIs, you need the admin key. Retrieve it with the following command (replace the example namespace `obaas-dev` with the namespace where APISIX is deployed):
26+
27+
```shell
28+
export admin_key=$(kubectl -n obaas-dev get configmap apisix -o yaml | yq '.data."config.yaml"' | yq '.deployment.admin.admin_key[] | select(.name == "admin") | .key')
29+
```
30+
31+
Test the admin key by running a simple curl command; it should return the list of configured routes.
32+
33+
```shell
34+
curl http://127.0.0.1:9180/apisix/admin/routes -H "X-API-key: $admin_key" -X GET
35+
```
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
title: Conductor Workflow Orchestration
3+
sidebar_position: 2
4+
---
5+
## Conductor
6+
7+
:::important
8+
Conductor will be replaced with Oracle Transaction Manager for Microservices, which will include the Conductor Server as a component of the product
9+
:::
10+
11+
Conductor is a workflow orchestration platform, originally developed at Netflix, designed to coordinate long-running, distributed workflows across microservices by defining tasks, dependencies, and retries, while providing scalability, fault tolerance, and operational visibility through a centralized engine.
12+
13+
[Conductor OSS Documentation](https://docs.conductor-oss.org)
14+
15+
### Installing Conductor
16+
17+
Conductor will be installed if the `conductor-server.enabled` is set to `true` in the `values.yaml` file. The default namespace for Conductor is `conductor-server`.
18+
19+
### API Specification
20+
21+
[API Specification](https://docs.conductor-oss.org/documentation/api/index.html)
22+
23+
### Accessing Conductor APIs
24+
25+
To access the Conductor APIs, use kubectl port-forward to create a secure channel to `service/conductor-server`. Run the following command to establish the secure tunnel (replace the example namespace `obaas-dev` with the namespace where the Conductor Server is deployed):
26+
27+
```shell
28+
kubectl port-forward -n obaas-dev svc/conductor-server 8080
29+
```
30+
31+
### Testing the Conductor service
32+
33+
You can test the Conductor service by running the sample workflow provided. Save the content into a file called `first_simple_workflow.json` and then execute the following command:
34+
35+
```shell
36+
curl -X POST 'http://localhost:8080/api/metadata/workflow' \
37+
-H 'Content-Type: application/json' \
38+
-d @first_sample_workflow.json
39+
```
40+
41+
```json
42+
43+
{
44+
"name": "first_sample_workflow",
45+
"description": "First Sample Workflow",
46+
"version": 1,
47+
"tasks": [
48+
{
49+
"name": "get_population_data",
50+
"taskReferenceName": "get_population_data",
51+
"inputParameters": {
52+
"http_request": {
53+
"uri": "https://restcountries.com/v3.1/name/united%20states?fields=name,population",
54+
"method": "GET"
55+
}
56+
},
57+
"type": "HTTP"
58+
}
59+
],
60+
"inputParameters": [],
61+
"outputParameters": {
62+
"data": "${get_population_data.output.response.body.data}",
63+
"source": "${get_population_data.output.response.body.source}"
64+
},
65+
"schemaVersion": 2,
66+
"restartable": true,
67+
"workflowStatusListenerEnabled": false,
68+
"ownerEmail": "[email protected]",
69+
"timeoutPolicy": "ALERT_ONLY",
70+
"timeoutSeconds": 0
71+
}
72+
73+
```
74+
75+
Execute the workflow by using this command and capture the Workflow ID:
76+
77+
```shell
78+
WORKFLOW_ID=$(curl -s -X POST 'http://localhost:8080/api/workflow/first_sample_workflow' \
79+
-H 'Content-Type: application/json' \
80+
-d '{}' | tr -d '"')
81+
```
82+
83+
Check the Workflow IS, should return a string similar to this `46cbbaef-7133-451b-9334-2ccfc4e270c5`
84+
85+
```shell
86+
echo "Workflow ID: $WORKFLOW_ID"
87+
```
88+
89+
Check status of the Workflow, will return the data from https://restcountries.com/v3.1/name/united%20states?fields=name,population.
90+
91+
```shell
92+
curl -s -X GET "http://localhost:8080/api/workflow/$WORKFLOW_ID" | jq
93+
```
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
title: Oracle Database Metrics Exporter
3+
sidebar_position: 3
4+
---
5+
## Oracle Database Metrics Exporter
6+
7+
This project provides observability for Oracle Database, helping users understand performance and diagnose issues across applications and the database. Over time, it will expand beyond metrics to include logging, tracing, and integrations with popular frameworks such as Spring Boot. It targets both cloud and on-premises deployments, including databases running in Kubernetes and containers
8+
9+
[Full documentation](https://github.com/oracle/oracle-db-appdev-monitoring).
10+
11+
### Installing Oracle Database Metrics Exporter
12+
13+
Oracle Database Metrics Exporter will be installed if the `oracle-database-exporter.enabled` is set to `true` in the `values.yaml` file. The default namespace for Conductor is `oracle-database-exporter`.
14+
15+
### Oracle Database Grafana Dashboard
16+
17+
![Oracle Database Dashboard](images/exporter-running-against-basedb.png)
18+
19+
### Transactional Event Queue Grafana Dashboard
20+
21+
![Oracle Database Dashboard](images/txeventq-dashboard-v2.png)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: Oracle Database Operator for Kubernetes
3+
sidebar_position: 4
4+
---
5+
## Oracle Database Operator for Kubernetes
6+
7+
The Oracle Database Operator for Kubernetes (_OraOperator_, or simply the _operator_) extends the Kubernetes API with custom resources and controllers to automate Oracle Database lifecycle management.
8+
9+
[Full Documentation](https://github.com/oracle/oracle-database-operator).
10+
11+
Learn about using the OraOperator in the Livelab [Microservices and Kubernetes for an Oracle DBA](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=3734)
12+
13+
### Installing the Oracle Database Operator for Kubernetes
14+
15+
Oracle Database Operator for Kubernetes will be installed if the `oracle-database-operator.enabled` is set to `true` in the `values.yaml` file. The default namespace for Conductor is `oracle-database-exporter-system`.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: External Secrets Operator
3+
sidebar_position: 5
4+
---
5+
## External Secrets Operator
6+
7+
:::important
8+
The External Secrets Operator is a pre-requisite for Oracle Backend for Microservices and AI
9+
:::
10+
11+
External Secrets Operator is a Kubernetes operator that integrates external secret management systems like OCI Vault, AWS Secrets Manager,
12+
HashiCorp Vault, Google Secrets Manager, Azure Key Vault and many more. The operator reads information from external APIs and automatically injects the values into a Kubernetes Secret.
13+
14+
Full [documentation](https://external-secrets.io/latest/)
15+
16+
![External Secrets Operator](images/diagrams-high-level-simple.png)
17+
18+
### Installing External Secrets Operator
19+
20+
External Secrets Operator will be installed if the `external-secrets.enabled` is set to `true` in the `values.yaml` file. The default namespace for External Secrets Operator is `external-secrets`.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
title: Spring Boot Eureka Server
3+
sidebar_position: 6
4+
---
5+
## Spring Boot Eureka Server
6+
7+
Oracle Backend for Microservices and AI includes the Spring Boot Eureka service registry, which stores information about client services. Typically, each microservice registers with Eureka at startup. Eureka maintains a list of all active service instances, including their IP addresses and ports. Other services can look up this information using a well-known key, enabling service-to-service communication without hardcoding addresses at development or deployment time.
8+
9+
### Installing Spring Boot Eureka Server
10+
11+
Spring Boot Eureka Server will be installed if the `eureka.enabled` is set to `true` in the `values.yaml` file. The default namespace for Spring Boot Eureka Server is `eureka`.
12+
13+
### Access Eureka Web User Interface
14+
15+
To access the Eureka Web User Interface, use kubectl port-forward to create a secure channel to `service/eureka`. Run the following command to establish the secure tunnel (replace the example namespace `obaas-dev` with the namespace where the Spring Boot Eureka Server is deployed):
16+
17+
```shell
18+
kubectl port-forward -n obaas-dev svc/eureka 8761
19+
```
20+
21+
Open the [Eureka web user interface](http://localhost:8761)
22+
23+
![Eureka Web User Interface](images/eureka-web.png)
24+
25+
### Enable a Spring boot application for Eureka
26+
27+
To Spring boot application you need to add the following dependency
28+
29+
```xml
30+
<dependency>
31+
<groupId>org.springframework.cloud</groupId>
32+
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
33+
</dependency>
34+
```
35+
36+
And to configure the application to register with Eureka add the following to the `application.yaml` file. The variables in this configuration are automatically injected to your deployment and pods you deploy applications to Oracle Backend for Microservices and AI using the OBaaS deployment Helm chart.
37+
38+
```yaml
39+
eureka:
40+
instance:
41+
hostname: ${spring.application.name}
42+
preferIpAddress: true
43+
client:
44+
service-url:
45+
defaultZone: ${eureka.service-url}
46+
fetch-registry: true
47+
register-with-eureka: true
48+
enabled: true
49+
```
50+
51+
### Enable a Helidon application for Eureka
52+
53+
To Spring boot application you need to add the following dependency
54+
55+
```xml
56+
<dependency>
57+
<groupId>io.helidon.integrations.eureka</groupId>
58+
<artifactId>helidon-integrations-eureka</artifactId>
59+
<scope>runtime</scope>
60+
</dependency>
61+
```
62+
63+
And to configure the application to register with Eureka add the following to the `aaplication.yaml` file:
64+
65+
```properties
66+
server.features.eureka.enabled=true
67+
server.features.eureka.instance.name=${eureka.instance.hostname}
68+
server.features.eureka.client.base-uri=${eureka.client.service-url.defaultZone}
69+
server.features.eureka.client.register-with-eureka=true
70+
server.features.eureka.client.fetch-registry=true
71+
server.features.eureka.instance.preferIpAddress=true
72+
```
109 KB
Loading

0 commit comments

Comments
 (0)