- Inicio
- Defensa del lado del cliente
- Demo
- Fase 4 — Desmontaje
Fase 4 — Desmontaje
La Fase 4 elimina todos los objetos creados durante el ejercicio en orden inverso de dependencia. Esta fase requiere confirmación humana explícita antes de cualquier operación destructiva.
Orden de desmontaje
Sección titulada «Orden de desmontaje»Elimine los objetos en orden inverso de creación — elimine primero los objetos que dependen de otros objetos:
- Dominios mitigados — elimine todos los dominios mitigados de CSD creados en la Fase 3
- Balanceador de carga HTTPS (
${F5XC_LB_NAME}-https) — reduzca al esqueleto (preserve el certificado Let’s Encrypt); DELETE completo siNAMESPACE_CREATED=trueo bajo solicitud explícita - Balanceador de carga HTTP (
${F5XC_LB_NAME}-http) — depende del grupo de origen - Grupo de origen — depende del control de estado (si fue creado)
- Limpieza de zona DNS — el esqueleto del LB HTTPS retiene sus registros A administrados y ACME (esto es deseable — mantiene el certificado válido). Los registros administrados del LB HTTP se limpian automáticamente al eliminarlo. Los registros manuales en
default_rr_set_grouprequieren limpieza manual mediantePUT - Control de estado — solo si fue creado en la Fase 1 Paso 1
- Dominio protegido — elimine el registro de dominio protegido de CSD
- Namespace — solo si fue creado durante la Fase 1 Paso 0 (
NAMESPACE_CREATED=true)
Eliminar dominios mitigados
Sección titulada «Eliminar dominios mitigados»Si la Fase 3 fue ejecutada, elimine todos los dominios mitigados antes de eliminar los objetos de infraestructura. La simulación estándar crea 6 dominios mitigados:
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"doneVerifique: Liste los dominios mitigados para confirmar que el recuento es 0 (o 1 — consulte la nota a continuación):
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq '{count: (.items | length)}'Balanceador de carga HTTPS
Sección titulada «Balanceador de carga HTTPS»El comportamiento del desmontaje del LB HTTPS depende de si el namespace fue creado durante esta sesión de demostración (variable NAMESPACE_CREATED de la Fase 1 Paso 0):
NAMESPACE_CREATED=false(namespace preexistente) — reduzca al estado de esqueleto, preservando el certificado Let’s Encrypt para su reutilizaciónNAMESPACE_CREATED=true(namespace creado durante la demostración) — DELETE completo, ya que el namespace en sí será eliminado y el certificado no puede preservarse
Ruta A: Reducir al esqueleto (namespace preexistente)
Sección titulada «Ruta A: Reducir al esqueleto (namespace preexistente)»Cuando el namespace es preexistente, reduzca el LB HTTPS a un estado de esqueleto — elimine la referencia al grupo de origen y la configuración de CSD mientras preserva el enlace de dominio, la configuración https_auto_cert y el certificado Let’s Encrypt. Esto evita activar una nueva solicitud de certificado en la próxima ejecución de demostración (Let’s Encrypt aplica un límite de 5 certificados duplicados por conjunto de identificadores exactos cada 7 días).
Paso 1 — Obtenga la configuración actual del LB 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")Paso 2 — Reduzca al esqueleto mediante jq y aplique con 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 .El filtro jq preserva toda la especificación (dominios, https_auto_cert, advertise_on_public_default_vip y todos los indicadores de funciones deshabilitadas) mientras elimina client_side_defense (reemplazado por disable_client_side_defense: {}) y vacía default_route_pools en un array vacío. El certificado y los enlaces DNS permanecen intactos.
Verifique que el LB HTTPS ahora es un esqueleto:
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 }'Esperado: has_origin_pools: false, has_csd: false, domains aún poblado, cert_state sin cambios (por ejemplo, CertificateValid).
Ruta B: DELETE completo (namespace creado durante la demostración)
Sección titulada «Ruta B: DELETE completo (namespace creado durante la demostración)»Cuando el namespace fue creado durante esta sesión de demostración, el LB HTTPS debe eliminarse completamente — la preservación del esqueleto es innecesaria porque el namespace en sí será eliminado al final del desmontaje.
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https"Verifique: GET /api/config/namespaces/\{namespace\}/http_loadbalancers no debe contener ${F5XC_LB_NAME}-https.
Eliminar balanceador de carga HTTP
Sección titulada «Eliminar balanceador de carga HTTP»Elimine el LB 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"Verifique: GET /api/config/namespaces/\{namespace\}/http_loadbalancers no debe contener ${F5XC_LB_NAME}-http. Si el objeto aún aparece en la lista después de que DELETE devolvió 200, espere 30 segundos y vuelva a verificar una vez. Si aún está presente tras la segunda verificación, informe al operador — no proceda.
Eliminar grupo de origen
Sección titulada «Eliminar grupo de origen»curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx"Verifique: GET /api/config/namespaces/\{namespace\}/origin_pools no debe contener el nombre del grupo. Si el objeto aún aparece en la lista después de que DELETE devolvió 200, espere 30 segundos y vuelva a verificar una vez. Si aún está presente tras la segunda verificación, informe al operador.
Eliminar control de estado
Sección titulada «Eliminar control de estado»curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx"Verifique: GET /api/config/namespaces/\{namespace\}/healthchecks no debe contener el nombre del control de estado. Si el objeto aún aparece en la lista después de que DELETE devolvió 200, espere 30 segundos y vuelva a verificar una vez. Si aún está presente tras la segunda verificación, informe al operador.
Eliminar dominio protegido
Sección titulada «Eliminar dominio protegido»Elimine el registro de dominio protegido de CSD. El dominio protegido está en el ámbito del tenant (no del namespace), pero es un objeto de configuración de CSD vinculado a este despliegue — no es infraestructura compartida como la zona 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"Verifique: Liste los dominios protegidos para confirmar que el dominio ya no está registrado:
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)'Eliminar namespace (condicional)
Sección titulada «Eliminar namespace (condicional)»Este paso se ejecuta únicamente si el namespace fue creado durante la Fase 1 Paso 0 (NAMESPACE_CREATED=true). Si el namespace era preexistente (NAMESPACE_CREATED=false), omita este paso completamente — el namespace es infraestructura compartida que no debe eliminarse.
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 .fiVerifique: Confirme que el namespace ya no existe:
curl -s -o /dev/null -w '%\{http_code\}' \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/web/namespaces/xF5XC_NAMESPACEx"Esperado: 404 si NAMESPACE_CREATED=true, 200 si NAMESPACE_CREATED=false.
Resumen de evidencias de la Fase 4
Sección titulada «Resumen de evidencias de la Fase 4»| Objeto | Estado de eliminación | Estado de verificación |
|---|---|---|
| Dominios mitigados (6) | Todos 200 (vacío \{\}) u omitidos si la Fase 3 no fue ejecutada | Recuento 0 (o 1 fantasma) — APROBADO |
Balanceador de carga HTTPS (-https) | 200 (PUT de esqueleto) o 200 (DELETE completo si NAMESPACE_CREATED=true) | Esqueleto verificado o no en la lista — APROBADO |
Balanceador de carga HTTP (-http) | 200 (vacío \{\}) | No en la lista — APROBADO |
| Grupo de origen | 200 (vacío \{\}) | No en la lista — APROBADO |
| Control de estado | 200 (vacío \{\}) u omitido | No en la lista — APROBADO |
| Dominio protegido | 200 (vacío \{\}) | No en la lista — APROBADO |
| Zona DNS | NO eliminada (infraestructura compartida) | La zona aún existe — APROBADO |
| Namespace | 200 (eliminación en cascada) si NAMESPACE_CREATED=true, omitido en caso contrario | 404 si fue eliminado, 200 si fue preservado — APROBADO |
Desmontaje completo. Cuando el namespace era preexistente (NAMESPACE_CREATED=false), todos los objetos del despliegue han sido eliminados excepto el esqueleto del LB HTTPS, que preserva el certificado Let’s Encrypt y el enlace de dominio para la próxima ejecución de demostración. Cuando el namespace fue creado durante la demostración (NAMESPACE_CREATED=true), todos los objetos, incluido el LB HTTPS y el namespace, han sido eliminados completamente. La zona DNS y sus registros no administrados permanecen intactos en ambos casos.