U osnovi, Kubernetes izlaže a pozadinska usluga interno unutar klastera i prednji kraj komunicira s ovom uslugom. Mahune koje nude uslugu mogu se vrlo dobro zamijeniti i nitko ništa ne bi primijetio. No kako značajke vaših aplikacija rastu, tako raste i broj usluga koje trebate održavati. Svaka usluga potencijalno može razgovarati sa svakom drugom uslugom u klasteru, a rezultirajuća mreža naziva se Uslužna mreža.
Postoji mnogo dodataka za Kubernetes koji nam pomažu da pojednostavimo upravljanje ovom uslužnom mrežom. Puno značajki tipki poput TLS-a, automatiziranog uravnoteženja opterećenja, osiguranja API-ja čak i na unutarnjoj mreži itd. Nude ovi dodaci. Mnoge opcije poput Istio, Linkerd i Conduit mogu se integrirati s Kubernetesom kako bi se to postiglo. Istražit ćemo Istio u ovom postu jer je to verzija 1.0 je nedavno najavljeno.
Preduvjeti
Da biste započeli s Istioom, trebat će vam funkcionalni klaster kubernetesa. Tri su načina da se to postigne.
- Možete instalirati Minikube za stvaranje klastera s jednim čvorom na vašem lokalnom računalu.
- Ili, ako koristite Docker na sustavu Windows ili Mac, možete omogućiti Kubernetes klaster s jednim čvorom u postavkama Dockera.
- Ili možete koristiti internetske usluge poput igrališta Katacoda. Koristit ćemo ovo.
Zašto koristiti uslužnu mrežu?
Instaliranje servisne mreže, poput Istio-a, olakšava rad s mikroservisima. Tijekom razvoja ne morate brinuti o činjenici da bi vaša mikro usluga trebala nuditi podršku za međusobni TLS, uravnoteženje opterećenja ili bilo koji drugi aspekt poput otkrivanja usluge. Idealna uslužna mreža omogućuje vam povezivanje mikroservisa, njihovo osiguravanje jednih od drugih i vanjskog svijeta te organizirano upravljanje njima. Neizmjerno pomaže programerima i operaterima.
Instaliranje Istio
Instalacija Istio zahtijeva posjedovanje Kubernetes klastera. Ako imate klaster s jednim čvorom kao što je to slučaj s Minikubeom ili Dockerom na radnoj površini, tada se sve naredbe mogu pokrenuti na vašem lokalnom čvoru. Međutim, ako koristite klaster s više čvorova poput onog koji igralište Katacoda nudi, imajte na umu da se većina naredbi i postupaka postavljanja vrši na glavnom čvoru. Da, utječe na cijeli klaster, ali moramo komunicirati isključivo s glavnim čvorom.
Počinjemo s kloniranjem (ili preuzimanjem) najnovijeg izdanja Istio s Githuba. Korisnici Windowsa možda bi željeli posjetiti ovu stranicu i dobiti odgovarajuće .zip datoteka.
$ curl -L https: // git.io / getLatestIstio | sh -$ cd istio-1.0.0
Ime repo-a može se s vremenom mijenjati kako dolazi novo izdanje, u vrijeme pisanja ovog članka 1.0.0 je najnovije stabilno izdanje. Ovaj repo sadrži ne samo proširenje mreže mreže već i uzorak aplikacije nazvane BookInfo za potrebe eksperimentiranja. Skripta također dodaje novi direktorij $ PWD / istio-1.0.0 / bin na vašu varijablu PATH.
Ovaj direktorij sadrži istioktl binarni koji se može koristiti za interakciju s klasterom. Korisnici Windowsa mogu jednostavno nazvati binarni element odlaskom u mapu istio-1.0.0 \ bin i pozivanje .\ istioctl pomoću PowerHell-a ili naredbenog retka. Ali to je neobavezni dodatak.
Ako koristite Mac, to možete učiniti pomoću sljedeće naredbe:
$ izvoz PUT = $ PWD / bin: $ PATHDalje moramo proširiti naš Kubernetes API s prilagođenim definicijama resursa (CRD) koje nam nudi istio.
$ kubectl primijeni -f install / kubernetes / helm / istio / templates / crds.yamlTo bi moglo stupiti na snagu za nekoliko sekundi, a nakon što završi, vaš će kube-apiserver imati ugrađena Istio proširenja. Od ovog trenutka, mogućnosti instalacije razlikuju se ovisno o tome koristite li ovo u proizvodne svrhe ili eksperimentirate s njim u svom izoliranom okruženju.
Pretpostavit ćemo da je ovo drugo i instalirati istio bez TLS provjere autentičnosti.
$ kubectl primijeni -f install / kubernetes / istio-demo.yamlTo će stvoriti novi sustav naziva istio-sustav u kojem će biti instalirane sve različite komponente poput istio-pilot i ulaznog prolaza.
Implementacija aplikacije i Istio injektor
Tu dolazi korisnost Istio-a. Istio dodaje proxyje prikolica vašim uslugama i to bez izmjene stvarnog koda vaše aplikacije. Ako je omogućena automatska ubrizgavačka bočna kolica. Imenski prostor možete označiti s istio-injection = enabled i kada se vaša aplikacija rasporedi na ovom imenskom prostoru, sami podovi će imati specijalizirane kontejnere Envoy zajedno sa spremnicima za osnovnu aplikaciju. Na primjer, označimo zadani prostor imena
$ kubectl prostor imena oznaka zadani istio-injection = omogućenSada rasporedimo uzorak aplikacije BookInfo u ovom imenskom prostoru. Iz korijenskog direktorija Isitio rep kojeg smo klonirali pokrenite:
$ kubectl prijava -f uzorci / bookinfo / platforma / kube / bookinfo.yamlOvdje možete navesti sve mahune koje se izvode:
$ kubectl dobiti mahuneOdaberite bilo koji mahuna od onih i pogledajte njegove detalje. Na primjer, jedan od mahuna iz aplikacije BookInfo u mojoj implementaciji zove se details-v1-6865b9b99d-6mxx9
$ kubectl opisuje mahune / detalje-v1-6865b9b99d-6mxx9U opisu ćete primijetiti da mahuna sadrži dva spremnika, prvi je komponenta stvarnog pokretanja aplikacije za slike image-bookinfo-details-v1: 1.8.0, a drugi je istio-proxy koji pokreće sliku gcr.io / istio-release / proxyv2: 1.0.0 .
Istio nudi preciznu kontrolu nad mrežom vaše usluge jer ubrizgava te spremnike do samih mahuna u kojima se nalaze vaše aplikacije. Ovo u kombinaciji s jednostavnim za korištenje TLS-om za komunikaciju i fino zrnastom kontrolom prometa jedan je od mnogih razloga zašto velike aplikacije mogu imati koristi od servisne mreže poput Istio-a.
Reference
Stvarna arhitektura ima puno komponenata poput pilota, citadele i miksera, a svaka ima svoju važnu ulogu. Ovdje možete naučiti puno više o tim komponentama i ovdje pokušati implementirati vlastiti mikroservis.