GH GambleHub

Service Mesh: Istio, Linkerd

Service Mesh: Istio, Linkerd

1) Ի՞ նչ է Black Mesh-ը և երբ այն անհրաժեշտ է

Mesh-ը ցանցային տվյալների/կառավարման ինքնաթիռի շերտն է, որն ապահովում է mTRK-ի միջոցով, միկրոօրգանիզացիան, մերժումը և ծառայությունների միջև դիտարկումը առանց կոդի վերաշարադրելու։

Նպատակները

Լռելյայն անվտանգությունը (zero-trust, ծառայությունների ինքնությունը, հասանելիության քաղաքականությունը)։

Կառավարումը (Canary/Blue-Green, A/B, shadowing)։

Մոսկվան (retrai, թայմաուտներ, circuit breaking)։

Դիտարկումը (metriks, logs, treiss)։

Վիրահատական ստանդարտացում (քաղաքականությունը որպես կոդ, GitOps)։

Երբ վերցնել mesh

Շատ միկրովայրկյաններ պոլիգալունությամբ և mTSA-ի պահանջով։

Անհրաժեշտ է առաջադեմ սցենարներ ուղղորդման/փորձարկումների առանց դիմումի փոփոխության։

Կան պահանջներ/քաղաքական ցանցային մակարդակում։

2) Istio vs Linkerd-ը ռուսական համեմատություն է։

ԱսպեկտըIstioLinkerd
ՄոսկվանEnvoy (L7)rust-proxy (L7 для http/grpc) + minimalist
ՏեղադրումIstioOperator/helm`linkerd install`/helm
ԱնվտանգությունmTLS, AuthorizationPolicy, PeerAuthentication, WASM-фильтрыMTSA լռելյայն, պարզ քաղաքականությունները («policy», «serverauthorization»)
ԿառավարումըVirtualService, DestinationRule, Gateway, EnvoyFilterServiceProfile, TrafficSplit (SMI), retries/timeouts
ԴիտարկումըPrometheus, Telemetry API, Envoy access logs, OpenTelemetry«linkerd viz» (tap/edges/routes), Prometheus, OTEL 2019
ԲազմաբնույթNative multi-cluster, east-west gateway`linkerd multicluster` (gateways + service mirror)
Ստանդարտ մոդելSidecar и Ambient Mesh (ztunnel + waypoint)Sidecar
ԲարդությունՖունկցիոնալ հարուստ է, ավելի բարդԱվելի հեշտ, նվազագույն, ավելի քիչ overhead
ԸնդլայնումըWASM/EnvoyProter, արտաքին հեղինակներԱվելի սահմանափակ, բայց կանխատեսելի

3) Ճարտարապետություն և մոդելներ

3. 1 Sidecar mesh (դասական)

Յուրաքանչյուր Pod-ը ստանում է sidkar-sidkar։

Պլյուսներ 'հասունություն, լիակատար L7 վերահսկողություն։

Մինուսները 'CPU/RAM ծախսերը, դոպլոների բարդությունը/կարգաբերումը։

3. 2 Istio Ambient Mesh

ztunnnel (L4) 108 + waypoint proxies (L7) անհրաժեշտության դեպքում։

Պլյուսներ ՝ ցածր արժեքը և բարդությունը, L7 աստիճանական տրամագիծը։

Մինուսները ՝ ավելի նոր, ոչ բոլոր L7-Cass-ները հասանելի են առանց waypoint-ի։

4) Ինքնություն և mTSA (zero-trust)

4. 1 SPIFFE/SPIRE և հավաստագրեր

Յուրաքանչյուր vorcloade նշանակվում է SPIFE ID: "spiffe ://cluster։ local/ns/NS/sa/SA`.

Վավերացում 'փոխադարձ TFC ծառայությունների միջև։

Միգրացիայի ռոտացիան ինքնաբերաբար (կարճ TTL)։

