Helm és Kubernetes használatával

1. Áttekintés

A Helm a Kubernetes alkalmazások csomagkezelője. Ebben az oktatóanyagban megértjük a Helm alapjait és azt, hogy ezek miként jelentenek hatékony eszközt a Kubernetes erőforrásokkal való együttműködéshez.

Az elmúlt években a Kubernetes óriási mértékben nőtt, és az ökoszisztéma is ezt támogatta. A közelmúltban a Helmet inkubáló projektként jelentette be a Cloud Native Computing Foundation (CNCF), amely megmutatja növekvő népszerűségét a Kubernetes felhasználói körében.

2. Háttér

Bár manapság ezek a kifejezések meglehetősen elterjedtek, különösen a felhőtechnológiával foglalkozók körében, menjünk át gyorsan azokon, akik nincsenek tisztában:

  1. Tartály: A tároló az operációs rendszer szintű virtualizációra utal. Több tároló fut egy operációs rendszeren belül, elszigetelt felhasználói terekben. A tárolón belül futó programok csak a tárolóhoz rendelt erőforrásokhoz férhetnek hozzá.
  2. Dokkmunkás: A Docker egy népszerű program konténerek létrehozására és futtatására. Jön a Docker Daemon, amely a konténereket kezelő fő program. A Docker Daemon hozzáférést kínál funkcióihoz a Docker Engine API-n keresztül, amelyet a Docker Command-Line Interface (CLI) használ. A Docker részletesebb leírását ebben a cikkben találja.
  3. Kubernetes: A Kubernetes egy népszerű konténeres hangszerelési program. Bár úgy tervezték, hogy különböző konténerekkel működjön, a Dockert használják leggyakrabban. A szolgáltatások széles választékát kínálja, beleértve a telepítés automatizálását, méretezését és műveleteit egy gazdagépfürtön keresztül. Kivételes a Kubernetes ismertetése ebben a cikkben további hivatkozás céljából.

3. Helm építészet

A Helm meglehetősen egyszerű architektúrával rendelkezik, amely egy kliensből és egy fürtön belüli szerverből áll:

  • Tiller Server: Helm a Tiller Server nevű komponensen keresztül kezeli a Kubernetes alkalmazást telepítve van egy Kubernates-fürtön belül. A Tiller együttműködik a Kubernetes API szerverrel a Kubernetes erőforrások telepítéséhez, frissítéséhez, lekérdezéséhez és eltávolításához.
  • Helm kliens: A Helm parancssori felületet biztosít a felhasználók számára a Helm Charts használatához. A Helm Client felelős a Tiller szerverrel való kapcsolattartásért a különböző műveletek végrehajtása érdekében, mint például a diagramok telepítése, frissítése és visszagörgetése.

4. Helm-diagramok

Helm a diagramokon keresztül kezeli a Kubernetes erőforráscsomagokat.

Többet látunk a diagramokról, amint hamarosan elkészítjük őket, de egyelőre a diagram nem más, mint a Kubernetes-alkalmazás létrehozásához szükséges információkészlet, adott Kubernetes-fürt:

  • A A diagram fájlok gyűjteménye meghatározott könyvtárstruktúrába szerveződik
  • A diagramhoz tartozó konfigurációs információkat a konfiguráció kezeli
  • Végül, egy diagram futó példányát egy adott konfigurációval kiadásnak nevezzük

5. Beállítás

Szükségünk lesz néhány dologra, amelyeket előzetesen fel kell állítani, hogy kidolgozzuk az első Helm-diagramunkat.

Először is, a Helm-mel való együttműködés megkezdéséhez szükségünk van egy Kubernetes-klaszterre. Ehhez az oktatóanyaghoz használjuk A Minikube, amely kiváló módot kínál az egy csomópontú Kubernetes-fürt helyi használatára. Windows rendszeren már lehetőség van a Hyper-V használatára natív Hypervisor-ként a Minikube futtatásához. Tekintse meg ezt a cikket, hogy megismerje a Minikube további beállításait.

