- Startseite
- Clientseitige Abwehr
- Demo
- Phase 4 — Abbau
Phase 4 — Abbau
Phase 4 entfernt alle während der Übung erstellten Objekte in umgekehrter Abhängigkeitsreihenfolge. Diese Phase erfordert eine ausdrückliche Bestätigung durch den Menschen, bevor destruktive Operationen durchgeführt werden.
Abbaureihenvfolge
Abschnitt betitelt „Abbaureihenvfolge“Objekte in umgekehrter Erstellungsreihenfolge entfernen — zuerst Objekte löschen, die von anderen Objekten abhängen:
- Mitigierte Domains — alle in Phase 3 erstellten CSD-mitigierten Domains löschen
- HTTPS Load Balancer (
${F5XC_LB_NAME}-https) — auf Skeleton reduzieren (Let’s Encrypt-Zertifikat beibehalten); vollständiges DELETE, wennNAMESPACE_CREATED=trueoder auf ausdrückliche Anfrage - HTTP Load Balancer (
${F5XC_LB_NAME}-http) — abhängig vom Origin Pool - Origin Pool — abhängig von Healthcheck (falls erstellt)
- DNS-Zonenbereinigung — das HTTPS LB-Skeleton behält seine verwalteten A- und ACME-Einträge (dies ist gewünscht — es hält das Zertifikat gültig). Die verwalteten Einträge des HTTP LB werden beim Löschen automatisch bereinigt. Manuelle Einträge in
default_rr_set_groupmüssen manuell perPUTbereinigt werden - Healthcheck — nur wenn in Phase 1 Schritt 1 erstellt
- Protected Domain — die CSD-Protected-Domain-Registrierung löschen
- Namespace — nur wenn während Phase 1 Schritt 0 erstellt (
NAMESPACE_CREATED=true)
Mitigierte Domains löschen
Abschnitt betitelt „Mitigierte Domains löschen“Wenn Phase 3 ausgeführt wurde, löschen Sie alle mitigierten Domains, bevor Sie Infrastrukturobjekte entfernen. Die Standard-Simulation erstellt 6 mitigierte Domains:
for domain in cdn.jsdelivr.net esm.sh unpkg.com ga.jspm.io httpbin.org jsonplaceholder.typicode.com; do curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains/$domain"doneÜberprüfen: Mitigierte Domains auflisten, um zu bestätigen, dass die Anzahl 0 beträgt (oder 1 — siehe Hinweis unten):
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq '{count: (.items | length)}'HTTPS Load Balancer
Abschnitt betitelt „HTTPS Load Balancer“Das Abbauverhalten des HTTPS LB hängt davon ab, ob der Namespace während dieser Demo-Sitzung erstellt wurde (Variable NAMESPACE_CREATED aus Phase 1 Schritt 0):
NAMESPACE_CREATED=false(bereits vorhandener Namespace) — auf Skeleton-Zustand reduzieren, dabei das Let’s Encrypt-Zertifikat zur Wiederverwendung beibehaltenNAMESPACE_CREATED=true(Namespace während der Demo erstellt) — vollständiges DELETE, da der Namespace selbst gelöscht wird und das Zertifikat nicht beibehalten werden kann
Pfad A: Auf Skeleton reduzieren (bereits vorhandener Namespace)
Abschnitt betitelt „Pfad A: Auf Skeleton reduzieren (bereits vorhandener Namespace)“Wenn der Namespace bereits vorhanden ist, reduzieren Sie den HTTPS LB auf einen Skeleton-Zustand — entfernen Sie den Origin-Pool-Verweis und die CSD-Konfiguration, während die Domain-Bindung, https_auto_cert-Einstellungen und das Let’s Encrypt-Zertifikat beibehalten werden. Dies vermeidet das Auslösen einer neuen Zertifikatsanfrage beim nächsten Demo-Durchlauf (Let’s Encrypt erzwingt ein Limit von 5 doppelten Zertifikaten pro exakter Kennung pro 7 Tage).
Schritt 1 — Aktuelle HTTPS LB-Konfiguration per GET abrufen:
HTTPS_LB_JSON=$(curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https")Schritt 2 — Per jq auf Skeleton reduzieren und per PUT zurückschreiben:
echo "$HTTPS_LB_JSON" | jq '{ metadata: .metadata, spec: (.spec | del(.client_side_defense) | .disable_client_side_defense = {} | .default_route_pools = [])}' | curl -s -X PUT \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d @- \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \ | jq .Der jq-Filter bewahrt die gesamte Spec (Domains, https_auto_cert, advertise_on_public_default_vip und alle deaktivierten Feature-Flags), während client_side_defense entfernt wird (ersetzt durch disable_client_side_defense: {}) und default_route_pools auf ein leeres Array geleert wird. Das Zertifikat und die DNS-Bindungen bleiben intakt.
Überprüfen, ob der HTTPS LB nun ein Skeleton ist:
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \ | jq '{ name: .metadata.name, domains: .spec.domains, has_origin_pools: ((.spec.default_route_pools // []) | length > 0), has_csd: (.spec.client_side_defense != null), cert_state: .spec.cert_state }'Erwartet: has_origin_pools: false, has_csd: false, domains weiterhin befüllt, cert_state unverändert (z. B. CertificateValid).
Pfad B: Vollständiges Löschen (Namespace während Demo erstellt)
Abschnitt betitelt „Pfad B: Vollständiges Löschen (Namespace während Demo erstellt)“Wenn der Namespace während dieser Demo-Sitzung erstellt wurde, muss der HTTPS LB vollständig gelöscht werden — die Skeleton-Beibehaltung ist unnötig, da der Namespace selbst am Ende des Abbaus entfernt wird.
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https"Überprüfen: GET /api/config/namespaces/\{namespace\}/http_loadbalancers sollte ${F5XC_LB_NAME}-https nicht enthalten.
HTTP Load Balancer löschen
Abschnitt betitelt „HTTP Load Balancer löschen“Den primären HTTP LB löschen:
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http"Überprüfen: GET /api/config/namespaces/\{namespace\}/http_loadbalancers sollte ${F5XC_LB_NAME}-http nicht enthalten. Wenn das Objekt nach einem DELETE mit Rückgabe 200 noch in der Liste erscheint, 30 Sekunden warten und einmal erneut prüfen. Wenn es nach der zweiten Prüfung noch vorhanden ist, dem Operator melden — nicht fortfahren.
Origin Pool löschen
Abschnitt betitelt „Origin Pool löschen“curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx"Überprüfen: GET /api/config/namespaces/\{namespace\}/origin_pools sollte den Pool-Namen nicht enthalten. Wenn das Objekt nach einem DELETE mit Rückgabe 200 noch in der Liste erscheint, 30 Sekunden warten und einmal erneut prüfen. Wenn es nach der zweiten Prüfung noch vorhanden ist, dem Operator melden.
Healthcheck löschen
Abschnitt betitelt „Healthcheck löschen“curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx"Überprüfen: GET /api/config/namespaces/\{namespace\}/healthchecks sollte den Healthcheck-Namen nicht enthalten. Wenn das Objekt nach einem DELETE mit Rückgabe 200 noch in der Liste erscheint, 30 Sekunden warten und einmal erneut prüfen. Wenn es nach der zweiten Prüfung noch vorhanden ist, dem Operator melden.
Protected Domain löschen
Abschnitt betitelt „Protected Domain löschen“Die CSD-Protected-Domain-Registrierung löschen. Die Protected Domain ist tenant-bezogen (nicht namespace-bezogen), aber sie ist ein CSD-Konfigurationsobjekt, das an dieses Deployment gebunden ist — keine gemeinsame Infrastruktur wie die DNS-Zone.
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains/xF5XC_ROOT_DOMAINx"Überprüfen: Protected Domains auflisten, um zu bestätigen, dass die Domain nicht mehr registriert ist:
curl -s -X GET \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \ | jq '.items // [] | map(.metadata.name)'Namespace löschen (bedingt)
Abschnitt betitelt „Namespace löschen (bedingt)“Dieser Schritt wird nur ausgeführt, wenn der Namespace während Phase 1 Schritt 0 erstellt wurde (NAMESPACE_CREATED=true). Wenn der Namespace bereits vorhanden war (NAMESPACE_CREATED=false), überspringen Sie diesen Schritt vollständig — der Namespace ist gemeinsame Infrastruktur, die nicht gelöscht werden darf.
if [ "$NAMESPACE_CREATED" = "true" ]; then curl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"name": "xF5XC_NAMESPACEx"}' \ "xF5XC_API_URLx/api/web/namespaces/xF5XC_NAMESPACEx/cascade_delete" | jq .fiÜberprüfen: Bestätigen, dass der Namespace nicht mehr existiert:
curl -s -o /dev/null -w '%\{http_code\}' \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/web/namespaces/xF5XC_NAMESPACEx"Erwartet: 404, wenn NAMESPACE_CREATED=true; 200, wenn NAMESPACE_CREATED=false.
Phase 4 Nachweis-Zusammenfassung
Abschnitt betitelt „Phase 4 Nachweis-Zusammenfassung“| Objekt | Lösch-Status | Überprüfungs-Status |
|---|---|---|
| Mitigierte Domains (6) | Alle 200 (leer \{\}) oder übersprungen, wenn Phase 3 nicht ausgeführt | Anzahl 0 (oder 1 Phantom) — BESTANDEN |
HTTPS Load Balancer (-https) | 200 (Skeleton-PUT) oder 200 (vollständiges DELETE, wenn NAMESPACE_CREATED=true) | Skeleton bestätigt oder nicht in Liste — BESTANDEN |
HTTP Load Balancer (-http) | 200 (leer \{\}) | Nicht in Liste — BESTANDEN |
| Origin Pool | 200 (leer \{\}) | Nicht in Liste — BESTANDEN |
| Healthcheck | 200 (leer \{\}) oder übersprungen | Nicht in Liste — BESTANDEN |
| Protected Domain | 200 (leer \{\}) | Nicht in Liste — BESTANDEN |
| DNS-Zone | NICHT gelöscht (gemeinsame Infra) | Zone noch vorhanden — BESTANDEN |
| Namespace | 200 (Cascade-Delete), wenn NAMESPACE_CREATED=true, sonst übersprungen | 404 wenn gelöscht, 200 wenn beibehalten — BESTANDEN |
Abbau abgeschlossen. Wenn der Namespace bereits vorhanden war (NAMESPACE_CREATED=false), wurden alle Deployment-Objekte bis auf das HTTPS LB-Skeleton entfernt, das das Let’s Encrypt-Zertifikat und die Domain-Bindung für den nächsten Demo-Durchlauf bewahrt. Wenn der Namespace während der Demo erstellt wurde (NAMESPACE_CREATED=true), wurden alle Objekte einschließlich HTTPS LB und Namespace vollständig gelöscht. Die DNS-Zone und ihre nicht verwalteten Einträge bleiben in beiden Fällen intakt.