Windows Mesh և քաղաքականություն 2019
1) Ինչու՞ պետք է Peter Mesh
Peter Mesh-ը ենթակառուցվածքային շերտ է east-west-ի համար (www.west), որը տալիս է միանձնյա հնարավորություններ առանց կոդի վերաշարադրման
Լռելյայն անվտանգությունը 'mTSA, ավտոմատ ճշգրտումը/հավաստագրերի լուծումը, ծառայությունների ինքնությունը։
Քաղաքական գործիչը բացատրում է, որ L7-ի երթուղայնացումը, կանարյան/AV թեստերը, դեգրադացիան և կայունությունը։
Դիտարկումը 'չափումներ, լույսեր, հետքեր, ոսկու ազդանշաններ յուրաքանչյուր զանգի վրա։
Վիրահատություններ 'միասնական քաղաքականություններ բոլոր լեզուների/շրջանակների համար։
Տարբերությունը API նավից 'դարպասը' հյուսիսային-հարավային պարիմետր; mesh - east-west ներսում/կազմակերպության մեջ։ Հաճախ միասին են աշխատում։
2) Ճարտարապետություն ՝ ինքնաթիռներ և փամփուշտներ
DirePlane: sidecar-2019 (Envoy/Linkerd-proxy/haproxy), որը ընդհատում է ենթաօրենսդրությունը/VM։
Contll Plane: բաժանում է կազմաձևը (երթուղիներ, քաղաքականություններ, հավաստագրեր), պահպանում է վիճակը, հրապարակում է դիսկոների ծառայությունը։
Identity: Սովորաբար SPIFE ID-ը և ավտոմատ X.59 հավաստագրերը (SPIRE/ներկառուցված CA)։
Մուտքի/ելքի կետերը ՝ ingress/egress-gateway, որպեսզի վերահսկեն սահմանային հոսքերը։
Ներդրման ռեժիմները 'sidecar յուրաքանչյուր տակ; Նոր ռեալիզացիաներում
3) Անվտանգության քաղաքականությունը և zero-trust
1. MTMS by 210: ծածկագրում և փոխադարձ վավերացում ծառայությունն է։
2. AuthN/AuthZ:- AuthN 'վստահում ենք միայն CA mesh' a (SPIFFE) թողարկված նույնականություններին։
- AuthZ: «Ով կարող է և ինչպես» (RBAC/ABAC)։
3. Մեկուսացումը և egress-վերահսկողությունը
Թույլատրված օրինագծեր/ենթաօրենսդրություններ; հարկադիր ելքը egress-gateway-ի միջոցով։
Ուղղակի ելքերի արգելափակում։
4. Գաղտնիքների վերացումը 'կարճ գոյատևող հավաստագրեր, ավտոմատ վերամշակում։
Istio (օրինակ ՝ գլոբալ mTSA խիստ)
yaml apiVersion: security. istio. io/v1beta1 kind: PeerAuthentication metadata: { name: default, namespace: istio-system }
spec:
mtls: { mode: STRICT }
Istio (օրինակ ՝ թույլ տալ միայն entory probilling gRPC)։
yaml apiVersion: security. istio. io/v1beta1 kind: AuthorizationPolicy metadata: { name: billing-allow, namespace: prod }
spec:
selector: { matchLabels: { app: billing } }
rules:
- from:
- source: { principals: ["spiffe://corp. local/ns/prod/sa/inventory"] }
to:
- operation: { ports: ["8080"], methods: ["POST"], paths: ["/proto. Billing/"] }
4) Միգրացիայի քաղաքականությունը 'կայունություն և միկրոակտիվացում
4. 1 Թայմաուտներ և գետեր
Timeouts: Նրանք անպայման դիմում են մարտահրավեր (connational/read/overall)։
Retries 'միայն idempotent վիրահատությունների համար։ backoff + jitter; per-try timeout-ը։
Istio (VirtualService):yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService metadata: { name: orders }
spec:
hosts: ["orders"]
http:
- route:
- destination: { host: orders, subset: v1, port: { number: 8080 } }
timeout: 5s retries:
attempts: 2 perTryTimeout: 2s retryOn: "5xx,connect-failure,reset"
4. 2 Circuit Breaker и outlier detection
CB 'սահմանափակում է միաժամանակ հարցումները/միացումը, պաշտպանելով ապստրիմները։
Systier: փակցնում է «վատ» instans սխալներով/լատենտով։
Istio (DestinationRule):yaml apiVersion: networking. istio. io/v1beta1 kind: DestinationRule metadata: { name: orders }
spec:
host: orders trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1024, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xxErrors: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
4. 3 Կանարյան և պայմաններով
Weighted 'v1/v2 քաշների բաժանումը։
Header-based: Դրոշներ/տիկնիկներ/tenae-ը կարող է տեղափոխվել նոր տարբերակը։
Session affinity: Hash բանալին (կոկիկ մասշտաբով)։
yaml http:
- match: [{ headers: { "x-experiment": { exact: "new" } } }]
route: [{ destination: { host: orders, subset: v2 } }]
- route:
- destination: { host: orders, subset: v1, weight: 90 }
- destination: { host: orders, subset: v2, weight: 10 }
4. 4 Fox Inject և քայքայումը
Ձերբակալման/սխալների միգրացիան կայունության և SLO-ի փորձարկման համար։
yaml fault:
delay: { fixedDelay: 300ms, percentage: { value: 10 } }
abort: { httpStatus: 503, percentage: { value: 1 } }
5) Ցանցային սահմանները ՝ ingress/egress և արտաքին ծառայություններ։
Ingress-gateway: Միակ մուտքի կետը արտաքին հաճախորդների համար mesh; ինտեգրումը WAF/OIDC/ratelimits-ի հետ։
Egress-gateway: Կենտրոնական ելքը թույլատրված հանրակացարանների ցուցակով, TIM-ստուգումը, հեռուստացույցի ձայնագրությունը։
International Entry: հայտարարում է արտաքին SDI/host որպես mesh (քաղաքականությունը և mTRC-origination կիրառելի են)։
yaml apiVersion: networking. istio. io/v1beta1 kind: ServiceEntry metadata: { name: payments-external }
spec:
hosts: ["api. payments. com"]
ports: [{ number: 443, name: https, protocol: TLS }]
resolution: DNS location: MESH_EXTERNAL
6) Multi-cluster, multi-network և հիբրիդ
Ընդհանուր PKI/trast տիրույթը 'միասնական SPIFFE ինքնությունը կլաստերների միջև։
Endpoint discovery: Ծառայությունների գնդակներ տարածաշրջանի միջև; տեղական գերակայություն և failover։
Զոնալ մեկուսացում 'տեղեկատվական-տարածաշրջանային քաղաքականություններ, սահմաններ և գերակայություններ։
VM-ը mesh-ում 'legacy/Stateful համակարգերը ինտեգրման և նույն քաղաքական գործիչների հետ։
7) Դիտարկումը, SLO-ն և գործողությունը
Метрики: `requests_total`, `request_duration_ms{p50,p95,p99}`, `5xx_rate`, `retry_attempts`, `cb_state`, `mTLS_authz_denied`.
Մուտքի լոգները 'կառուցվածքային, «traceparent», «user/tenae», «response _ flags»։
Թրեյսինգը 'վերնագրերի Auto-միգրացիան (W3C Trace Express), semplign, երգված է hop մակարդակում։
SLO 'նպատակներ r99/սխալ երթուղով (NOKO)։
Ալերտներ ՝ «5xx», «reset», «dier _ ejections», mTSA (handshake failures)։
8) Արտադրողականությունը և արժեքը
Sidecar ավելացնում է կեղծ (CPU/RAM/latency)։ Մենք օպտիմիզացնում ենք
Գոտկատեղը 'ներառել քաղաքականությունը այնտեղ, որտեղ անհրաժեշտ է։ ամենուր ծանր ֆիլտրեր չմիացնել։
Պուլներ 'բաժանել ճանապարհները (կրիտիկական/ֆոնային) տարբեր ուղղություններով և սահմաններով։
Ավելացումը 'p99 «սառը» երթուղիներում, հեռուստացույցի ծավալը (rate-limit logs/treiss)։
Դիտարկեք ambient/sidecarless ռեժիմները, եթե աջակցվում և համապատասխանում են պահանջներին։
9) Անվտանգություն և բաղադրիչներ
Նվազագույն անհրաժեշտ հասանելիությունը 'հստակ թույլ տալ ուղղություններ և մեթոդներ։
Նյարդային քաղաքականությունները/տենանտները 'ցանցային/հեղինակային սահմանները։
Միգրացիան 2019/SA 'պլանավորված և արտակարգ; կարճ TTL հավաստագրեր։
PII/գաղտնիքները 'դիմակավորում լոգարաններում/treiss; կոդավորումը լարերի վրա/հանգույցի մեջ։
Աուդիտ 'ով, երբ և ինչ քաղաքականություն փոխեց։ Երկհարկանի ապուրաններ։
10) Ինտեգրումը K8S մակարդակի հետ
Mesh քաղաքական գործիչները լրացնում են, և չեն փոխարինում NetworkPolicy-ին։
Ingress/egress-gateway-ում կարելի է կախել PodExpress/PSA մակարդակից ցածր։
NRA/Autockeiling 'հաշվի առեք ռետրերը/RF-ը, նրանք փոխում են բեռը։
Ածխաջրածինների պլանները 'Virtium Express +-ի միջոցով կանարական քաշը ավտոմատ առաջխաղացումը SLO-ով։
11) Ներդրման չեկի ցուցակ
- Որոշված են վստահության սահմանները և ներառում են STRICT mTSA-ը։
- Ներառում է AuthZ քաղաքականությունը 'ով, ում վրա, որ պորտերում/2019։
- Timeouts/retries և www.ier det.ru, որոշվում են idempotent ճանապարհները։
- Գրված են կանացի երթուղիներ և rollback պլան։ fox-inj.ru-ը միայն prod-ում է։
- Արտաքին կախվածությունները բերվել են egress-gateway և Windows Entry-ի միջոցով։
- Փոխաբերություններ, լույսեր, ճանապարհներ; dashbords և alerts p99/5xx/CB-ում։
- Նախատեսված են քվոտաներ/per-ten.ru/namespace։
- Medrunbooks: արտահոսք, CA հրաժարվելը, apstrim քայքայումը, զանգվածային 503/RESET։
- Multi-cluster պլանը (ընդհանուր PKI, տեղական գերակայություններ, DR սցենարներ)։
- Թեստ-օրեր (game days) 'անկում www.l plane, stop sidecar, ցանցի կոտրվածք, «թունավոր» apstrim։
12) Anti-patterna
Mesh «ամենուր և անմիջապես» առանց երթուղիների և SLO-ի բացառման, թանկ բարդություն է։
Retrai- ն լռելյայն է բոլոր մեթոդների համար, որոնք ցույց են տալիս էֆեկտներն ու լավինը։
Անջատված mTSA «ժամանակավորապես» կոմպոզիցիան մնում է ընդմիշտ։
Egress-ը առանց դարպասի տվյալների արտահոսքի/անհասկանալի կախվածություն ունի։
Համաշխարհային քաղաքականությունից մեկը բոլոր ծառայությունների համար ֆալշ անվտանգությունն է և կեղծ գործիքները։
Զրոյական obervability: միացրեցինք mesh-ը, բայց մենք չենք հավաքում մետրեր/treiss, մենք կորցնում ենք իմաստը։
13) Արագ բաղադրատոմսեր
Linkerd: Ներառել mTSA և policy։
yaml apiVersion: policy. linkerd. io/v1beta1 kind: Server metadata: { name: billing, namespace: prod }
spec:
podSelector: { matchLabels: { app: billing } }
port: 8080 apiVersion: policy. linkerd. io/v1beta1 kind: ServerAuthorization metadata: { name: billing-allow-inventory, namespace: prod }
spec:
server: { name: billing }
client:
meshTLS:
identities: ["inventory. prod. serviceaccount. identity. linkerd. cluster. local"]
Consul (L7 intent + splitter)
hcl
Kind = "service-router"
Name = "orders"
Routes = [{
Match { HTTP { PathPrefix = "/v1" } }
Destination { Service = "orders" }
}]
Kind = "service-splitter"
Name = "orders"
Splits = [
{ Weight = 90, ServiceSubset = "v1" },
{ Weight = 10, ServiceSubset = "v2" }
]
14) FAQ
Արդյո՞ ք mesh փոքրիկ թիմի կարիքը։
Եթե 3-5 ծառայություններ ավելի հաճախ չկան։ Սկսեք լավ ingress և կայունության գրադարաններից։ Միացրեք mesh-ը, երբ հայտնվում է mTRC-լռելյայն, մեկ քաղաքական և ուղու կարիքը առանց կոդի փոփոխության։
Ինչպե՞ ս վերահսկել արժեքը։
Չափեք կեղծ (CPU/RAM/latency) կրիտիկական ճանապարհների վրա, անջատեք ավելցուկ ֆիլտրերը, նվազեցրեք լոգարանների/թրեյսների ծավալը, օգտագործեք ռեժիմներ առանց sidecar այնտեղ, որտեղ դա անվտանգ է։
Հնարավո՞ ր է միջամտել mesh և ձեռքով տրամադրված պայմաններին։
Այո, բայց խուսափեք կրկնակի ուղղումից/կրկնվող հոսանքներից։ Միակ տեղը իրական է 'www.l plane։
Ի՞ նչն է ավելի կարևոր 'անվտանգությունը կամ արտադրողականությունը։
Լռելյայն անվտանգությունն է (mTSA, AuthZ)։ Արտադրողականությունը հասնում է connational pooice, www.ier detae, նպատակային երթուղիներով։
15) Արդյունքները
Windows Mesh-ը վերածում է ծառայությունների միջև ցանցը ծրագրավորված շերտի միասնական քաղաքականներով 'կոդավորումը և ինքնությունը, բարակ միկրոկլորտիզացիան և կայունությունը, հեռաչափությունը և քվոտան։ Սկսեք քննադատական ճանապարհներից, միացրեք STRICT mTSA-ը և ակնհայտ AuthZ-ը, տվեք թայմաուտներ/ռետտա/IV, վերահսկեք egress, չափեք p99 և 5xx-ը, կատարեք game days։ Այդ ժամանակ mesh կդառնա ածխաջրերի հուսալիությունը և արագությունը, ոչ թե անսպասելիության աղբյուրը։