És a Kubernetes-fürtön belüli kezeléshez szükségünk lesz egy alap alkalmazásra. Ehhez az oktatóanyaghoz egy egyszerű Spring Boot alkalmazást fogunk használni, Docker konténerként csomagolva. Az ilyen alkalmazások Docker-konténerként történő csomagolásának részletesebb leírását ebben a cikkben találja.

6. A Helm telepítése

A Helm telepítésének számos módja van, amelyeket a Helm hivatalos telepítési oldalán részletesen leírnak. A helm Windows rendszerre történő telepítésének leggyorsabb módja a Chocolaty használata, csomagkezelő a Windows platformokhoz.

A Chocolaty használatával a Helm telepítésének egyszerű egysoros parancsa van:

choco telepítse a kubernetes-helm-t

Ez a Helm klienst helyileg telepíti.

Most inicializálnunk kell a Helm CLI-t, amely a Tiller szervert is telepíti egy Kubernetes-fürtbe, amint azt a Kubernetes konfigurációja meghatározza. Kérem győződjön meg arról, hogy a Kubernetes-fürt fut és elérhető-e rajta keresztül kubectl mielőtt inicializálná Helmet:

kubectl cluster-info

Ezután inicializálhatjuk Helm-et magának a Helm CLI-nek a segítségével:

helm init

7. Első diagramunk kidolgozása

Most készen állunk az első Helm-diagram kidolgozására sablonokkal és értékekkel.

7.1. Diagram készítése

A Helm CLI, amelyet korábban telepítettünk, nagyon hasznos a diagram létrehozásában:

sisak teremt hello-world

Felhívjuk figyelmét, hogy a Az itt megadott diagram neve annak a könyvtárnak a neve lesz, ahol a diagram létrejön és tárolják.

Lássuk gyorsan a számunkra létrehozott könyvtárstruktúrát:

hello-world / Chart.yaml values.yaml templates / charts / .helmignore

Értsük meg a számunkra létrehozott fájlok és mappák relevanciáját:

  • Ábra.yaml: Ez a fő fájl, amely tartalmazza a diagramunk leírását
  • értékek.yaml: ez a fájl tartalmazza a diagram alapértelmezett értékeit
  • sablonok: Ez az a könyvtár, ahol a Kubernetes erőforrásokat sablonként definiálják
  • diagramok: Ez egy opcionális könyvtár, amely al-diagramokat tartalmazhat
  • .helmignore: Itt határozhatjuk meg a csomagolásnál figyelmen kívül hagyandó mintákat (koncepció szerint hasonlóak a .gitignore-hoz)

7.2. Sablon létrehozása

Ha a sablonkönyvtárban látunk, észrevesszük néhány sablon a Kubernetes erőforrásokhoz már létrejött nekünk:

hello-world / templates / deployment.yaml service.yaml ingress.yaml ......

Szükségünk lehet ezekre és esetleg más forrásokra az alkalmazásunkban, amelyeket sablonként kell magunknak létrehoznunk.

Ehhez az oktatóanyaghoz létrehozunk egy telepítést és egy szolgáltatást, amely bemutatja a telepítést. Felhívjuk figyelmét, hogy a hangsúly itt nem a Kubernetes részletes megértése. Ezért ezeket az erőforrásokat a lehető legegyszerűbben fogjuk tartani.

Szerkesszük a fájlt telepítés.yaml benne sablonok könyvtár, hogy kinézzen:

