O'zbek

Servis mesh texnologiyasi va Istio tatbiqiga oid chuqur qo'llanma. Unda bulutli ilovalar uchun arxitektura, konfiguratsiya, joylashtirish strategiyalari va eng yaxshi amaliyotlar yoritilgan.

Servis Mesh: Istio tatbiqini chuqur o'rganish

Bugungi bulutli dunyoda mikroservislar arxitekturasi tobora keng tarqalmoqda. Masshtablash, moslashuvchanlik va tezroq ishlab chiqish sikllari kabi afzalliklarni taqdim etish bilan birga, ular servislararo aloqa, kuzatuvchanlik, xavfsizlik va boshqaruv bilan bog'liq murakkabliklarni ham keltirib chiqaradi. Servis mesh ushbu muammolarni hal qilish uchun muhim arxitektura namunasi sifatida paydo bo'ladi. Ushbu keng qamrovli qo'llanma servis mesh texnologiyasiga, xususan, keng qo'llaniladigan ochiq manbali servis mesh dasturi bo'lgan Istioga chuqur kirib boradi.

Servis Mesh nima?

Servis mesh — bu mikroservislar arxitekturasida servislararo aloqani boshqarish uchun mo'ljallangan maxsus infratuzilma qatlami. U servislararo aloqa murakkabliklarini abstraktlashtirib, ilova kodiga o'zgartirishlar kiritishni talab qilmasdan trafikni boshqarish, xavfsizlik va kuzatuvchanlik kabi xususiyatlarni taqdim etadi. Buni har bir servis nusxasi yonida joylashgan va barcha tarmoq trafigini ushlab turuvchi va boshqaruvchi "sidecar" proksi deb o'ylang.

Servis meshdan foydalanishning asosiy afzalliklari:

Istio bilan tanishuv

Istio — bu mikroservislarni boshqarish va xavfsizligini ta'minlash uchun keng qamrovli funksiyalarni taqdim etuvchi mashhur ochiq manbali servis meshdir. U o'zining ma'lumotlar tekisligi sifatida Envoy proksidan foydalanadi va meshni sozlash va boshqarish uchun kuchli boshqaruv tekisligini taklif etadi.

Istio Arxitekturasi

Istio arxitekturasi ikkita asosiy komponentdan iborat:

Istio Arxitektura Diagrammasi: (Bu yerda ma'lumotlar tekisligini servislar yonidagi Envoy proksilari va boshqaruv tekisligini Istiod bilan ko'rsatuvchi diagrammani tasavvur qiling. Haqiqiy tatbiqda rasm bo'ladi, lekin bu matnli javob uchun u shunchaki tasvirlangan.)

Istioni o'rnatish va sozlash

Konfiguratsiyaga kirishishdan oldin, Istioni o'rnatishingiz kerak. Mana o'rnatish jarayonining umumiy ko'rinishi:

  1. Dastlabki talablar:
    • Kubernetes klasteri (masalan, Minikube, kind, Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS)).
    • Sizning Kubernetes klasteringizga ulanish uchun sozlangan kubectl buyruqlar satri vositasi.
    • Istio CLI vositasi (istioctl).
  2. Istioni yuklab olish: Rasmiy Istio veb-saytidan eng so'nggi Istio relizini yuklab oling.
  3. Istio CLI'ni o'rnatish: istioctl binar faylini tizimingizning PATH'iga qo'shing.
  4. Istio Asosiy Komponentlarini o'rnatish: Kubernetes klasteringizga asosiy Istio komponentlarini joylashtirish uchun istioctl install dan foydalaning. Turli joylashtirish stsenariylari uchun turli profillarni tanlashingiz mumkin (masalan, default, demo, production). Masalan: istioctl install --set profile=demo.
  5. Nom fazosini belgilash: Maqsadli nom fazongizda Istio inyeksiyasini yoqish uchun kubectl label namespace <namespace> istio-injection=enabled buyrug'idan foydalaning. Bu Istioga sizning podlaringizga Envoy sidecar proksisini avtomatik ravishda kiritishni aytadi.
  6. Ilovangizni joylashtirish: Mikroservis ilovangizni belgilangan nom fazosiga joylashtiring. Istio har bir podga Envoy sidecar proksisini avtomatik ravishda kiritadi.
  7. O'rnatishni tekshirish: kubectl get pods -n istio-system yordamida Istio boshqaruv tekisligi va ma'lumotlar tekisligi komponentlari to'g'ri ishlayotganini tekshiring.

Misol: Istioni Minikube'ga o'rnatish (soddalashtirilgan):

istioctl install --set profile=demo -y
kubectl label namespace default istio-injection=enabled

Istio Konfiguratsiyasi: Trafikni boshqarish

Istioning trafikni boshqarish xususiyatlari sizga servislar orasidagi trafik oqimini nazorat qilish imkonini beradi. Asosiy konfiguratsiya resurslariga quyidagilar kiradi:

VirtualService Misoli

Ushbu misol HTTP sarlavhalariga asoslanib, trafikni servisning turli versiyalariga qanday yo'naltirishni ko'rsatadi. Aytaylik, sizda `productpage` servisining ikkita versiyasi bor: `v1` va `v2`.


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - productpage
  gateways:
  - productpage-gateway
  http:
  - match:
    - headers:
        user-agent:
          regex: ".*Mobile.*"
    route:
    - destination:
        host: productpage
        subset: v2
  - route:
    - destination:
        host: productpage
        subset: v1