4. 2 Istio (PeerAuthentication + DestinationRule)

yaml apiVersion: security. istio. io/v1 kind: PeerAuthentication metadata: { name: default, namespace: payments }
spec:
mtls: { mode: STRICT }
apiVersion: networking. istio. io/v1 kind: DestinationRule metadata: { name: payments-dr, namespace: payments }
spec:
host: payments. svc. cluster. local trafficPolicy:
tls: { mode: ISTIO_MUTUAL }

4. 3 Linkerd - mTSA լռելյայն

Այն միանում է «linkerd install» + «linkerd inject» -ից հետո։

Կլաստերները սեփական trust-anchor են, անջատումը ավտոմատ է։

5) Նախկին կառավարումը

5. 1 Istio: Virtium Express (երթուղիներ, կանանցներ)

yaml apiVersion: networking. istio. io/v1 kind: VirtualService metadata: { name: payments }
spec:
hosts: ["payments"]
http:
- route:
- destination: { host: payments, subset: v1 } # stable weight: 90
- destination: { host: payments, subset: v2 } # canary weight: 10 retries: { attempts: 2, perTryTimeout: 300ms }
timeout: 2s
DestinationRule (LB/CB):
yaml apiVersion: networking. istio. io/v1 kind: DestinationRule metadata: { name: payments }
spec:
host: payments subsets:
- name: v1 labels: { version: v1 }
- name: v2 labels: { version: v2 }
trafficPolicy:
loadBalancer: { simple: LEAST_CONN }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50

5. 2 Linkerd: ServiceProfile + TrafficSplit

yaml apiVersion: linkerd. io/v1alpha2 kind: ServiceProfile metadata:
name: payments. default. svc. cluster. local spec:
routes:
- name: POST /withdraw condition:
method: POST pathRegex: "/withdraw"
isRetryable: true timeout: 2s apiVersion: split. smi-spec. io/v1alpha2 kind: TrafficSplit metadata: { name: payments }
spec:
service: payments backends:
- service: payments-v1 weight: 90
- service: payments-v2 weight: 10

6) Ingress/Egress և API դարպասը

Istio Gateway (ingress/egress) - կառավարում է մուտքի/ելքային օպտիկան, TMS termination, mTMS passthrough։

Linkerd-ը աշխատում է գոյություն ունեցող ingress վերահսկիչների հետ (NGINX/Delour/Traefik); egress - NetworkPolicy/egress-gateway-ի միջոցով։

Egress-ի քաղաքական գործիչները 'սպիտակուցների սպիտակ ցուցակները, PPI-policy-ը, ուղղակի ինտերնետի արգելքը։

7) Հեղինակային իրավունք և քաղաքականություն

7. 1 Istio AuthorizationPolicy (RBAC/ABAC)

yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy metadata: { name: allow-withdraw, namespace: payments }
spec:
selector: { matchLabels: { app: payments } }
action: ALLOW rules:
- from:
- source:
principals: ["spiffe://cluster. local/ns/api/sa/gateway"]
to:
- operation:
methods: ["POST"]
paths: ["/withdraw"]
when:
- key: request. auth. claims[role]
values: ["cashout"]

7. 2 Linkerd policy (server + serverauthorization)

yaml apiVersion: policy. linkerd. io/v1beta3 kind: Server metadata: { name: payments-server, namespace: payments }
spec:
podSelector: { matchLabels: { app: payments } }
port: 8080 apiVersion: policy. linkerd. io/v1beta3 kind: ServerAuthorization metadata: { name: allow-gateway, namespace: payments }
spec:
server: { name: payments-server }
client:
meshTLS:
identities: [".ns. api. serviceaccount. identity. linkerd. cluster. local"]

8) Դիտողությունն ու հեռուստատեսությունը

8. 1 Մետրիկա