apiVersion: apps / v1 fajta: Telepítési metaadatok: név: {{include "hello-world.fullname". }} címkék: app.kubernetes.io/name: {{tartalmazza a "hello-world.name" szót. }} helm.sh/chart: {{include "hello-world.chart". }} app.kubernetes.io/instance: {{.Release.Name}} app.kubernetes.io/managed-by: {{.Release.Service}} spec: replikák: {{.Values.replicaCount}} választó: matchLabels: app.kubernetes.io/name: {{tartalmazza a "hello-world.name" szót. }} app.kubernetes.io/instance: {{.Release.Name}} sablon: metaadatok: feliratok: app.kubernetes.io/name: {{tartalmazza a "hello-world.name" szót. }} app.kubernetes.io/instance: {{.Release.Name}} spec: tárolók: - név: {{.Chart.Name}} image: "{{.Values.image.repository}}: {{. Values.image.tag}} "imagePullPolicy: {{.Values.image.pullPolicy}} portok: - név: http containerPort: 8080 protokoll: TCP

Hasonlóképpen szerkesszük a fájlt service.yaml kinézni mint:

apiVersion: v1 fajta: Szolgáltatás metaadatai: név: {{include "hello-world.fullname". }} címkék: app.kubernetes.io/name: {{tartalmazza a "hello-world.name" szót. }} helm.sh/chart: {{include "hello-world.chart". }} app.kubernetes.io/instance: {{.Release.Name}} app.kubernetes.io/managed-by: {{.Release.Service}} spec: type: {{.Values.service.type}} portok: - port: {{.Values.service.port}} targetPort: http protokoll: TCP név: http választó: app.kubernetes.io/name: {{tartalmazza a "hello-world.name" szót. }} app.kubernetes.io/instance: {{.Release.Name}}

Most, Kubernetes ismereteink alapján, ezek a sablonfájlok néhány furcsaságot leszámítva meglehetősen ismerősek. Vegye figyelembe a szöveg liberális használatát dupla zárójelben {{}}. Ezt nevezzük sablon irányelvnek.

A Helm a Go sablon nyelvét használja, és kiterjeszti azt a Helm sablon nyelvre. Az értékelés során a sablonkönyvtárban található minden fájlt elküldik a sablonmegjelenítő motornak. A sablon irányelv a tényleges értékeket injektálja a sablonokba.

7.3. Értékek biztosítása

Az előző alfejezetben láttuk, hogyan kell használni a sablon irányelveket a sablonjainkban. Most értsük meg, hogyan adhatunk át értékeket a sablonmegjelenítő motornak. Az értékeket általában a Helm beépített objektumain keresztül adjuk át.

A Helmben számos ilyen objektum áll rendelkezésre, például kiadás, értékek, diagram és fájlok.

Használhatjuk a fájlt értékek.yaml diagramunkban átadni az értékeket a sablonmegjelenítő motornak a Beépített Objektumértékeken keresztül. Módosítsuk a értékek.yaml kinézni mint:

replicaCount: 1 image: repository: "hello-world" tag: "1.0" pullPolicy: IfNotPresent szolgáltatás: type: NodePort port: 80

Ne feledje azonban, hogy ezekhez az értékekhez hogyan jutottak hozzá a sablonok a névtereket elválasztó pontok segítségével. A képtárat és a címkét „hello-world” és „1.0” néven használtuk, ennek meg kell egyeznie a Docker képcímkével, amelyet a Spring Boot alkalmazáshoz hoztunk létre.

8. A Helm parancsok megértése

Az eddigi mindent megtéve készen állunk arra, hogy játsszon a listánkkal. Nézzük meg, melyek a Helm CLI-ben elérhető különféle parancsok, hogy ez szórakoztató legyen!

8.1. Helm Lint

Először is, ez egy egyszerű parancs, amely a diagram elérési útját követi, és tesztek segítségével futtatja a diagram megfelelő formálását:

sisak ./hello-world ==> Linting ./hello-world 1 diagram szöszös, nincs hiba

8.2 Helm sablon

Ez a parancs arra is szolgál, hogy a sablont helyileg, Tiller Server nélkül jelenítsük meg a gyors visszajelzés érdekében:

