Suomi

Syvällinen opas palveluverkkoteknologiaan ja Istion käyttöönottoon, joka kattaa arkkitehtuurin, konfiguraation, julkaisustrategiat ja parhaat käytännöt pilvinatiiveille sovelluksille.

Palveluverkko: Syväsukellus Istion käyttöönottoon

Nykypäivän pilvinatiivissa maailmassa mikropalveluarkkitehtuurit ovat yhä yleisempiä. Vaikka ne tarjoavat etuja, kuten skaalautuvuutta, joustavuutta ja nopeampia kehityssyklejä, ne tuovat mukanaan myös monimutkaisuutta liittyen palveluiden väliseen viestintään, havaittavuuteen, tietoturvaan ja hallintaan. Palveluverkko nousee esiin ratkaisevana arkkitehtuurimallina näiden haasteiden ratkaisemiseksi. Tämä kattava opas syventyy palveluverkkoteknologiaan keskittyen erityisesti Istioon, laajalti omaksuttuun avoimen lähdekoodin palveluverkkototeutukseen.

Mitä on palveluverkko?

Palveluverkko on erillinen infrastruktuurikerros, joka on suunniteltu käsittelemään palveluiden välistä viestintää mikropalveluarkkitehtuurissa. Se abstrahoi palveluiden välisen viestinnän monimutkaisuuden tarjoten ominaisuuksia, kuten liikenteenhallinnan, tietoturvan ja havaittavuuden ilman, että sovelluskoodiin tarvitsee tehdä muutoksia. Ajattele sitä "sivuvaunu"-välityspalvelimena (sidecar proxy), joka sijaitsee jokaisen palveluinstanssin rinnalla, siepaten ja hallinnoiden kaiken verkkoliikenteen.

Palveluverkon käytön keskeisiä etuja ovat:

Esittelyssä Istio

Istio on suosittu avoimen lähdekoodin palveluverkko, joka tarjoaa kattavan joukon ominaisuuksia mikropalveluiden hallintaan ja suojaamiseen. Se hyödyntää Envoy-välityspalvelinta datatasonaan ja tarjoaa tehokkaan kontrollitason verkon konfigurointiin ja hallintaan.

Istion arkkitehtuuri

Istion arkkitehtuuri koostuu kahdesta pääkomponentista:

Kaavio Istion arkkitehtuurista: (Kuvittele tähän kaavio, joka havainnollistaa datatasoa Envoy-välityspalvelimilla palveluiden rinnalla ja kontrollitasoa Istiodin kanssa. Todellisessa toteutuksessa olisi kuva, mutta tässä tekstipohjaisessa vastauksessa se on kuvailtu.)

Istion asennus ja käyttöönotto

Ennen kuin syvennyt konfigurointiin, sinun on asennettava Istio. Tässä on yleiskatsaus asennusprosessista:

  1. Edellytykset:
    • Kubernetes-klusteri (esim. Minikube, kind, Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS)).
    • kubectl-komentorivityökalu konfiguroituna yhdistämään Kubernetes-klusteriisi.
    • Istion komentorivityökalu (istioctl).
  2. Lataa Istio: Lataa uusin Istio-julkaisu viralliselta Istio-sivustolta.
  3. Asenna Istion komentorivityökalu: Lisää istioctl-binääri järjestelmäsi PATH-polkuun.
  4. Asenna Istion ydinkomponentit: Käytä istioctl install -komentoa Istion ydinkomponenttien käyttöönottoon Kubernetes-klusterissasi. Voit valita erilaisia profiileja eri käyttöönottoskenaarioihin (esim. default, demo, production). Esimerkiksi: istioctl install --set profile=demo.
  5. Merkitse nimiavaruus: Ota Istio-injektio käyttöön kohdenimiavaruudessasi komennolla kubectl label namespace <nimiavaruus> istio-injection=enabled. Tämä kertoo Istiolle, että se injektoi automaattisesti Envoy-sivuvaunun podeihisi.
  6. Julkaise sovelluksesi: Julkaise mikropalvelusovelluksesi merkittyyn nimiavaruuteen. Istio injektoi automaattisesti Envoy-sivuvaunun jokaiseen podiin.
  7. Varmista asennus: Varmista, että Istion kontrolli- ja datatason komponentit toimivat oikein komennolla kubectl get pods -n istio-system.

Esimerkki: Istion asentaminen Minikubeen (yksinkertaistettu):

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

Istion konfigurointi: Liikenteenhallinta

Istion liikenteenhallintaominaisuuksien avulla voit hallita liikenteen kulkua palveluidesi välillä. Keskeisiä konfiguraatioresursseja ovat:

VirtualService-esimerkki

