GH GambleHub

Service Mesh: Istio, Linkerd

Service Mesh: Istio, Linkerd

1) Кызмат Mesh деген эмне жана ал керек болгондо

Service Mesh - бул mTLS, багыттоо, бузулууга туруштук берүү жана кодду кайра жазуусуз кызматтардын ортосунда байкоо жүргүзүүнү камсыз кылган тармактык маалымат/башкаруу тегиздигинин катмары.

Максаттары:
  • демейки коопсуздук (zero-trust, кызматтардын идентификациясы, кирүү саясаты).
  • Трафикти башкаруу (Canary/Blue-Green, A/B, shadowing).
  • Ишенимдүүлүк (retrailer, таймауттар, circuit breaking).
  • Байкалуучулук (метрика, логи, трейс).
  • Операциялык стандартташтыруу (код катары саясат, GitOps).
сетка алуу үчүн качан:
  • Көп билүү жана mTLS талабы менен микросервистер көп.
  • Биз колдонмону өзгөртүүсүз өнүккөн багыттоо/эксперимент сценарийлерин керек.
  • тармактык денгээлде аудит/саясат талаптары бар.

2) Istio vs Linkerd - кыскача салыштыруу

АспектIstioLinkerd
ПроксиEnvoy (L7)rust-proxy (L7 для http/grpc) + minimalist
ОрнотууIstioOperator/helm`linkerd install`/helm
КоопсуздукmTLS, AuthorizationPolicy, PeerAuthentication, WASM-фильтрыmTLS демейки, жөнөкөй саясат ('policy', 'server', 'serverauthorization')
Трафик менеджментиVirtualService, DestinationRule, Gateway, EnvoyFilterServiceProfile, TrafficSplit (SMI), retries/timeouts
БайкооPrometheus, Telemetry API, Envoy access logs, OpenTelemetry'linkerd viz' (tap/edges/routes), Prometheus, HOTEL Integration
Көп кластерNative multi-cluster, east-west gateway`linkerd multicluster` (gateways + service mirror)
Жайгаштыруу моделиSidecar и Ambient Mesh (ztunnel + waypoint)Sidecar
ТатаалдыгыФункционалдык жактан бай, татаалыраакЖөнөкөй, минималисттик, аз overhead
Кеңейүү жөндөмдүүлүгүWASM/EnvoyFilter, тышкы авторизаторлорЧектелген, бирок алдын ала

3) Архитектура жана жайгаштыруу моделдери

3. 1 Sidecar сетка (классикалык)

Ар бир Pod прокси-сайдкарды алат.
Артыкчылыктары: жетилгендик, толук L7-башкаруу.
Кемчиликтери: CPU/RAM үстөк чыгымдары, деплойлорду/оңдоону татаалдаштыруу.

3. 2 Istio Ambient Mesh

ztunnel (L4) түйүнүндө + waypoint proxies (L7) зарылчылыгы боюнча.
Артыкчылыктары: төмөн наркы жана татаалдыгы, акырындык менен L7 киргизүү.
кемчиликтери: жаңы, бардык эмес, L7-учурлар waypoint жок жеткиликтүү.

4) Идентификация жана mTLS (zero-trust)

4. 1 SPIFFE/SPIRE жана күбөлүктөр

Ар бир ворклоад SPIFFE ID: 'spiffe ://cluster. local/ns/NS/sa/SA`.
Аутентификация: кызматтардын ортосундагы өз ара TLS.
Ачкычтарды айлантуу - автоматтык түрдө (кыска 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 - mTLS демейки

'linkerd install' + 'linkerd inject' кийин кошулат.
Кластерлер - өздүк trust-anchor, ротация автоматтык.

5) Traffic башкаруу

5. 1 Istio: VirtualService (каттамдар, канарейка)

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) - кирүүчү/чыгуучу трафикти, TLS termination, mTLS passthrough башкарат.
Linkerd иштеп жаткан ingress контроллерлор менен иштейт (NGINX/Contour/Traefik); egress - NetworkPolicy/egress-gateway-үлгүлөрү аркылуу.
egress саясаты: ак домендердин тизмеси, SNI-саясат, түздөн-түз интернет тыюу салуу.

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 Context.
Istio/Envoy → OTLP в OpenTelemetry Collector; Linkerd - sidecar-логгер/апп-SDK аркылуу.

8. 3 нускалары (Exemplars)

"jump-to-trace" үчүн узактык гистограммаларына 'trace _ id' кошуу.

9) Rate limits, WAF, атайын чыпкалар

Istio: EnvoyFilter/WASM үчүн жергиликтүү rate limits, eksternal-rate-limit service (Redis), ошондой эле WAF-логика (Lua/WASM).
Linkerd: чектелген жергиликтүү колдоо; rate limit - ingress/шлюз денгээлде.

10) Көп кластердик

Istio: east-west gateway, жалпы PKI же trust-bundle, ServiceEntry аркылуу кызмат Discovery, Federation.
Linkerd: `linkerd multicluster link`, gateway per cluster, service-mirror контроллер.