helm sablon ./hello-world --- # Forrás: hello-world / templates / service.yaml apiVersion: v1 fajta: Szolgáltatás metaadatai: név: release-name-hello-world címkék: app.kubernetes.io/name: hello -world helm.sh/chart: hello-world-0.1.0 app.kubernetes.io/instance: release-name app.kubernetes.io/managed-by: Tiller spec: type: NodePort ports: - port: 80 targetPort: http protokoll: TCP név: http választó: app.kubernetes.io/name: hello-world app.kubernetes.io/instance: release-name --- # Forrás: hello-world / templates / deployment.yaml apiVersion: apps / v1 fajta: Telepítési metaadatok: név: release-name-hello-world címkék: app.kubernetes.io/name: hello-world helm.sh/chart: hello-world-0.1.0 app.kubernetes.io/instance: release -name app.kubernetes.io/managed-by: Tiller spec: replikák: 1 választó: matchLabels: app.kubernetes.io/name: hello-world app.kubernetes.io/instance: release-name template: metaadatok: label: app.kubernetes.io/name: hello-world app.kubernetes.io/instance: release-name spec: tárolók: - na me: hello-world image: "hello-world: 1.0" imagePullPolicy: IfNotPresent portok: - név: http containerPort: 8080 protokoll: TCP

8.3. Helm Install

Miután ellenőrizzük, hogy a diagram rendben van-e, végül futtathatjuk ezt a parancsot a diagram telepítéséhez a Kubernetes fürtbe:

helm install --name hello-world ./hello-world NEVE: hello-world UTOLSÓLE GYAKORLOTT: Hétfebr. 25 15:29:59 2019 NEVEZETÉT: alapértelmezett ÁLLAPOT: ALKALMAZOTT ERŐFORRÁSOK: ==> v1 / Szolgáltatásnév TÍPUSA CLUSTER-IP KÜLSŐ -IP PORT (S) AGE hello-world NodePort 10.110.63.169 80: 30439 / TCP 1s ==> v1 / Deployment NAME KÍVÁNT AKTUÁLIS, AKTUÁLISAN ELÉRHETŐ KOR Hello-world 1 0 0 0 1s ==> v1 / Pod (kapcsolódó) NÉV KÉSZ ÁLLAPOT ÚJRAINDULÁS KOR hello-world-7758b9cdf8-cs798 0/1 Függőben 0 0

Végül vegye figyelembe, hogy ennek a diagramnak a kiadását a flag névvel neveztük el. A parancs a folyamat során létrehozott Kubernetes-erőforrások összefoglalásával válaszol.

8.4. Helm Get

Most azt szeretnénk megtudni, hogy melyik diagram milyen verzióként van telepítve. Ez a parancs lehetővé teszi, hogy lekérdezzük a megnevezett kiadásokat:

helm ls - minden NÉVREVISZIONÁLIS FRISSÍTETT ÁLLAPOTTábla APP VERZIÓ NÉVTÉR hello-world 1. hétf. 25, 15:29:59 2019 DEPLOYED Hello-world-0.1.0 1.0

8.5. Helm Upgrade

Mi van, ha módosítottuk diagramunkat, és telepítenünk kell a frissített verziót? Ez a parancs segít a kiadás frissítésében a diagram vagy a konfiguráció meghatározott vagy aktuális verziójára:

helm upgrade hello-world ./hello-world A "hello-world" kiadás frissítésre került. Boldog Helming! UTOLSÓBB FELHASZNÁLVA: Hétfebr. 25, 15:36:04, 2019 NÉMETÉR: alapértelmezett ÁLLAPOT: ALKALMAZOTT ERŐFORRÁSOK: ==> v1 / Szolgáltatásnév TÍPUSA CLUSTER-IP KÜLSŐ-IP PORT (S) AGE hello-world NodePort 10.110.63.169 80: 30439 / TCP 6m5s ==> v1 / Telepítés NÉVE KÍVÁNT AKTUÁLIS, AKTUÁLISAN ELÉRHETŐ KOR Hello-world 1 1 1 1 6m5s ==> v1 / Pod (kapcsolódó) NÉV KÉSZ ÁLLAPOT ÚJRAINDÍTÁS AGE hello-world-7758b9cdf8-cs798 1/1 0 6m4s futása

