Būtībā Kubernetes atklāj a backend pakalpojums iekšēji klastera iekšpusē un priekšgals mijiedarbojas ar šo pakalpojumu. Pākstis, kas piedāvā pakalpojumu, var ļoti labi nomainīt, un neviens neko nepamanīs. Bet, pieaugot lietojumprogrammu funkcijām, pieaug arī to pakalpojumu skaits, kas jums jāuztur. Katrs pakalpojums, iespējams, var sarunāties ar katru citu klastera pakalpojumu, un iegūtais tīkls tiek saukts par Pakalpojuma tīkls.
Kubernetes ir daudz papildinājumu, kas mums palīdz vienkāršot šī pakalpojuma tīkla pārvaldību. Šie papildinājumi piedāvā daudzas atslēgas funkcijas, piemēram, TLS, automatizētu slodzes līdzsvarošanu, API nodrošināšanu pat iekšējā tīklā utt. Lai to paveiktu, Kubernetes var integrēt daudzas iespējas, piemēram, Istio, Linkerd un Conduit. Šajā ziņojumā mēs apskatīsim Istio, jo tā ir 1. versija.Nesen tika paziņots par 0.
Priekšnoteikumi
Lai sāktu darbu ar Istio, jums būs nepieciešama strādājoša kubernetes kopa. Ir trīs veidi, kā to panākt.
- Varat instalēt Minikube, lai vietējā mašīnā izveidotu viena mezgla kopu.
- Vai arī, ja izmantojat Docker operētājsistēmā Windows vai Mac, Docker iestatījumos varat iespējot viena mezgla Kubernetes kopu.
- Vai arī varat izmantot tiešsaistes pakalpojumus, piemēram, Katacoda rotaļu laukumu. Mēs to izmantosim.
Kāpēc izmantot pakalpojumu tīklu?
Pakalpojuma tīkla, piemēram, Istio, uzstādīšana atvieglo darbu ar mikropakalpojumiem. Izstrādājot, jums nav jāuztraucas par to, ka jūsu mikropakalpojumam būtu jāpiedāvā atbalsts savstarpējai TLS, slodzes līdzsvarošanai vai jebkuram citam aspektam, piemēram, pakalpojuma atklāšanai. Ideāls servisa tīkls ļauj savienot mikropakalpojumus, nodrošināt tos savā starpā un no ārpasaules, kā arī organizēti pārvaldīt tos. Tas ārkārtīgi palīdz gan izstrādātājiem, gan operatoriem.
Istio instalēšana
Lai instalētu Istio, nepieciešama Kubernetes kopa. Ja jums ir viena mezglu kopa, piemēram, Minikube vai Docker darbvirsmā, visas komandas var palaist vietējā mezglā. Tomēr, ja izmantojat vairāku mezglu kopu, tādu, kādu piedāvā Katacoda rotaļu laukums, paturiet prātā, ka lielākā daļa komandu un iestatīšanas procedūru tiek veiktas galvenajā mezglā. Jā, tas ietekmē visu kopu, taču mums ir jāsadarbojas tikai ar galveno mezglu.
Mēs sākam ar jaunākā Istio laidiena klonēšanu (vai lejupielādi) no Github. Windows lietotāji varētu vēlēties apmeklēt šo lapu un iegūt atbilstošu .zip failu.
$ čokurošanās -L https: // git.io / getLatestIstio | sh -$ cd istio-1.0.0
Repo nosaukums laika gaitā var mainīties, kad tiek parādīts jaunāks laidiens, šī rakstīšanas laikā 1.0.0 ir jaunākais stabilais izlaidums. Šajā repo ir ne tikai servisa tīkla paplašinājums, bet arī eksperimenta nolūkos lietotnes paraugs ar nosaukumu BookInfo. Skripts arī pievieno jauno direktoriju $ PWD / istio-1.0.0 / bin jūsu PATH mainīgajam.
Šajā direktorijā ir istioctl binārs, ko var izmantot, lai mijiedarbotos ar kopu. Windows lietotāji var vienkārši piezvanīt bināram, dodoties uz mapi istio-1.0.0 \ bin un zvana .\ istioctl izmantojot PowerShell vai komandu uzvedni. Bet tas ir izvēles papildinājums.
Ja izmantojat Mac, to varat izdarīt, izmantojot šādu komandu:
$ export PATH = $ PWD / bin: $ PATHTālāk mums jāpaplašina mūsu Kubernetes API ar pielāgotajām resursu definīcijām (CRD), kuras mums nodrošina istio.
$ kubectl apply -f install / kubernetes / helm / istio / templates / crds.yamlTas var stāties spēkā dažu sekunžu laikā, un, kad tas būs izdarīts, jūsu kube-apiserver būs iebūvēti Istio paplašinājumi. Turpmāk instalēšanas iespējas mainās atkarībā no tā, vai jūs to izmantojat ražošanas vajadzībām vai eksperimentējat ar to savā izolētajā vidē.
Mēs pieņemsim, ka tas ir pēdējais gadījums, un instalēsim istio bez TLS autentifikācijas.
$ kubectl Apply -f install / kubernetes / istio-demo.yamlTas radīs jaunu nosaukumvietas istio sistēmu, kurā tiks instalēti visi dažādi komponenti, piemēram, istio-pilot un ieejas vārteja.
Lietojumprogrammu ieviešana un Istio inžektors
Šeit nāk Istio lietderība. Istio jūsu pakalpojumiem pievieno blakusvāģu starpniekserverus, un tas tiek darīts, nemainot lietojumprogrammas faktisko kodu. Ja ir iespējots automātiskais istio-blakusvāģa inžektors. Vārdamvietu varat apzīmēt ar istio-injection = iespējotu, un, kad jūsu lietojumprogramma ir izvietota šajā nosaukumvietā, pašām pākstīm būs specializēti sūtņa konteineri kopā ar galvenās lietojumprogrammas konteineriem. Piemēram, iezīmēsim noklusējuma nosaukumvietu
$ kubectl etiķetes nosaukumvieta noklusējuma istio-injection = iespējotaTagad izvietosim BookInfo lietotnes paraugu šajā vārdu telpā. No Isitio rep saknes direktorija, kuru mēs klonējām, palaidiet:
$ kubectl piemēro -f paraugus / bookinfo / platform / kube / bookinfo.yamlVisas pākstis var uzskaitīt šeit:
$ kubectl iegūst pākstisIzvēlieties jebkuru pāksti no tām un skatiet tās detaļas. Piemēram, manā izvietojumā viena no lietotnes BookInfo pākstīm ir nosaukta details-v1-6865b9b99d-6mxx9
$ kubectl apraksta pākstis / detaļas-v1-6865b9b99d-6mxx9Aprakstā pamanīsit, ka pāksts satur divus konteinerus, pirmais ir faktiskās attēla lietojumprogrammas piemēru-bookinfo-details-v1 sastāvdaļa: 1.8.0 un otrais ir istio-proxy, kas darbojas ar attēlu gcr.io / istio-release / proxyv2: 1.0.0 .
Istio piedāvā precīzu kontroli pār jūsu pakalpojumu sietu, jo tas injicē šos konteinerus līdz pat pākstīm, kur atrodas jūsu lietojumprogrammas. Tas apvienojumā ar ērti lietojamo TLS saziņai un smalkgraudainai satiksmes kontrolei ir viens no daudzajiem iemesliem, kāpēc lielas lietojumprogrammas var gūt labumu no tādu pakalpojumu tīkla kā Istio.
Atsauces
Patiesajā arhitektūrā ir daudz sastāvdaļu, piemēram, Pilot, Citadel un Mixer, katrai no tām ir sava svarīgā loma. Šeit varat uzzināt daudz vairāk par šiem komponentiem un šeit mēģināt izvietot savu mikropakalpojumu.