- होम
- क्लाइंट-साइड डिफेंस
- Demo
- चरण 4 — टियरडाउन
चरण 4 — टियरडाउन
चरण 4 रिवर्स डिपेंडेंसी क्रम में अभ्यास के दौरान बनाए गए सभी ऑब्जेक्ट हटाता है। इस चरण के लिए किसी भी विनाशकारी ऑपरेशन से पहले स्पष्ट मानवीय पुष्टि आवश्यक है।
टियरडाउन क्रम
Section titled “टियरडाउन क्रम”ऑब्जेक्ट को रिवर्स निर्माण क्रम में हटाएं — पहले उन ऑब्जेक्ट को हटाएं जो अन्य ऑब्जेक्ट पर निर्भर हैं:
- Mitigated Domains — चरण 3 में बनाए गए सभी CSD mitigated domains हटाएं
- HTTPS Load Balancer (
${F5XC_LB_NAME}-https) — skeleton में बदलें (Let’s Encrypt certificate सुरक्षित रखें);NAMESPACE_CREATED=trueहोने पर या स्पष्ट अनुरोध पर पूर्ण DELETE करें - HTTP Load Balancer (
${F5XC_LB_NAME}-http) — Origin Pool पर निर्भर है - Origin Pool — Healthcheck पर निर्भर है (यदि बनाया गया हो)
- DNS zone सफाई — HTTPS LB skeleton अपने managed A और ACME रिकॉर्ड बनाए रखता है (यह वांछित है — यह certificate को वैध रखता है)। HTTP LB के managed रिकॉर्ड हटाने पर स्वतः साफ हो जाते हैं।
default_rr_set_groupमें manual रिकॉर्ड कोPUTके माध्यम से manual सफाई की आवश्यकता है - Healthcheck — केवल तभी यदि चरण 1 Step 1 में बनाया गया हो
- Protected Domain — CSD protected domain पंजीकरण हटाएं
- Namespace — केवल तभी यदि चरण 1 Step 0 के दौरान बनाया गया हो (
NAMESPACE_CREATED=true)
Mitigated Domains हटाएं
Section titled “Mitigated Domains हटाएं”यदि चरण 3 निष्पादित किया गया था, तो इन्फ्रास्ट्रक्चर ऑब्जेक्ट हटाने से पहले सभी mitigated domains हटाएं। मानक सिमुलेशन 6 mitigated 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सत्यापन: यह पुष्टि करने के लिए mitigated domains की सूची बनाएं कि संख्या 0 है (या 1 — नीचे नोट देखें):
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
Section titled “HTTPS Load Balancer”HTTPS LB टियरडाउन का व्यवहार इस बात पर निर्भर करता है कि namespace इस डेमो सत्र के दौरान बनाया गया था या नहीं (चरण 1 Step 0 से NAMESPACE_CREATED वेरिएबल):
NAMESPACE_CREATED=false(पूर्व-मौजूद namespace) — skeleton स्थिति में बदलें, पुनः उपयोग के लिए Let’s Encrypt certificate सुरक्षित रखेंNAMESPACE_CREATED=true(डेमो के दौरान बनाया गया namespace) — पूर्ण DELETE, क्योंकि namespace स्वयं हटाया जाएगा और certificate संरक्षित नहीं की जा सकती
पथ A: Skeleton में बदलें (पूर्व-मौजूद Namespace)
Section titled “पथ A: Skeleton में बदलें (पूर्व-मौजूद Namespace)”जब namespace पूर्व-मौजूद हो, HTTPS LB को skeleton स्थिति में बदलें — domain binding, https_auto_cert सेटिंग्स और Let’s Encrypt certificate को सुरक्षित रखते हुए origin pool संदर्भ और CSD कॉन्फ़िगरेशन हटाएं। यह अगले डेमो रन पर नई certificate अनुरोध को ट्रिगर करने से बचाता है (Let’s Encrypt प्रति 7 दिनों में प्रति exact identifier set 5 duplicate certificates की सीमा लागू करता है)।
Step 1 — वर्तमान HTTPS LB config GET करें:
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")Step 2 — jq के माध्यम से skeleton में बदलें और वापस 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 .jq फ़िल्टर संपूर्ण spec (domains, https_auto_cert, advertise_on_public_default_vip, और सभी disabled feature flags) को सुरक्षित रखता है जबकि client_side_defense हटाता है (disable_client_side_defense: {} से प्रतिस्थापित) और default_route_pools को एक खाली array में साफ करता है। Certificate और DNS bindings बरकरार रहती हैं।
सत्यापन करें कि HTTPS LB अब skeleton है:
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 }'अपेक्षित: has_origin_pools: false, has_csd: false, domains अभी भी भरे हुए, cert_state अपरिवर्तित (उदा., CertificateValid)।
पथ B: पूर्ण Delete (डेमो के दौरान बनाया गया Namespace)
Section titled “पथ B: पूर्ण Delete (डेमो के दौरान बनाया गया Namespace)”जब namespace इस डेमो सत्र के दौरान बनाया गया था, HTTPS LB को पूरी तरह हटाया जाना चाहिए — skeleton संरक्षण अनावश्यक है क्योंकि namespace स्वयं टियरडाउन के अंत में हटाया जाएगा।
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https"सत्यापन: GET /api/config/namespaces/\{namespace\}/http_loadbalancers में ${F5XC_LB_NAME}-https नहीं होना चाहिए।
HTTP Load Balancer हटाएं
Section titled “HTTP Load Balancer हटाएं”प्राथमिक HTTP LB हटाएं:
curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http"सत्यापन: GET /api/config/namespaces/\{namespace\}/http_loadbalancers में ${F5XC_LB_NAME}-http नहीं होना चाहिए। यदि DELETE 200 लौटाने के बाद भी ऑब्जेक्ट सूची में दिखता है, तो 30 सेकंड प्रतीक्षा करें और एक बार फिर जाँचें। दूसरी जाँच के बाद भी उपस्थित होने पर ऑपरेटर को रिपोर्ट करें — आगे न बढ़ें।
Origin Pool हटाएं
Section titled “Origin Pool हटाएं”curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx"सत्यापन: GET /api/config/namespaces/\{namespace\}/origin_pools में pool का नाम नहीं होना चाहिए। यदि DELETE 200 लौटाने के बाद भी ऑब्जेक्ट सूची में दिखता है, तो 30 सेकंड प्रतीक्षा करें और एक बार फिर जाँचें। दूसरी जाँच के बाद भी उपस्थित होने पर ऑपरेटर को रिपोर्ट करें।
Healthcheck हटाएं
Section titled “Healthcheck हटाएं”curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx"सत्यापन: GET /api/config/namespaces/\{namespace\}/healthchecks में healthcheck का नाम नहीं होना चाहिए। यदि DELETE 200 लौटाने के बाद भी ऑब्जेक्ट सूची में दिखता है, तो 30 सेकंड प्रतीक्षा करें और एक बार फिर जाँचें। दूसरी जाँच के बाद भी उपस्थित होने पर ऑपरेटर को रिपोर्ट करें।
Protected Domain हटाएं
Section titled “Protected Domain हटाएं”CSD protected domain पंजीकरण हटाएं। Protected domain tenant-scoped है (namespace-scoped नहीं), लेकिन यह एक CSD कॉन्फ़िगरेशन ऑब्जेक्ट है जो इस डिप्लॉयमेंट से जुड़ा है — 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"सत्यापन: यह पुष्टि करने के लिए protected domains की सूची बनाएं कि domain अब पंजीकृत नहीं है:
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 हटाएं (सशर्त)
Section titled “Namespace हटाएं (सशर्त)”यह चरण केवल तभी चलता है जब namespace चरण 1 Step 0 के दौरान बनाया गया था (NAMESPACE_CREATED=true)। यदि namespace पूर्व-मौजूद था (NAMESPACE_CREATED=false), तो इस चरण को पूरी तरह छोड़ें — namespace साझा इन्फ्रास्ट्रक्चर है जिसे हटाया नहीं जाना चाहिए।
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सत्यापन: यह पुष्टि करें कि namespace अब मौजूद नहीं है:
curl -s -o /dev/null -w '%\{http_code\}' \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/web/namespaces/xF5XC_NAMESPACEx"अपेक्षित: NAMESPACE_CREATED=true होने पर 404, NAMESPACE_CREATED=false होने पर 200।
चरण 4 साक्ष्य सारांश
Section titled “चरण 4 साक्ष्य सारांश”| ऑब्जेक्ट | Delete स्थिति | सत्यापन स्थिति |
|---|---|---|
| Mitigated Domains (6) | सभी 200 (empty \{\}) या छोड़ा गया यदि चरण 3 नहीं चला | संख्या 0 (या 1 phantom) — PASS |
HTTPS Load Balancer (-https) | 200 (skeleton PUT) या 200 (पूर्ण DELETE यदि NAMESPACE_CREATED=true) | Skeleton सत्यापित या सूची में नहीं — PASS |
HTTP Load Balancer (-http) | 200 (empty \{\}) | सूची में नहीं — PASS |
| Origin Pool | 200 (empty \{\}) | सूची में नहीं — PASS |
| Healthcheck | 200 (empty \{\}) या छोड़ा गया | सूची में नहीं — PASS |
| Protected Domain | 200 (empty \{\}) | सूची में नहीं — PASS |
| DNS zone | हटाया नहीं गया (साझा infra) | Zone अभी भी मौजूद है — PASS |
| Namespace | 200 (cascade delete) यदि NAMESPACE_CREATED=true, अन्यथा छोड़ा गया | हटाए जाने पर 404, सुरक्षित रखने पर 200 — PASS |
टियरडाउन पूर्ण। जब namespace पूर्व-मौजूद था (NAMESPACE_CREATED=false), तो HTTPS LB skeleton को छोड़कर सभी डिप्लॉयमेंट ऑब्जेक्ट हटा दिए गए हैं, जो अगले डेमो रन के लिए Let’s Encrypt certificate और domain binding को सुरक्षित रखता है। जब namespace डेमो के दौरान बनाया गया था (NAMESPACE_CREATED=true), तो HTTPS LB और namespace सहित सभी ऑब्जेक्ट पूरी तरह हटा दिए गए हैं। DNS zone और उसके non-managed रिकॉर्ड दोनों मामलों में बरकरार रहते हैं।