8.6. Helm Visszahúzás

Mindig előfordulhat, hogy egy kiadás rosszul esett, és vissza kell venni. Ez a parancs a kiadás visszaállításához az előző verzióhoz:

helm rollback hello-world 1 A rollback sikeres volt! Boldog Helming!

8.7. Helm Törlés

Bár kevésbé valószínű, mégis teljesen törölni szeretnénk egy kiadást. Ezzel a paranccsal törölhetünk egy kiadást a Kubernetesből:

sisak törlése - purgom hello-world kiadás "hello-world" törölve

Ez csak néhány olyan parancs, amely a Helm-ben található diagramokkal és kiadásokkal használható.

9. Diagramok terjesztése

Míg a sablonok hatékony eszköz, amelyet Helm a Kubernetes erőforrások kezelésének világába hoz, a Helm használatának nem ez az egyetlen előnye. Ahogy az előző szakaszban láttuk, Helm csomagkezelőként működik a Kubernetes alkalmazásban, és a kiadások telepítését, lekérdezését, frissítését és törlését meglehetősen zökkenőmentessé teszi.

Ezen túlmenően, A Helm parancsai a CLI részeként érkeznek a Kubernetes alkalmazások diagramokba csomagolásához, közzétételéhez és letöltéséhez:

9.1. Helm csomag

Először is össze kell csomagolnunk az általunk létrehozott diagramokat, hogy terjesszük őket. Ez a parancs a diagram verziózott archív fájljainak létrehozására:

sisakcsomag ./hello-world Sikeresen bepakolta a diagramot és elmentette a következőbe: \ hello-world \ hello-world-0.1.0.tgz

Ne feledje, hogy archívumot készít a gépén, amelyet manuálisan, vagy nyilvános vagy privát diagramtárakon keresztül terjeszthet.

9.2. Helm Repo

Végül szükségünk van egy mechanizmusra, amely a közös tárakkal való együttműködésre képes. A Repo egy csomó parancsot tartalmaz, amelyek segítségével diagramtárakat adhatunk hozzá, távolíthatunk el, listázhatunk vagy indexelhetünk. Lássuk, hogyan tudjuk felhasználni őket.

Létrehozhatunk egy git-adattárat, és ezt használhatjuk diagram-tárunkként. Az egyetlen követelmény az, hogy legyen index.yaml fájl.

Alkothatunk index.yaml a listarepónkhoz:

helm repo index my-repo / --url //.github.io/my-repo

Ez generálja a index.yaml fájlt, amelyet a diagramarchívummal együtt a lerakatba kell tolnunk.

Miután sikeresen létrehozta a diagramtárat, ezt követően távolról hozzáadhatjuk ezt a repót:

helm repo add my-repo //my-pages.github.io/my-repo

Most képesnek kell lennünk a diagramok közvetlen telepítésére a repóból:

helm install my-repo / hello-world --name = hello-world

Elég sok segédparancs áll rendelkezésre a diagramtárakkal való együttműködésre.

10. Következtetés

Összefoglalva, ebben az oktatóanyagban megvitattuk a Helm, a Kubernetes alkalmazások csomagkezelőjének fő összetevőit. Megértettük a Helm telepítésének lehetőségeit. Ezenkívül áttekintettünk egy minta diagramot és sablonokat értékekkel.

Ezután a Helm CLI részeként elérhető több parancsot is átéltük, hogy kezeljük a Kubernetes alkalmazást Helm csomagként.

Végül megvitattuk a Helm csomagok adattárak útján történő terjesztésének lehetőségeit.


$config[zx-auto] not found$config[zx-overlay] not found