Istio Telemetry API → Prometheus: `istio_requests_total`, `istio_request_duration_milliseconds_bucket`, `istio_tcp_received_bytes_total`.
Linkerd viz: `request_total`, latency p50/p95/p99, `success_rate`.

8. 2 Թրեյսներ և լոգներ

Փորձեք W3C Trace Prodext-ը։

Istio/Envoy → OTLP в OpenTelemetry Collector; Linkerd-ը sidecar-logers/app-MSK-ի միջոցով է։

8. 3 Alexemplars (Exemplars)

Ավելացրեք «trace _ id» տևողության հիստոգրամներին «jump-to-trace» -ի համար։

9) Rate limits, WAF, կաստոմային ֆիլտրեր,

Istio: EnvoyProter/WASM տեղական rate limits, eksternal-rate-limit to (Redis), ինչպես նաև WAF տրամաբանությունը (Lua/WASM)։

Linkerd: Սահմանափակ niational աջակցություն; rate limit - ingress/նավի մակարդակում։

10) Բազմաբնակարան

Istio: east-west gateway, ընդհանուր PKI կամ trust-bundle, Discovery ծառայության միջոցով Eure-west gateway, Federation։

Linkerd: `linkerd multicluster link`, gateway per cluster, service-mirror контроллер.

Use-cases: 105-ռուսական տարածքներ, միգրացիայի տեղայնացումը, որը վերացվել է zero-trust-ը։

11) Արտադրողականությունը և արժեքը

Sidecar mesh: CPU/RAM-ի յուրաքանչյուր Pod-ի համար, ավելացված լատենտ (սովորաբար + 1-3 նմ steady-state)։

Ambient (Istio) 'ավելի քիչ L4, L7-ը միացված է կետային։

Linkerd: Թեթև շարժիչը սովորաբար ավելի քիչ է, քան overhead-ը, բայց ավելի քիչ L7-ի ծայրահեղ հնարավորությունները։

Պրակտիկա 'չափել p95/CPU մինչև/հետո, պահեք SLO գեյտերը քայքայման համար։

12) Անվտանգություն

MTMS-ը ամենուրեք, TTL-ի կարճ, ավտոմատ նավարկումը։

Policy as Code (OPA/Gatekeeper, Kyverno) արգելելու համար 'authorizae Policy: ALOW all'։

Գաղտնիքները CSI/Vox-ի միջոցով չեն մանիֆեստներում։

Egress-վերահսկողությունը ՝ deny-by-international, ակնհայտ allow-թերթերը։

Առանձին trust domains շրջակա միջավայրի համար (108/stage)։

13) Ինտեգրումը և SLO-geiting-ը

Canary/Blue-Green-ն իրականացվում է mesh երթուղիներով (տե՛ ս օրինակները)։

Մետրիկի վերլուծությունը (Prometheus/Windows Metr.ru) Argo Rollouts AnalysTemplate-ում ավտոստոպ/ռեպորտաժ է burn-rate/p95/5xx-ում։

Գրաֆանայում ածխաջրածինների նույնականացումը 'համեմատություն' «version = stable 'canary»։

14) Anti-patterna

Միացրեք mesh «ամենուր և անմիջապես» ենթակառուցվածքի հոսքը։

Անտեսել metric/logs-ի կարդինալությունը TSDB/logrance ծանրաբեռնվածությունը։

Թողեք mTSA-ը PERMISSIVE/opaque ռեժիմում։

Փորձել անել բարդ WAF/բիզնես տրամաբանություն EnvoyProter-ի ներսում gateway/հավելվածի փոխարեն։

Չկա egress քաղաքականություն, ինտերնետում արտահոսք/շրջանցել կոմպլանսը։

Քրիս '15,000' debug-ը բացվում է։

15) Ներդրման թուղթ (0-60 օր)

0-15 օր

Մոդելի ընտրությունը 'Sidecar vs Ambient (Istio )/Linkerd-ը բեռների մոդուլով։

