Хадамоти Mesh: Истио, Линкерд
Хадамоти Mesh: Истио, Линкерд
1) Service Mesh чист ва кай лозим аст
Service Mesh як қабати ҳавопаймои шабакавӣ/назоратӣ мебошад, ки M-TLS-и ниҳоӣ, масир, таҳаммулпазирии хато ва мушоҳидаҳоро дар байни хидматҳо бидуни навиштани код таъмин мекунад.
Вазифаҳо:- Амнияти пешфарз (сифр-эътимод, мушаххасоти хидмат, сиёсати дастрасӣ).
- Идоракунии ҳаракат (Canary/Blue-Green, A/B, соя).
- Эътимоднокӣ (ретрас, танаффус, шикастани ноҳиявӣ).
- Мушоҳида (ченакҳо, гузоришҳо, роҳҳо).
- Стандартизатсияи амалиётӣ (сиёсатҳо ҳамчун код, GIT-ҳо).
- Бисёре аз microservices бо бисёрзабонӣ ва талаботи MTLS.
- Сенарияҳои пешрафтаи масир/таҷриба бидуни тағир додани барнома ниёз доранд.
- Дар сатҳи шабака талаботҳои аудит/сиёсат мавҷуданд.
2) Истио vs Линкерд - муқоисаи кӯтоҳ
3) Моделҳои меъморӣ ва густариш
3. 1 Фикрию Sidecar (классикӣ)
Ҳар як Pod sidecar прокси мегирад.
Тарафдор: камолот, назорати пурраи L7.
Омӯз: сарбории CPU/RAM, мураккабии фарсудашавӣ/debugging.
3. 2 Истио Амбиент Mesh
ztunnel (L4) дар гиреҳ + proxies waypoint (L7) мувофиқи талабот.
Тарафдор: арзиши камтар ва мураккабӣ, тадриҷан дохил кардани L7.
Омӯз: Навтар, на ҳама парвандаҳои L7 бидуни нуқта дастрасанд.
4) Ҳувият ва MTLS (ба сифр эътимод)
4. 1 SPIFFE/SPIRE ва шаҳодатномаҳо
Ба ҳар як машқ ID SPIFFE дода мешавад: 'spiffe ://claster. маҳаллӣ/ns/NS/sa/SA '.
Аутентификатсия: TLS мутақобила байни хидматҳо.
Гардиши калидҳо - ба таври худкор (TTL кӯтоҳ).
4. 2 Истио (Аутентификатсия + Маҳалли таъинот)
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 - Бо нобаёнӣ MTLS
Баъд аз насби 'linkerd' + 'inkerd inject' фаъол аст.
Кластерҳо - эътимод-лангари худ, гардиши автоматӣ.
5) Идоракунии ҳаракат
5. 1 Истио: Хадамоти виртуалӣ (хатсайрҳо, канарейкаҳо)
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
Макони таъинот (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: Профили хидматрасонӣ + Traffic
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) - трафики воридшаванда/баромадро назорат мекунад, қатъи TLS, гузаргоҳи M TLS.
Linkerd бо контроллерҳои мавҷудаи воридшавӣ кор мекунад (NGINX/Contour/Traefik); egress - тавассути шабакаҳо/шабакаҳо.
Сиёсати Egress: сафедпӯстони домейн, сиёсати SNI, манъи мустақими интернет.
7) Авторизатсия ва сиёсат
7. 1 Авторизатсияи Истио (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 (сервер + 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 _ quests _ total', 'istio _ request _ dertation _ milliseconds _ bucket', 'istio _ tcp _ geted _ bytes _ total'.
Linkerd viz: 'дархост _ total', таъхири p50/p95/p99, 'муваффақият _ дараҷа'.
8. 2 Роҳҳо ва гузоришҳо
Контексти пайгирии W3C-ро пахш кунед.
Истио/Фиристанда → OTLP v Коллектори Open Telemetry; Linkerd - тавассути регистрҳои sidecar/барнома SDK.
8. 3 Мисолҳо
Илова кардани trace _ id ба гистограммаҳои давомдор барои ҷаҳидан ба пайгирӣ.
9) Меъёри меъёрҳо, WAF, филтрҳои фармоишӣ
Истио: Envoy Filter/WASM барои маҳдудиятҳои сатҳи маҳаллӣ, хадамоти маҳдудияти eksternal (Redis) ва инчунин мантиқи WAF (Lua/WASM).
Linkerd: дастгирии маҳдуди маҳаллӣ; меъёри меъёр - дар сатҳи воридшавӣ/дарвоза.
10) Кластери бисёр
Истио: дарвозаи шарқу ғарб, муштараки PKI ё бастаи эътимод, кашфи хидмат тавассути Service
Linkerd: 'пайванди бисёрҷанбаи пайвандак', дарвоза барои як кластер, контроллери хидматрасонӣ.
Ҳолатҳои истифода: минтақаҳои дороиҳо, маҳаллисозии ҳаракат, эътимоднокии сифр.
11) Иҷро ва арзиши
Торҳои Sidecar: CPU/RAM аз як Pod, таъхири зиёд (одатан + 1-3 мс дар як хоп дар ҳолати устувор).
Муҳити атроф (Истио): истеъмоли камтар барои L4, L7 нуқтаи фурӯзон аст.
Linkerd: Прокси сабук одатан сарбории камтар дорад, аммо қобилияти шадидтари L7.
Амал: пеш аз/баъд аз p95/CPU чен кунед, дарвозаҳои SLO-ро барои таназзул нигоҳ доред.
12) Бехатарӣ
MTLS дар ҳама ҷо, TTL кӯтоҳ, гардиши худкор.
Сиёсат ҳамчун Кодекс (OPA/Gatekeeper, Kyverno) барои 'иҷозат додан: LANST' prohibitions.
Асрҳо - тавассути CSI/Vault, на дар манифест.
Назорати Egress: рад бо нобаёнӣ, рӯйхати иҷозатномаҳои возеҳ.
Соҳаҳои алоҳидаи эътимод барои муҳит (prod/stage).
13) Ҳамгироӣ бо релизҳо ва дарвозаҳои SLO
Канария/Кабуд-Грин тавассути хатсайрҳои фикрию амалӣ карда мешаванд (ба мисолҳо нигаред).
Таҳлили ченакҳо (Prometheus/SpAN Metrics) дар Argo Rollouts Analysis - Hitchhicking/Rollback at burn-rate/p95/5xx.
Эзоҳҳои релизҳо дар Графана: муқоиса 'версия = устувор' канарӣ '.
14) Анти-намунаҳо
Дохил кардани фикрию "дар ҳама ҷо ва якбора" → зарбаи инфрасохторӣ.
Кардинализатсияи ченакҳо/гузоришҳоро аз прокси → аз ҳад зиёд бор кардани анбори TSDB/log сарфи назар кунед.
MTLS-ро дар ҳолати PERMISSIVE/ношаффоф то абад гузоред.
Кӯшиш кунед, ки ба ҷои дарвоза/барнома мантиқи мураккаби WAF/business -ро дар дохили Envoy
Ягон сиёсати egress - ихроҷи интернет/гузариши мувофиқат.
Проксиҳо бо ': 15000' debug барои берун кушода.
15) Рӯйхати назорати амалисозӣ (0-60 рӯз)
0-15 рӯз
Интихоби модел: Sidecar vs Ambient (Istio )/Linkerd аз рӯи профили сарборӣ.
Даргиронидани MTLS STRICT, сиёсати асосии авторизатсия барои 1-2 хидматҳои муҳим.
Хатсайрҳои асосӣ (вақт/такрорӣ), панелҳои RED/SLO.
16-30 рӯз
Canary/Traffical .Split, муайянкунии берунӣ/шикастани гардиш дар роҳҳои гарм.
Интегратсияи OTEL: роҳҳо + Намунаҳо; ҳушдори сӯхтан.
Egress-дарвозаҳо ва сафедпӯстони домейн; инкор бо нобаёнӣ.
31-60 рӯз
Пайвасти бисёр кластерӣ (агар лозим бошад), федератсия эътимод дорад.
Сиёсат ҳамчун Кодекс на Авторизатсия/Сиёсат/Сервер Авторизатсия.
Рӯзи бозӣ: моделиронии ҳодиса ва хатсайр/сиёсат.
16) Нишондиҳандаҳои камолот
фарогирии MTLS (STRICT/auto-rotate) 95% хидматҳоро фаро мегирад.
Ҳиссаи трафик тавассути релизҳои канарӣ/прогрессивӣ ≥ 80%.
Маблағи миёнаи ҳавопаймо p95 <+ 5% (пас аз оптимизатсия).
0 egress кушода бидуни иҷозат, 100% хидматҳо бо Auth
RCA "аз ҷадвал то пайгирӣ" ≤ 2 дақиқа (саҳ. 50).
17) Намунаҳои "сиёсат ҳамчун рамз"
Дарвозабон (манъи 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 (нишонаҳои зарурӣ барои 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) Маслиҳатҳои амалиётӣ
Сиёсатҳои версия ва хатсайрҳо (семвер), таблиғ тавассути GIT.
Назорати прокси: панелҳои инфиродӣ "пур кардани прокси" (CPU/heap, retries, 429/503).
Буҷаи кардиналӣ: тамғакоғазҳо 'маршрут', 'рамз', 'таъинот' - танҳо қолаб.
Маҳдудиятҳои шабака/квотаҳои фазои номӣ (Network
Ҳуҷҷатҳои фармондеҳӣ: дафтарчаи "чӣ гуна хатсайрҳо/сиёсат/калидҳоро бозмедорад".
19) Хулоса
Истио ва Линкерд як чизро иҷро мекунанд - бехатарӣ, эътимоднокӣ ва намоёни алоқаи байнисоҳавӣ - аммо инро дар умқи гуногун ва арзиши моликият иҷро кунед.
Ба шумо қобилиятҳои бойи L7 ва сиёсатҳои тағйирпазир лозиманд - Истио гиред (барои кам кардани сарборӣ Ambientро баррасӣ кунед).
Содда ва сарбории хурд лозим аст - гирифтани Linkerd.
Кадом фикреро, ки шумо интихоб мекунед: MTLS-ро бо нобаёнӣ фаъол созед, масирро ҳамчун рамз идора кунед, ченакҳоро бо сурудҳо, egress наздик кунед ва дарвозаҳои SLO-ро ба релизҳо илова кунед. Он гоҳ қабати шабака "қуттии сиёҳ" -ро қатъ мекунад ва ба воситаи пешгӯишаванда барои устуворӣ ва суръати тағирот табдил меёбад.