- Accueil
- Défense côté client
- Demo
- Phase 4 — Démontage
Phase 4 — Démontage
La Phase 4 supprime tous les objets créés lors de l’exercice dans l’ordre inverse des dépendances. Cette phase nécessite une confirmation explicite de l’opérateur humain avant toute opération destructive.
Ordre de démontage
Section intitulée « Ordre de démontage »Supprimez les objets dans l’ordre inverse de création — supprimez d’abord les objets qui dépendent d’autres objets :
- Domaines atténués — supprimer tous les domaines atténués CSD créés en Phase 3
- Équilibreur de charge HTTPS (
${F5XC_LB_NAME}-https) — réduire à l’état squelette (conserver le certificat Let’s Encrypt) ; suppression complète (DELETE) siNAMESPACE_CREATED=trueou sur demande explicite - Équilibreur de charge HTTP (
${F5XC_LB_NAME}-http) — dépend du pool d’origine - Pool d’origine — dépend du contrôle de santé (si créé)
- Nettoyage de la zone DNS — le squelette de l’équilibreur de charge HTTPS conserve ses enregistrements A gérés et ACME (c’est intentionnel — cela maintient le certificat valide). Les enregistrements gérés de l’équilibreur de charge HTTP sont automatiquement supprimés lors de la suppression. Les enregistrements manuels dans
default_rr_set_groupnécessitent un nettoyage manuel viaPUT - Contrôle de santé — uniquement s’il a été créé à la Phase 1 Étape 1
- Domaine protégé — supprimer l’enregistrement du domaine protégé CSD
- Espace de noms — uniquement s’il a été créé lors de la Phase 1 Étape 0 (
NAMESPACE_CREATED=true)
Supprimer les domaines atténués
Section intitulée « Supprimer les domaines atténués »Si la Phase 3 a été exécutée, supprimez tous les domaines atténués avant de supprimer les objets d’infrastructure. La simulation standard crée 6 domaines atténués :
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"doneVérification : Listez les domaines atténués pour confirmer que le nombre est 0 (ou 1 — voir la note ci-dessous) :
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq '{count: (.items | length)}'Équilibreur de charge HTTPS
Section intitulée « Équilibreur de charge HTTPS »Le comportement du démontage de l’équilibreur de charge HTTPS dépend de si l’espace de noms a été créé lors de cette session de démo (variable NAMESPACE_CREATED de la Phase 1 Étape 0) :
NAMESPACE_CREATED=false(espace de noms préexistant) — réduire à l’état squelette, en préservant le certificat Let’s Encrypt pour réutilisationNAMESPACE_CREATED=true(espace de noms créé pendant la démo) — suppression complète (DELETE), car l’espace de noms lui-même sera supprimé et le certificat ne peut pas être conservé
Chemin A : Réduction à l’état squelette (espace de noms préexistant)
Section intitulée « Chemin A : Réduction à l’état squelette (espace de noms préexistant) »Lorsque l’espace de noms est préexistant, réduisez l’équilibreur de charge HTTPS à un état squelette — supprimez la référence au pool d’origine et la configuration CSD tout en préservant la liaison de domaine, les paramètres https_auto_cert et le certificat Let’s Encrypt. Cela évite de déclencher une nouvelle demande de certificat lors de la prochaine exécution de la démo (Let’s Encrypt applique une limite de 5 certificats en double par ensemble d’identifiants exact sur 7 jours).
Étape 1 — Récupérer la configuration actuelle de l’équilibreur de charge HTTPS :
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")Étape 2 — Réduire à l’état squelette via jq et remettre en place via PUT :
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 .Le filtre jq préserve l’intégralité du spec (domaines, https_auto_cert, advertise_on_public_default_vip et tous les indicateurs de fonctionnalités désactivés) tout en supprimant client_side_defense (remplacé par disable_client_side_defense: {}) et en vidant default_route_pools dans un tableau vide. Le certificat et les liaisons DNS restent intacts.
Vérifiez que l’équilibreur de charge HTTPS est maintenant à l’état squelette :
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 }'Résultat attendu : has_origin_pools: false, has_csd: false, domains toujours renseigné, cert_state inchangé (par ex. CertificateValid).
Chemin B : Suppression complète (espace de noms créé pendant la démo)
Section intitulée « Chemin B : Suppression complète (espace de noms créé pendant la démo) »Lorsque l’espace de noms a été créé lors de cette session de démo, l’équilibreur de charge HTTPS doit être entièrement supprimé — la préservation du squelette est inutile car l’espace de noms lui-même sera supprimé à la fin du démontage.
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https"Vérification : GET /api/config/namespaces/\{namespace\}/http_loadbalancers ne doit pas contenir ${F5XC_LB_NAME}-https.
Supprimer l’équilibreur de charge HTTP
Section intitulée « Supprimer l’équilibreur de charge HTTP »Supprimez l’équilibreur de charge HTTP principal :
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http"Vérification : GET /api/config/namespaces/\{namespace\}/http_loadbalancers ne doit pas contenir ${F5XC_LB_NAME}-http. Si l’objet apparaît toujours dans la liste après que le DELETE a renvoyé 200, attendez 30 secondes et vérifiez à nouveau. S’il est toujours présent après la deuxième vérification, signalez-le à l’opérateur — ne continuez pas.
Supprimer le pool d’origine
Section intitulée « Supprimer le pool d’origine »curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx"Vérification : GET /api/config/namespaces/\{namespace\}/origin_pools ne doit pas contenir le nom du pool. Si l’objet apparaît toujours dans la liste après que le DELETE a renvoyé 200, attendez 30 secondes et vérifiez à nouveau. S’il est toujours présent après la deuxième vérification, signalez-le à l’opérateur.
Supprimer le contrôle de santé
Section intitulée « Supprimer le contrôle de santé »curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx"Vérification : GET /api/config/namespaces/\{namespace\}/healthchecks ne doit pas contenir le nom du contrôle de santé. Si l’objet apparaît toujours dans la liste après que le DELETE a renvoyé 200, attendez 30 secondes et vérifiez à nouveau. S’il est toujours présent après la deuxième vérification, signalez-le à l’opérateur.
Supprimer le domaine protégé
Section intitulée « Supprimer le domaine protégé »Supprimez l’enregistrement du domaine protégé CSD. Le domaine protégé est limité au tenant (non limité à l’espace de noms), mais c’est un objet de configuration CSD lié à ce déploiement — il ne s’agit pas d’une infrastructure partagée comme la zone DNS.
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains/xF5XC_ROOT_DOMAINx"Vérification : Listez les domaines protégés pour confirmer que le domaine n’est plus enregistré :
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)'Supprimer l’espace de noms (conditionnel)
Section intitulée « Supprimer l’espace de noms (conditionnel) »Cette étape s’exécute uniquement si l’espace de noms a été créé lors de la Phase 1 Étape 0 (NAMESPACE_CREATED=true). Si l’espace de noms était préexistant (NAMESPACE_CREATED=false), ignorez entièrement cette étape — l’espace de noms est une infrastructure partagée qui ne doit pas être supprimée.
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 .fiVérification : Confirmez que l’espace de noms n’existe plus :
curl -s -o /dev/null -w '%\{http_code\}' \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/web/namespaces/xF5XC_NAMESPACEx"Résultat attendu : 404 si NAMESPACE_CREATED=true, 200 si NAMESPACE_CREATED=false.
Récapitulatif des preuves de la Phase 4
Section intitulée « Récapitulatif des preuves de la Phase 4 »| Objet | Statut de suppression | Statut de vérification |
|---|---|---|
| Domaines atténués (6) | Tous 200 (vide \{\}) ou ignorés si la Phase 3 n’a pas été exécutée | Nombre 0 (ou 1 fantôme) — RÉUSSI |
Équilibreur de charge HTTPS (-https) | 200 (PUT squelette) ou 200 (suppression complète si NAMESPACE_CREATED=true) | Squelette vérifié ou absent de la liste — RÉUSSI |
Équilibreur de charge HTTP (-http) | 200 (vide \{\}) | Absent de la liste — RÉUSSI |
| Pool d’origine | 200 (vide \{\}) | Absent de la liste — RÉUSSI |
| Contrôle de santé | 200 (vide \{\}) ou ignoré | Absent de la liste — RÉUSSI |
| Domaine protégé | 200 (vide \{\}) | Absent de la liste — RÉUSSI |
| Zone DNS | NON supprimée (infrastructure partagée) | Zone toujours existante — RÉUSSI |
| Espace de noms | 200 (suppression en cascade) si NAMESPACE_CREATED=true, ignoré sinon | 404 si supprimé, 200 si conservé — RÉUSSI |
Démontage terminé. Lorsque l’espace de noms était préexistant (NAMESPACE_CREATED=false), tous les objets de déploiement ont été supprimés à l’exception du squelette de l’équilibreur de charge HTTPS, qui préserve le certificat Let’s Encrypt et la liaison de domaine pour la prochaine exécution de la démo. Lorsque l’espace de noms a été créé pendant la démo (NAMESPACE_CREATED=true), tous les objets, y compris l’équilibreur de charge HTTPS et l’espace de noms, ont été entièrement supprimés. La zone DNS et ses enregistrements non gérés restent intacts dans les deux cas.