Ներառել mTSA STRICT-ը, 1-2 կրիտիկական ծառայությունների հիմնական քաղաքականությունները։

Հիմնական երթուղիները (timeout/retries), RED/SLO dashbords։

16-30 օր

Canary/TrafficSplit, www.ier det.ru/circuit breaking տաք ճանապարհների վրա։

OTEL ինտեգրումը 'treiss + Exemplars; ալերտներ burn-rate։

Egress-gateways-ը և սպիտակուցների սպիտակ ցուցակները։ deny-by-default.

31-60 օր

Բազմաբնակարան ոսպնյակ (եթե պետք է), federation trust։

Policy as Code на AuthorizationPolicy/ServerAuthorization.

Game-day-ը 'երթուղիների սիմուլյացիան և արձագանքումը/քաղաքական։

16) Հասունության մետրերը

MTSA (STRICT/112-rotate) ծածկույթը ծառայության 95 տոկոսն է։

Մասնաբաժինը կատարվում է կանարեկային/առաջադիմական հատվածների միջոցով 3880 տոկոսով։

Միջին overhead p95 <+ 5 տոկոսը ռուսական գծից (օպտիմիզացումից հետո)։

0 բաց egress առանց թույլտվության, 100 տոկոսը հիմնական AuthZ ծառայություններով։

RCA «ուղու գրաֆիկից» 242 րոպե (p50)։

17) «Քաղաքականության որպես կոդ» օրինակները

Gatekeeper (PERMISSIVE արգելքը վաճառքում)

yaml apiVersion: constraints. gatekeeper. sh/v1beta1 kind: K8sIstiomTLSStrict metadata: { name: deny-permissive-prod }
spec:
match:
kinds: [{ apiGroups: ["security. istio. io"], kinds: ["PeerAuthentication"] }]
namespaces: ["prod-"]
parameters:
allowedModes: ["STRICT"]

Kyverno (պարտադիր labels VS/DR համար)

yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata: { name: require-mesh-labels }
spec:
rules:
- name: vs-dr-labels match:
any:
- resources:
kinds: ["VirtualService","DestinationRule"]
validate:
message: "owner and service labels required"
pattern:
metadata:
labels:
owner: "?"
service: "?"

18) Գործառնական խորհուրդներ

Տարբերեք քաղաքական և երթուղիները (semver), խթանված GitOps-ի միջոցով։

Հետազոտության դիտարկումը '«proxy saturation» (CPU/heap, retries, 429/503)։

Կարդինալության բյուջեն ՝ www.ro.ru, «code», «destination» միայն ձևանմուշային է։

Ցանցային լիմիտներ/քվոտաներ namespace մակարդակի վրա (NetworkPolicy/LimitRange)։

Ռուսաստանի թիմերը ՝ runbook «Ինչպե՞ ս արձագանքել երթուղիները/քաղաքականությունը/mTSA բանալիները»։

19) Եզրակացություն

Istio և Linkerd-ը լուծում են մեկ խնդիր 'ստանդարտացնել անվտանգությունը, կայունությունը և տեսանելիությունը, բայց դա անում են տարբեր խորությամբ և ունեցվածքով։

Մեզ անհրաժեշտ են հարուստ L7 հնարավորություններ և ճկուն քաղաքականություններ, վերցրեք Istio-ը (Mbient)։

Պետք է պարզություն և փոքր overhead - վերցրեք Linkerd-ը։

Անկախ նրանից, թե ինչ mesh եք ընտրել, միացրեք mTRK լռելյայն, կառավարեք միկրոավտոբուսը որպես կոդ, միացրեք փոխարկիչները թրեյզերի հետ, փակեք egress-ը և ավելացրեք SLO-ginting։ Այդ ժամանակ ցանցային շերտը կդադարի լինել «սև արկղը» և կդառնա կանխատեսելի կայունության և փոփոխության արագության գործիք։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։