Ushbu VirtualService User-Agent sarlavhasida "Mobile" so'zi bo'lgan foydalanuvchilardan kelgan barcha trafikni `productpage` servisining `v2` to'plamiga yo'naltiradi. Boshqa barcha trafik `v1` to'plamiga yo'naltiriladi.

DestinationRule Misoli

Ushbu misol `productpage` servisi uchun DestinationRule'ni belgilaydi, oddiy aylanma (round-robin) yuklama muvozanati siyosatini ko'rsatadi va turli versiyalar uchun to'plamlarni aniqlaydi.


apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

Ushbu DestinationRule `version` yorlig'iga asoslangan ikkita to'plamni, `v1` va `v2` ni belgilaydi. Shuningdek, `productpage` servisiga keladigan barcha trafik uchun aylanma (round-robin) yuklama muvozanati siyosatini belgilaydi.

Istio Konfiguratsiyasi: Xavfsizlik

Istio mustahkam xavfsizlik xususiyatlarini taqdim etadi, jumladan:

O'zaro TLS (mTLS)

Istio har bir servis uchun X.509 sertifikatlarini avtomatik ravishda taqdim etadi va boshqaradi, bu esa mTLS'ni sukut bo'yicha yoqadi. Bu servislar o'rtasidagi barcha aloqalarning autentifikatsiya qilinishi va shifrlanishini ta'minlaydi, bu esa tinglash va o'zgartirishlarning oldini oladi.

Avtorizatsiya Siyosati Misoli

Ushbu misol faqat `reviews` servisiga `productpage` servisiga kirishga ruxsat beruvchi Avtorizatsiya Siyosatini qanday yaratishni ko'rsatadi.


apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: productpage-access
spec:
  selector:
    matchLabels:
      app: productpage
  action: ALLOW
  rules:
  - from:
    - source:
        principals:
        - cluster.local/ns/default/sa/reviews

Ushbu siyosat `default` nom fazosidagi faqat `reviews` servis hisobidan kelgan so'rovlarga `productpage` servisiga kirishga ruxsat beradi. Boshqa barcha so'rovlar rad etiladi.

Istio Konfiguratsiyasi: Kuzatuvchanlik

Istio boy kuzatuvchanlik xususiyatlarini taqdim etadi, jumladan:

Metrikalar va Monitoring

Istio avtomatik ravishda keng ko'lamli metrikalarni yig'adi, ularga Prometheus orqali kirish va Grafana'da vizualizatsiya qilish mumkin. Ushbu metrikalar sizning mikroservislaringizning holati va unumdorligi haqida qimmatli ma'lumotlar beradi.

Taqsimlangan Treysing

Istio'ning taqsimlangan treysing imkoniyatlari so'rovlarni bir nechta servislar orqali o'tayotganda kuzatishga imkon beradi, bu esa kechikishdagi qiyinchiliklar va bog'liqliklarni aniqlashni osonlashtiradi. Sukut bo'yicha, Istio treysing bekendi sifatida Jaeger'ni qo'llab-quvvatlaydi.

Istio bilan joylashtirish strategiyalari

Istio turli xil joylashtirish strategiyalarini osonlashtiradi, bu esa ilovalarni silliq va xavfsiz yangilash imkonini beradi:

Kanareyka (Canary) joylashtirish misoli

Istio'ning trafikni boshqarish xususiyatlaridan foydalanib, siz osongina kanareyka joylashtirishni amalga oshirishingiz mumkin. Masalan, siz trafikning 10 foizini servisingizning yangi versiyasiga va 90 foizini eski versiyasiga yo'naltirishingiz mumkin. Agar yangi versiya yaxshi ishlasa, siz trafik foizini asta-sekin oshirib, u barcha so'rovlarni bajargunicha davom ettirishingiz mumkin.

Istio uchun eng yaxshi amaliyotlar

Istio'dan samarali foydalanish uchun ushbu eng yaxshi amaliyotlarni ko'rib chiqing:

Istio alternativlari va mulohazalar

Istio yetakchi servis mesh bo'lsa-da, har birining o'z kuchli va zaif tomonlari bo'lgan boshqa variantlar ham mavjud:

To'g'ri servis meshni tanlash sizning maxsus talablaringiz va muhitingizga bog'liq. Quyidagi omillarni ko'rib chiqing:

Xulosa

Servis mesh texnologiyasi, xususan Istio, mikroservislar arxitekturalarini boshqarish va himoyalash uchun kuchli yechim taqdim etadi. Servislararo aloqa murakkabliklarini abstraktlashtirish orqali Istio dasturchilarga biznes mantig'iga e'tibor qaratish imkonini beradi va operatsion jamoalarga o'z ilovalarini samarali boshqarish va kuzatish imkoniyatini beradi. Istio murakkab bo'lishi mumkin bo'lsa-da, uning boy xususiyatlari va imkoniyatlari uni bulutli texnologiyalarni qabul qilayotgan tashkilotlar uchun qimmatli vositaga aylantiradi. Eng yaxshi amaliyotlarga rioya qilish va o'zingizning maxsus talablaringizni diqqat bilan ko'rib chiqish orqali siz Istio'ni muvaffaqiyatli joriy qilishingiz va mikroservislaringizning to'liq salohiyatini ochishingiz mumkin.