Skip to content

Commit 1533924

Browse files
committed
feat: send reqwest to the upstream server
1 parent 8c4af60 commit 1533924

14 files changed

Lines changed: 203 additions & 71 deletions

File tree

.compose/compose.otel.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
services:
2+
otel-collector:
3+
image: otel/opentelemetry-collector-contrib:latest
4+
command: ["--config=/etc/otel-collector-config.yaml"]
5+
volumes:
6+
- ./tracing/otel-collector-config.yaml:/etc/otel-collector-config.yaml
7+
ports:
8+
- "4317:4317" # OTLP gRPC receiver
9+
jaeger:
10+
image: jaegertracing/all-in-one:latest
11+
ports:
12+
- "6831:6831/udp" # UDP port for Jaeger agent
13+
- "16686:16686" # Web UI
14+
- "14268:14268" # HTTP port for spans
15+
prometheus:
16+
image: prom/prometheus:latest
17+
volumes:
18+
- ./tracing/prometheus.yml:/etc/prometheus/prometheus.yml
19+
ports:
20+
- "9090:9090"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
receivers:
2+
otlp:
3+
protocols:
4+
grpc:
5+
endpoint: 0.0.0.0:4317
6+
processors:
7+
extensions:
8+
health_check: {}
9+
exporters:
10+
otlp:
11+
endpoint: jaeger:4317
12+
tls:
13+
insecure: true
14+
prometheus:
15+
endpoint: "0.0.0.0:9090"
16+
service:
17+
pipelines:
18+
traces:
19+
receivers: [otlp]
20+
exporters: [otlp]
21+
metrics:
22+
receivers: [otlp]
23+
exporters: [prometheus]

.compose/tracing/prometheus.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
global:
2+
scrape_interval: 5s
3+
4+
scrape_configs:
5+
- job_name: 'otel-collector'
6+
static_configs:
7+
- targets: ['otel-collector:9090']

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"finalizer",
77
"proxykubeapis",
88
"proxys",
9+
"reqwest",
910
"schemars",
1011
"taskfile",
1112
"thiserror",

Cargo.lock

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ members = [
1515
[workspace.dependencies]
1616
actix-web = '4'
1717
tokio = { version = '1', features = ['macros', 'rt-multi-thread'] }
18+
tokio-stream = '0.1'
1819
anyhow = '1'
1920
utoipa = { version = '5', features = ['actix_extras'] }
2021
utoipa-actix-web = { version = '0.1' }
@@ -28,6 +29,7 @@ kube = { version = '2', features = ['derive', 'runtime', 'client'] }
2829
reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"] }
2930
schemars = { version = '1' }
3031
futures = '0.3'
32+
futures-util = "0.3"
3133
chrono = { version = '0.4', features = ['serde'] }
3234
deadpool-redis = { version = "0.22.0", features = ["serde"] }
3335
opentelemetry = { version = '0.30', features = ['trace', 'metrics', 'logs'] }

Taskfile.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ tasks:
1818
desc: "Run the backend"
1919
env:
2020
KUBECONFIG: ./kubeconfig.local.yaml
21-
OTEL_EXPORTER_OTLP_ENDPOINT: "http://localhost:5081/api/default"
22-
OTEL_EXPORTER_OTLP_HEADERS: "Authorization=Basic cm9vdEBleGFtcGxlLmNvbTpDb21wbGV4cGFzcyMxMjM=,organization=default,stream-name=default"
21+
#OTEL_EXPORTER_OTLP_ENDPOINT: "http://localhost:5081/api/default"
22+
#OTEL_EXPORTER_OTLP_HEADERS: "Authorization=Basic cm9vdEBleGFtcGxlLmNvbTpDb21wbGV4cGFzcyMxMjM=,organization=default,stream-name=default"
2323
REDIS_URL: redis://:{{ .REDIS_PASSWORD }}@localhost:6379
2424
silent: true
2525
cmds:

apps/server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ utoipa = { workspace = true }
1212
tracing = { workspace = true }
1313
uuid = { workspace = true }
1414
kube = { workspace = true }
15+
reqwest = { workspace = true }
1516

1617
utoipa-actix-web = { workspace = true }
1718

apps/server/src/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async fn main() -> anyhow::Result<()> {
2020
let controller = controller::run(state.clone());
2121
let mut api_doc = ApiDoc::openapi();
2222
api_doc.info.version = env!("CARGO_PKG_VERSION").to_string();
23+
let reqwest_client = reqwest::Client::default();
2324
let server = HttpServer::new(move || {
2425
let cors = Cors::default()
2526
.allow_any_origin()
@@ -62,6 +63,7 @@ async fn main() -> anyhow::Result<()> {
6263
.map(|app| app.wrap(Compress::default()))
6364
.map(|app| app.wrap(cors))
6465
.app_data(Data::new(state.clone()))
66+
.app_data(Data::new(reqwest_client.clone()))
6567
.service(scope("/api/v1").configure(init_api()))
6668
.service(scope("/clusters").configure(init_cluster_api()))
6769
.split_for_parts();

compose.yaml

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,6 @@
11
include:
2-
- .compose/compose.openobserve.yaml
2+
#- .compose/compose.openobserve.yaml
3+
- .compose/compose.otel.yaml
34
- .compose/compose.redis.yaml
45
- .compose/compose.traefik.yaml
5-
- .compose/compose.authelia.yaml
6-
7-
services:
8-
secure:
9-
image: "traefik/whoami"
10-
container_name: "secure"
11-
labels:
12-
traefik.enable: "true"
13-
traefik.http.routers.secure.rule: "Host(`secure.k8s.localhost`)"
14-
traefik.http.routers.secure.entrypoints: "https"
15-
traefik.http.routers.secure.tls: "true"
16-
traefik.http.routers.secure.tls.options: "default"
17-
traefik.http.routers.secure.middlewares: "authelia@docker"
18-
restart: "unless-stopped"
19-
20-
public:
21-
image: "traefik/whoami"
22-
container_name: "public"
23-
labels:
24-
traefik.enable: "true"
25-
traefik.http.routers.public.rule: "Host(`public.k8s.localhost`)"
26-
traefik.http.routers.public.entrypoints: "https"
27-
traefik.http.routers.public.tls: "true"
28-
traefik.http.routers.public.tls.options: "default"
29-
traefik.http.routers.public.middlewares: "authelia@docker"
30-
restart: "unless-stopped"
6+
#- .compose/compose.authelia.yaml

0 commit comments

Comments
 (0)