Use-cases: актив-актив аймактар, трафикти локалдаштыруу, федералдык zero-trust.

11) аткаруу жана наркы

Sidecar mesh: ар бир Pod үчүн ашыкча CPU/RAM, узартылган латенттүүлүк (адатта steady-state боюнча hop боюнча + 1-3 ms).
Ambient (Istio): L4 үчүн аз керектөө, L7 чекити кирет.
Linkerd: жеңил прокси, адатта, аз overhead, бирок аз экстремалдык мүмкүнчүлүктөрү L7.
Practice: чейин/кийин p95/CPU өлчөө, SLO гейтс деградация үчүн сактап.

12) Коопсуздук

mTLS бардык жерде, кыска TTL, автоматтык айлануу.
Policy as Code (OPA/Gatekeeper, Kyverno) тыюу салуу үчүн 'authorizationPolicy: ALLOW all'.
Сырлар - CSI/Vault аркылуу, манифесттерде эмес.
Egress-Control: deny-by-default, так allow-барактар.
Айлана-чөйрө үчүн өзүнчө trust domains (prod/stage).

13) релиздер жана SLO-Gating менен бириктирүү

Canary/Blue-Green тор жолдору менен ишке ашырылат (кара мисалдар).
Метрикалык талдоо (Prometheus/SpanMetrics) боюнча Argo Rollouts AnalysisTemplate - burn-rate/p95/5xx боюнча автостоп/артка кетүү.
Графанадагы релиздердин түшүндүрмөлөрү: салыштыруу 'version = stable' canary '.

14) Анти-үлгүлөрү

"Бардык жерде жана дароо" сетка кирет → инфраструктура шок.
Proxy → TSDB/Log сактагычтан метриктер/логдордун кардиналдуулугун четке кагуу.
mTLS PERMISSIVE/opaque режиминде түбөлүккө калтыруу.
gateway/колдонмо ордуна EnvoyFilter ичинде татаал WAF/бизнес-логика кылууга аракет.
egress саясаты жок - Интернетте агып/комплаенс айланып.
менен Proxy ': 15000' debug ачык.

15) Чек-тизме киргизүү (0-60 күн)

0-15 күн

Моделдин тандоо: Sidecar vs Ambient (Istio )/Linkerd жүктөө кароо.
mTLS STRICT кирет, 1-2 маанилүү кызматтар үчүн негизги уруксат саясаты.
Негизги каттамдар (timeout/retries), RED/SLO дашборддору.

16-30 күн

Canary/TrafficSplit, ысык жолдордо outlier detection/circuit breaking.
HOTEL Integration: соода + Exemplars; alerty burn-rate.
Egress-gateways жана ак домен тизмелери; deny-by-default.

31-60 күн

Көп кластердик линк (керек болсо), федерация trust.
Policy as Code на AuthorizationPolicy/ServerAuthorization.
Game-day: окуя Simulation жана маршруттар/саясат кайра.

16) Жетилүү метрикасы

mTLS (STRICT/auto-rotate) ≥ 95% кызмат.
Канар/прогрессивдүү релиздер аркылуу трафиктин үлүшү 80% ≥.
Орточо overhead p95 <+ 5% базалык сызык (оптималдаштыруу кийин).
0 уруксатсыз ачык egress, 100% базалык AuthZ менен кызматтар.
RCA "жолго графиктен" ≤ 2 мүнөт (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 (VS/DR үчүн милдеттүү labels)

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) Эксплуатациялык кеңештер

GitOps аркылуу промоушен (semver) саясатын жана жолдорун чыгаруу.
Прокси байкоо: жеке дашборддор "proxy saturation" (CPU/heap, retries, 429/503).
Бюджет кардиналдуулук: белгилер 'route', 'code', 'destination' - гана шаблон.
namespace (NetworkPolicy/LimitRange) деңгээлине тармактык лимиттер/квоталар.
Команданын документтери: runbook "жолдорду/саясатты/mTLS ачкычтарын кантип жылдыруу керек".

19) Корутунду

Istio жана Linkerd бир маселени чечет - коопсуздук, ишенимдүүлүк жана тейлөө аралык байланыш көрүнүшүн стандартташтыруу - Бирок, ар кандай тереңдик жана ээлик наркы менен.

Бизге бай L7 мүмкүнчүлүктөрү жана ийкемдүү саясатчылар керек - Istio (жүктөрдү азайтуу үчүн Ambient караңыз).
жөнөкөй жана чакан overhead керек - Linkerd алып.

Кандай гана тор тандап албаңыз: mTLSди демейки түрдө күйгүзүңүз, багыттоону код катары башкарыңыз, метриканы трейстерге байланыштырыңыз, egress 'ти жабыңыз жана релиздерге SLO-гейтинг кошуңуз. Анда тармак катмары мындан ары "кара куту" болуп калат жана туруктуулуктун жана өзгөрүүлөрдүн ылдамдыгынын болжолдуу куралы болуп калат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.