Tämä esimerkki näyttää, kuinka liikenne reititetään palvelun eri versioihin HTTP-otsakkeiden perusteella. Oletetaan, että sinulla on kaksi versiota `productpage`-palvelusta: `v1` ja `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

Tämä VirtualService reitittää kaiken liikenteen käyttäjiltä, joiden User-Agent-otsakkeessa on "Mobile", `productpage`-palvelun `v2`-alijoukkoon. Kaikki muu liikenne reititetään `v1`-alijoukkoon.

DestinationRule-esimerkki

Tämä esimerkki määrittelee DestinationRule-säännön `productpage`-palvelulle, määrittäen yksinkertaisen kiertovuoroisen (round-robin) kuormantasauskäytännön ja määritellen alijoukot eri versioille.


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

Tämä DestinationRule määrittelee kaksi alijoukkoa, `v1` ja `v2`, `version`-etiketin perusteella. Se määrittää myös kiertovuoroisen kuormantasauskäytännön kaikelle liikenteelle `productpage`-palveluun.

Istion konfigurointi: Tietoturva

Istio tarjoaa vankat tietoturvaominaisuudet, mukaan lukien:

Keskinäinen TLS (mTLS)

Istio tarjoaa ja hallinnoi automaattisesti X.509-varmenteita jokaiselle palvelulle, mahdollistaen mTLS:n oletusarvoisesti. Tämä varmistaa, että kaikki viestintä palveluiden välillä on todennettua ja salattua, estäen salakuuntelun ja peukaloinnin.

Auktorisointikäytäntö-esimerkki

Tämä esimerkki näyttää, kuinka luodaan auktorisointikäytäntö (AuthorizationPolicy), joka sallii vain `reviews`-palvelun pääsyn `productpage`-palveluun.


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

Tämä käytäntö sallii pyynnöt `productpage`-palveluun vain `default`-nimiavaruudessa olevan `reviews`-palvelutilin kautta. Kaikki muut pyynnöt hylätään.

Istion konfigurointi: Havaittavuus

Istio tarjoaa runsaat havaittavuusominaisuudet, mukaan lukien:

Metriikat ja valvonta

Istio kerää automaattisesti laajan valikoiman metriikoita, joita voidaan tarkastella Prometheuksen kautta ja visualisoida Grafanassa. Nämä metriikat tarjoavat arvokkaita näkemyksiä mikropalveluidesi tilasta ja suorituskyvystä.

Hajautettu jäljitys

Istion hajautetun jäljityksen ominaisuudet mahdollistavat pyyntöjen seuraamisen niiden kulkiessa useiden palveluiden läpi, mikä helpottaa viiveen pullonkaulojen ja riippuvuuksien tunnistamista. Oletusarvoisesti Istio tukee Jaegeria jäljityksen taustajärjestelmänä.

Julkaisustrategiat Istion avulla

Istio helpottaa erilaisten julkaisustrategioiden toteuttamista, mahdollistaen sujuvat ja turvalliset sovelluspäivitykset:

Kanariajulkaisu-esimerkki

Istion liikenteenhallintaominaisuuksien avulla voit helposti toteuttaa kanariajulkaisun. Voit esimerkiksi reitittää 10 % liikenteestä palvelusi uuteen versioon ja 90 % vanhaan versioon. Jos uusi versio toimii hyvin, voit asteittain lisätä liikenteen prosenttiosuutta, kunnes se käsittelee kaikki pyynnöt.

Istion parhaat käytännöt

Hyödyntääksesi Istiota tehokkaasti, harkitse näitä parhaita käytäntöjä:

Istion vaihtoehdot ja huomioitavat seikat

Vaikka Istio on johtava palveluverkko, on olemassa myös muita vaihtoehtoja, joilla kullakin on omat vahvuutensa ja heikkoutensa:

Oikean palveluverkon valinta riippuu erityisvaatimuksistasi ja ympäristöstäsi. Harkitse tekijöitä kuten:

Yhteenveto

Palveluverkkoteknologia, erityisesti Istio, tarjoaa tehokkaan ratkaisun mikropalveluarkkitehtuurien hallintaan ja suojaamiseen. Abstrahoimalla palveluiden välisen viestinnän monimutkaisuuden Istio antaa kehittäjille mahdollisuuden keskittyä liiketoimintalogiikkaan ja antaa operatiivisille tiimeille valtuudet hallita ja valvoa sovelluksiaan tehokkaasti. Vaikka Istio voi olla monimutkainen, sen runsaat ominaisuudet ja kyvyt tekevät siitä arvokkaan työkalun organisaatioille, jotka omaksuvat pilvinatiiveja teknologioita. Noudattamalla parhaita käytäntöjä ja harkitsemalla huolellisesti erityisvaatimuksiasi voit onnistuneesti ottaa Istion käyttöön ja avata mikropalveluidesi täyden potentiaalin.

Palveluverkko: Syväsukellus Istion käyttöönottoon | MLOG