Skip to content

Commit 68e88cc

Browse files
author
wlanboy
committed
formating
1 parent 0af82bc commit 68e88cc

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

dokumentation.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# JavaHttpClient – Projektdokumentation
22

3-
## Zweck
4-
53
Diagnose-Tool für HTTP-Konnektivitätsprobleme in Kubernetes-Clustern mit Istio Service Mesh.
64
Läuft als Pod im Cluster und ermöglicht:
5+
76
- HTTP-Requests über einen Java-HTTP-Client an beliebige Ziel-URLs zu senden
87
- Istio-Sidecar (Envoy) Konfiguration und Fehler-Metriken auszuwerten
98
- VirtualService/DestinationRule/ServiceEntry-Konfiguration mit einer Ziel-URL zu korrelieren
@@ -27,7 +26,7 @@ Läuft als Pod im Cluster und ermöglicht:
2726

2827
## Architektur
2928

30-
```
29+
```txt
3130
Browser
3231
3332
├─ POST /client → HttpClientController → ClientService
@@ -52,6 +51,7 @@ Browser
5251
## Backend – Klassen
5352

5453
### `ClientService`
54+
5555
Sendet HTTP-Requests über `java.net.http.HttpClient`.
5656

5757
- **HTTP/2** aktiv (`Version.HTTP_2`), fällt automatisch auf HTTP/1.1 zurück (ALPN)
@@ -69,6 +69,7 @@ Gefilterte Request-Header (werden nie weitergeleitet):
6969
`host`, `content-length`, `connection`, `accept-encoding`, `upgrade`
7070

7171
Fehlermeldungen (502):
72+
7273
| Exception | Meldung |
7374
|-----------|---------|
7475
| `UnknownHostException` | DNS Fehler: Host nicht gefunden |
@@ -81,6 +82,7 @@ Fehlermeldungen (502):
8182
### `K8sDiagnosticService`
8283

8384
**Envoy Admin API** (Standard: `http://127.0.0.1:15000`, konfigurierbar via `ENVOY_ADMIN_URL`):
85+
8486
- `/config_dump` → vollständige Envoy-Konfiguration
8587
- `/clusters` → aktive Upstream-Cluster
8688
- `/stats`**alle** Metriken (kein serverseitiger Filter), nur Werte ≥ 0 (non-zero)
@@ -110,6 +112,7 @@ Fehlermeldungen (502):
110112
**`correlateUrl(url, namespace)`** – URL-Korrelation gegen Istio-Ressourcen:
111113

112114
*Host-Matching-Logik* (VS-Host vs. URL-Hostname):
115+
113116
- Exakter Match
114117
- Wildcard: `*.namespace` matcht `foo.namespace`
115118
- Short-Name: `my-svc` matcht `my-svc.ns.svc.cluster.local`
@@ -130,6 +133,7 @@ Fehlermeldungen (502):
130133
### `TlsInspectorService`
131134

132135
Separater `SSLSocket`-basierter TLS-Probe (unabhängig vom Haupt-Request):
136+
133137
- Eigener `SSLContext` mit `X509ExtendedTrustManager` der **alles akzeptiert** (auch self-signed, expired) → Chain immer sichtbar
134138
- SNI korrekt gesetzt via `SSLParameters`
135139
- Gibt zurück:
@@ -161,13 +165,15 @@ Separater `SSLSocket`-basierter TLS-Probe (unabhängig vom Haupt-Request):
161165
## Frontend – Tabs & Features
162166

163167
### Hauptbereich (linke Spalte)
168+
164169
- HTTP-Method-Dropdown + URL-Feld
165170
- Dynamische Custom-Header (Key/Value, add/remove)
166171
- Body-Textarea (JSON)
167172
- Option: Browser-Header kopieren
168173
- Buttons: **K8s/Istio Diagnose** | **Send Request**
169174

170175
**Response-Bereich** nach jedem Request:
176+
171177
- `HTTP {status}`-Badge (grün/rot)
172178
- `HTTP/2` / `HTTP/1.1`-Badge (blau/grau) – tatsächlich verwendetes Protokoll
173179
- Resolved-IP-Badge (alle aufgelösten IPs)
@@ -176,6 +182,7 @@ Separater `SSLSocket`-basierter TLS-Probe (unabhängig vom Haupt-Request):
176182
- **TLS-Panel** (nur HTTPS): TLS-Version, Cipher Suite, mTLS/SPIFFE-Badge, aufklappbare Cert-Cards pro Zertifikat (leaf/intermediate/root) mit Ablauf-Countdown
177183

178184
### Historie (rechte Spalte)
185+
179186
- Bis zu 50 Einträge in `localStorage`
180187
- Grüner/roter Rand je nach Status
181188
- Klick stellt Formular wieder her
@@ -184,16 +191,19 @@ Separater `SSLSocket`-basierter TLS-Probe (unabhängig vom Haupt-Request):
184191
### Istio-Panel (nach Diagnose-Klick)
185192

186193
**Tab A – Config & Erreichbarkeit**
194+
187195
- Envoy Config JSON (aufklappbar)
188196
- Cluster-Suche mit Zähler
189197
- Aktive Endpoints als scrollbares Konsolen-Output
190198

191199
**Tab B – Aktive Fehler-Metriken**
200+
192201
- Ziel-URL-Korrelation: hebt Metriken hervor die den Hostnamen der URL enthalten
193202
- Diagnose-Karten (KRITISCH/WARNUNG/INFO) mit Beschreibung + Empfehlung + betroffene Metriken
194203
- Vollständige Metriken-Tabelle (alle Werte inkl. 0)
195204

196205
**Tab C – Pod Kontext & Istio**
206+
197207
- Navbar-Badges: Pod-Name, Namespace, Istio ON/OFF
198208
- Kontext-Tabelle: podName, namespace, istioSidecar
199209
- Istio Sidecar Details (clusterSummary, networkStats)
@@ -222,7 +232,7 @@ Namespace wird primär aus `/var/run/secrets/kubernetes.io/serviceaccount/namesp
222232

223233
## Deployment
224234

225-
```
235+
```txt
226236
Namespace: clients
227237
Service: ClusterIP :8080
228238
Istio: Gateway in istio-ingress
@@ -231,6 +241,7 @@ Hosts: javahttpclient.tp.lan / javahttpclient.gmk.lan
231241
```
232242

233243
**Docker-Builds:**
244+
234245
- `Dockerfile25` – Java 25 mit JRE
235246
- `Dockerfile25Jlink` – Java 25 mit JLink Custom Image (~295MB vs ~510MB)
236247
- AOT aktiv: `spring-boot:process-aot` im Build, `-Dspring.aot.enabled=true` zur Laufzeit

0 commit comments

Comments
 (0)