Miután megismertük a Kubernetes alapvető architektúráját, érdemes néhány kulcsfontosságú fogalommal is megismerkedni. Ezekkel az objektumokkal később is dolgozunk majd, de már most hasznos, ha megértjük, hogyan illeszkednek a teljes rendszerbe.
Mi is az a Kubernetes?
A Kubernetes egy konténer-orchesztrációs rendszer, amelyet arra terveztek, hogy automatizálja a konténerek telepítését, kezelését, skálázását és frissítését. Fontos megérteni, hogy a Kubernetes nem egyesével kezeli a konténereket, hanem úgynevezett Podokba csoportosítva.
Pod
A Pod a Kubernetes legkisebb egysége, amely egy vagy több konténert tartalmaz. Ezek a konténerek:
azonos IP-címen osztoznak,
közösen használják a tárolókat (volumes),
ugyanabba a névtérbe (namespace) tartoznak.
Általában egy Pod egy alkalmazást futtat, míg a többi konténer segédszolgáltatásokat nyújthat hozzá (például loggyűjtés, proxy, stb.).
Namespace – névterek
A namespace, vagy magyarul névtér egy logikai szeparációs eszköz a Kubernetesben. Fő célja:
az erőforrások elkülönítése (pl. fejlesztés, teszt, éles környezet),
a több bérlős környezetek (multi-tenant) biztonságos kezelése,
jogosultságok és kvóták könnyebb szabályozása.
Vannak klaszter szintű objektumok (pl. node-ok), és olyanok is, amelyek csak egy namespace-hez tartoznak. Ha különböző namespace-ekben lévő Podok szeretnének kommunikálni egymással, ahhoz Service objektumokra van szükség.
Orchestráció és vezérlők (operators)
A Kubernetes vezérlését úgynevezett „watch-loopokkal”, azaz operátorokkal végzi. Ezek figyelik a kube-apiserver állapotát, és ha eltérés van az elvárt (deklarált) és a valós állapot között, akkor lépnek közbe.
A leggyakoribb operátor típusok:
Deployment: konténerek kezelése (nem közvetlenül a Podokkal dolgozik).
ReplicaSet: a Podok darabszámát kezeli a megadott sablon (podSpec) alapján.
Kubelet: a node-on futó ügynök, amely végrehajtja a podSpec utasításait (pl. konténer letöltés, indítás, leállítás).
Az alapértelmezett és legtöbbet használt operátor a Deployment, amely biztosítja, hogy az alkalmazás mindig a kívánt példányszámban és konfigurációval fusson.
Custom Resource Definitions (CRD)
Ha a beépített vezérlők nem elegendők, akkor saját típusú erőforrásokat és operátorokat is létrehozhatunk. Ezt CRD-nek (Custom Resource Definition) nevezzük, és ezáltal bővíthetjük a Kubernetes képességeit.
A Kubernetesben a Service objektum biztosítja a hálózati elérhetőséget a Podok között, különböző namespace-ek között, vagy a klaszteren kívülről.
Label alapú működés: a Service címkék alapján találja meg a hozzá tartozó Podokat.
A Service a Endpoint operátortól szerzi meg a Podok IP-címeit és elérési információit.
A Service tehát egyfajta virtuális IP-címként viselkedik, ami mögött a megfelelő Pod(ok) állnak.
Címkék (Labels) és azonosítók
A Kubernetesben nehézkes lenne több ezer Pod vagy objektum kezelése, ha mindig név vagy UID alapján kellene hivatkozni rájuk. Ezért:
használhatunk címkéket (labels) – tetszőleges kulcs-érték párok, melyek az objektum metaadataihoz tartoznak.
így például egy parancs segítségével kiválaszthatunk minden olyan Podot, amelynek az app=web címkéje van, anélkül hogy ismernénk a nevüket.
Taints és tolerations
Az egyes node-ok megjelölhetők úgynevezett taint-ekkel, hogy elkerüljék a Podok automatikus ütemezését oda. Ha egy Pod mégis ilyen node-on szeretne futni, akkor az objektum toleration beállításával jelezheti, hogy elfogadja ezt a környezetet.
Ez az alapismereteket bemutató rész egy fontos lépcsőfok ahhoz, hogy megértsük, hogyan működik a Kubernetes rendszerszinten. A későbbi gyakorlati példákban ezek a fogalmak újra és újra elő fognak kerülni.
Ugye milyen izgalmas ez a világ? És még csak most kezdtük el…
Ahhoz, hogy valóban megértsük, hogyan működik a Kubernetes, érdemes közelebbről is megvizsgálni az architektúráját. Az alábbi ábra a Kubernetes komponenseit mutatja be magas szinten, vagyis egy áttekintő képet ad arról, hogy milyen főbb részekből áll a rendszer. Fontos megjegyezni, hogy az ábrán nem szerepel minden komponens, például a hálózati bővítményekért (network plugin) felelős elemek külön kerülnek bemutatásra.
A Kubernetes felépítése – egyszerűen
A Kubernetes alapvetően két fő részre osztható:
Control plane – ez a „központi agy”, amely irányítja a klasztert.
Worker nodes – A „munkavégzők” futtatják ténylegesen a konténereket.
A control plane egy vagy három (nagy megbízhatóság esetén három) különálló csomópontból állhat. Ezeket gyakran „cp node”-ként is említjük. A worker csomópontokból tetszőleges számú lehet – ezek a rendszer skálázhatóságának alapját adják.
Később majd bemutatjuk, hogyan lehet akár egyetlen gépen is kipróbálni az egész klasztert, ami fejlesztéshez és teszteléshez kiváló.
Mi történik a központi agyban?
A control plane legfontosabb szerepe, hogy irányítsa és koordinálja az egész klasztert. Itt található többek között:
API szerver (kube-apiserver): ez a rendszer „kapuja”, amelyen keresztül minden külső és belső komponens kommunikál. Minden parancs, amit kiadunk (pl. kubectl segítségével), az API szerverhez fut be.
Ütemező (kube-scheduler): ez a komponens dönt arról, hogy melyik worker csomóponton fusson le egy adott konténer. A döntés alapja lehet az erőforrás-kihasználtság, címkék, korlátozások stb.
Vezérlők (controller manager): ezek a háttérben futó folyamatok figyelik az állapotokat (pl. egy pod leállt), és gondoskodnak arról, hogy a klaszter mindig az elvárt állapotban legyen.
Tárolórendszer (etcd): ez egy kulcs-érték adatbázis, amely az egész klaszter állapotát tárolja – például hogy milyen podok futnak, milyen beállításokkal.
Mi történik a munkavégző csomópontokon?
Minden worker node két fő komponenst futtat:
kubelet: ez egy olyan folyamat, amely figyeli a node-hoz tartozó podokat, és gondoskodik arról, hogy azok megfelelően fussanak. A kubelet letölti a szükséges konténerképeket, előkészíti az erőforrásokat, és a helyi konténer futtatómotor (pl. containerd) segítségével elindítja a konténereket.
kube-proxy: ez felelős a hálózati szabályokért, például hogy a podok hogyan érik el egymást vagy a külvilágot. A kube-proxy a választott hálózati bővítménnyel (pl. CNI plugin) együttműködve kezeli ezeket a szabályokat.
Rugalmas kommunikáció – nem csak Linuxon
A Kubernetes legnagyobb ereje az API-alapú kommunikációs modellje, amely lehetővé teszi, hogy a klaszter különféle típusú rendszereket is kezeljen. Bár a vezérlősík kizárólag Linuxon futhat, a munkavégző csomópontokon akár Windows Server 2019, 2022 vagy 2025 is használható. Ez lehetővé teszi, hogy vegyes környezetben is használjuk a Kubernetes-t, például ha Windows-alapú alkalmazásokat is szeretnénk konténerizálni.
Ha eddig azt gondoltad, hogy csak Linux-on lehet Docker konténereket futtatni, akkor itt a példa, hogy a Windows is egy igen jó alternatíva. 🙂
A modern alkalmazásfejlesztés egyik alappillére a konténerizáció. Az olyan eszközök, mint a Docker, lehetővé teszik, hogy alkalmazásainkat izolált, skálázható konténerekben futtassuk. A konténerizációhoz azonban szükség van egy megbízható tárhelyre, ahol a konténerképeket tárolhatjuk, kezelhetjük és megoszthatjuk.
Pontosan ezt a bevezetőt írtam az AWS ECR-ről szóló cikkben is. Úgy gondoltam, hogy ebben sem lesz ez másképp. Most azonban az Azure tárólóregisztrációs adatbázisáról lesz szó, az ACR-ről.
Az Azure Container Registry (ACR) egy teljes mértékben felügyelt, privát konténerregiszter az Azure felhőplatformon, amely lehetővé teszi a Docker és OCI (Open Container Initiative) kompatibilis konténerek tárolását és kezelését. Az ACR különösen hasznos azoknak, akik Kubernetes-t (AKS – Azure Kubernetes Service) vagy más konténeres megoldásokat használnak, de kezdők számára is könnyen érthető és kezelhető.
Miért van szükség az ACR-re?
A konténerizált alkalmazások egyik alapvető eleme a konténerregiszter, amely a konténerképek tárolására és elérhetővé tételére szolgál. Bár használhatunk publikus tárolókat is, például a Docker Hub-ot, a vállalati vagy biztonsági szempontból érzékeny környezetekben érdemes egy privát megoldást választani, mint az ACR.
Előnyei:
Privát és biztonságos: Csak az engedélyezett felhasználók és szolgáltatások férhetnek hozzá.
Azure integráció: Könnyen csatlakoztatható Azure Kubernetes Service-hez (AKS), App Service-hez és más Azure szolgáltatásokhoz.
Automatizált építés és frissítés: Beállíthatunk automatikus képépítést és frissítést webhookok vagy DevOps pipeline-ok segítségével.
Geo-replikáció: Több régióban is elérhetővé tehetjük a konténerképeket.
Az ACR struktúrája
Az ACR egy hierarchikus struktúrát követ, amely lehetővé teszi a különböző konténerképek és adattárolók rendezett kezelését:
Registry: Az ACR legfelső szintje, amely az összes tárolt képet kezeli.
Repository: Egy adott alkalmazás vagy verziótároló helye, ahol különböző verziójú képek találhatók.
Tag-ek: A különböző verziókat és build-eket azonosítják, például node-webapp:3.0.0, node-webapp:latest.
Hogyan tölthetek fel képet az ACR-be?
Ha van egy helyi Docker image, amelyet szeretnénk az ACR-be feltölteni:
Tag-elés az ACR nevével:
docker tag node-webapp:4.0.0 acrregistryneve.azurecr.io/node-webapp:4.0.0docker tag node-webapp:4.0.0 acrregistryneve.azurecr.io/node-webapp:latest
az acr repository list --name acrregistryneve --output table
Alkalmazás indítása az ACR-ben tárolt képből
A legegyszerűbb módja egy ACR-ben tárolt konténer futtatásának az Azure Container Instances (ACI) használata. Az ACI lehetővé teszi, hogy néhány parancs segítségével elindítsuk az alkalmazásunkat anélkül, hogy egy teljes Kubernetes klasztert kellene kezelni.
ACI erőforrás létrehozása és az ACR-ből való kép futtatása
az container show --resource-group eroforrascsoport --name node-container --query "{FQDN:ipAddress.fqdn}" --output table
Ez az egyszerű megoldás lehetővé teszi, hogy gyorsan és könnyedén futtassunk egy alkalmazást az ACR-ben tárolt képből anélkül, hogy mélyebb Kubernetes ismeretekre lenne szükség.
Életciklus és tárhely kezelés
Az ACR lehetőséget biztosít az életciklus és tárhely kezelésére:
Retention Policies: Beállíthatunk automatikus törlési szabályokat az elavult vagy nem használt képek eltávolítására.
Tiered Storage: Az ACR támogatja a különböző szintű tárhelyeket (Basic, Standard, Premium) az igényekhez igazítva.
Garbage Collection: Az ACR automatikusan törli a nem használt rétegeket, csökkentve ezzel a tárhelyhasználatot.
ACR integráció más Azure szolgáltatásokkal
Az ACR könnyen integrálható más Azure szolgáltatásokkal:
Azure Kubernetes Service (AKS): Automatikusan betölthető konténerképek az ACR-ből.
Azure DevOps: Pipeline-ok segítségével automatizálhatjuk a képépítést és publikálást.
Azure Functions: Konténerizált funkciók futtatása közvetlenül az ACR-ből.
Azure App Service: Webalkalmazások közvetlenül ACR-ből történő futtatása.
Összegzés
Az Azure Container Registry egy kiváló eszköz a konténerizált alkalmazások tárolására és kezelésére az Azure környezetben. Az ACR segítségével biztonságosan és hatékonyan dolgozhatunk konténerképekkel, integrálhatjuk azokat DevOps pipeline-okba, és közvetlenül felhasználhatjuk Azure szolgáltatásokban. Kezdőként érdemes kísérletezni az ACR használatával, és megtapasztalni, hogyan egyszerűsítheti a konténerkezelési folyamatokat.
Szerinted is jobb biztonságosan tárolni az alkalmazásainkat?
Mi az a DeepSeek? Egy új OpenAI modell? Nem! A DeepSeek egy hirtelen berobbant projekt, amely egyre nagyobb figyelmet kap az AI világában. A csapat célja, hogy nyílt forráskódú, nagy teljesítményű és költséghatékony AI-modelleket hozzanak létre, amelyeket a fejlesztők könnyen beépíthetnek saját rendszereikbe. Az egyik legújabb modelljük, a DeepSeek R1, mostantól elérhető az Azure AI Foundry-n, így egyszerűen kipróbálhatod és integrálhatod a saját alkalmazásaidba.
DeepSeek és Azure
A DeepSeek egy AI-kutatásra és fejlesztésre specializálódott csapat, amely nagyméretű nyelvi modelleket (LLM) és más AI-megoldásokat készít. Céljuk, hogy magas teljesítményű, nyílt forráskódú és költséghatékony AI-modelleket biztosítsanak a fejlesztők és vállalatok számára.
A DeepSeek R1 az egyik legújabb nyelvi modelljük, amely hatékony és könnyen használható, így lehetőséget ad a fejlesztőknek, hogy fejlett AI-funkciókat építsenek be alkalmazásaikba anélkül, hogy komoly infrastruktúrába kellene fektetniük.
Mostantól a DeepSeek R1 elérhető az Azure AI Foundry modellkatalógusában és a GitHub-on, így egyszerűen integrálható különböző AI-megoldásokba.
Ráadásul már magyar nyelven is elérhető hozzá a felület, ami még egyszerűbbé teszi a megismerést és a használatot.
Gyorsabb AI-fejlesztés az Azure AI Foundry-n
Az AI-technológia folyamatosan fejlődik, és egyre könnyebben elérhetővé válik. A DeepSeek R1 egy nagy teljesítményű és költséghatékony nyelvi modell, amely lehetővé teszi, hogy a felhasználók minimális infrastruktúrával kihasználják a mesterséges intelligencia előnyeit.
Ha az Azure AI Foundry platformon használod a DeepSeek R1-et, akkor gyorsan kísérletezhetsz, tesztelheted az eredményeket és skálázhatod az alkalmazásodat. A beépített eszközök segítenek az AI-modell teljesítményének mérésében és optimalizálásában.
A Microsoft célja, hogy az Azure AI Foundry egy olyan hely legyen, ahol a legjobb AI-modellek egy helyen elérhetőek, így a fejlesztők és vállalatok gyorsabban és hatékonyabban hozhatnak létre AI-alapú megoldásokat.
Biztonságos és megbízható AI
A DeepSeek R1 komoly biztonsági teszteken és ellenőrzéseken esett át, hogy minimalizálják a kockázatokat. Az Azure AI Content Safety automatikus tartalomszűrési rendszerrel is rendelkezik, amely alapértelmezetten be van kapcsolva, de igény szerint kikapcsolható.
Az Azure AI Foundry folyamatosan monitorozza az AI-modell kimeneteit, így a telepítés előtt és után is ellenőrizheted, hogy megfelelően működik-e. Ezzel biztosítjuk, hogy a platform biztonságos és megfelelőségi szempontból is vállalati szintű környezetet biztosítson.
Hogyan próbálhatod ki a DeepSeek R1-et?
Jelentkezz be az Azure Portálra, regisztrálj egy Azure AI Foundry projektet.
Keress rá a DeepSeek R1-re az Azure AI Foundry modellkatalógusában.
Nyisd meg a modell adatlapját.
Kattints a „Deploy” gombra, hogy megkapd az API-t és a hozzáférési kulcsot.
A telepítési oldalon pillanatok alatt megkapod a szükséges adatokat.
Próbáld ki a modellt a beépített playgroundban.
Használd az API-t különböző alkalmazásokkal és kliensekkel.
A DeepSeek R1 mostantól kiszolgáló nélküli, nyilvános végponton is elérhető az Azure AI Foundry-n. Kezdd el itt: Azure AI Foundry, és próbáld ki a DeepSeek modellt!
A GitHubon további forrásokat és részletes útmutatókat találhatsz a DeepSeek R1 integrációjáról, többek között az alábbi cikkben: GitHub Models.
Hamarosan a DeepSeek R1 könnyített verzióját is futtathatod helyben, a Copilot+ segítségével. További részletek a Windows Fejlesztői Blogon: Windows Developer Blog.
A Microsoft egyre nagyobb hangsúlyt fordít erre a területre és folyamatosan bővíti az Azure AI Foundry modellkatalógusát. Bevallom én is kíváncsian várom, hová fejlődik ez és, hogy a fejlesztők és vállalatok hogyan használják a DeepSeek R1-et valódi problémák megoldására. Az látszik, hogy a cél, hogy minden vállalkozás hozzáférjen a legmodernebb AI-megoldásokhoz, és a lehető legtöbbet hozza ki belőlük. Ezzel pedig egyértelműen az Azure felé terelik a felhasználókat.
Te használod már valamelyik AI megoldást vagy magát az Azure-t? 🙂
Az Azure-ban a felhőalapú erőforrások létrehozása és kezelése lehet manuális, de az igazi hatékonysága és vagánysága az automatizálásban rejlik. Az Azure Resource Manager (ARM) sablonok egy hatékony eszközt biztosítanak az infrastruktúra kód alapú kezelésére (Infrastructure as Code, IaC), amely lehetővé teszi az erőforrások deklaratív módon történő létrehozását, frissítését és kezelését.
Ebben a cikkben áttekintjük az ARM sablonok alapjait, erősségeit, valamint a egyéb lehetőségeket, mint a függvények használata, a beágyazott (nested templates) és a hivatkozott (linked templates) sablonok. Kitérünk arra is, hogyan lehet újrahasználni a sablonokat kisebb módosításokkal, illetve milyen korlátai vannak az ARM sablonoknak.
Milyen felhőszolgáltatási modellbe tartozik az ARM sablon?
Habár az ARM sablon egy eszköz, amellyel erőforrásokat hozunk létre, most a besorolást a létrehozható erőforrások alapján tesszük meg. Tehát az Infrastructure as a Service (IaaS) és Platform as a Service (PaaS) kategóriába tartozik attól függően, hogy milyen erőforrásokat telepítünk vele:
IaaS (Infrastructure as a Service): Ha virtuális gépeket, hálózati konfigurációkat vagy tárolókat hozunk létre ARM sablonok segítségével, akkor ezek az infrastruktúra réteghez tartoznak.
PaaS (Platform as a Service): Ha az ARM sablonokat például egy Azure App Service, Azure SQL Database vagy más menedzselt szolgáltatások telepítésére használjuk, akkor azokat a PaaS kategóriába sorolhatjuk.
Az ARM sablonok tehát rugalmasan használhatók mind az infrastruktúra, mind pedig az alkalmazási szintű szolgáltatások kezelésére az Azure környezetben.
Mi az az ARM sablon?
Az ARM sablon egy JSON formátumú fájl, amely deklaratívan írja le az Azure erőforrások konfigurációját. Ezzel biztosítható, hogy az infrastruktúra következetes módon legyen telepítve, akár manuálisan, akár CI/CD folyamatokban.
ARM sablon felépítése
Egy alapvető ARM sablon a következő részekből áll:
$schema: Meghatározza a sablon JSON sémáját.
contentVersion: Verziókezeléshez használható. (beágyazott és hivatkozott sablonok esetén kiemelt szerepe van)
parameters: A telepítéskor megadható paraméterek.
variables: Kiszámított értékek definiálása.
resources: Az Azure erőforrások definiálása.
outputs: A telepítés végeredményeként visszaadható adatok. (beágyazott és hivatkozott sablonok esetén különösen hasznos)
Példa egy egyszerű ARM sablonra, amely egy Tárfiókot (Storage Account) hoz létre:
Az ARM sablonok deklaratív módon határozzák meg az infrastruktúrát, így az eredmény mindig konzisztens lesz, függetlenül attól, hányszor futtatjuk.
2. Újrafelhasználhatóság és skálázhatóság
A sablonokat egyszer elkészíthetjük, majd később más projektekben is használhatjuk. Segítenek a nagyvállalati szintű infrastruktúra kezelésében.
3. CI/CD támogatás
Beépíthetők DevOps folyamatokba, így automatizált telepítéseket és frissítéseket hajthatunk végre az Azure Pipelines vagy GitHub Actions segítségével.
4. Függvények használata
Az ARM sablonok támogatják a beépített függvényeket, amelyek dinamikus adatmanipulációt tesznek lehetővé. Számtalan függvény használható a sablonban, melyek bizonyos korlátozások mellett együtt és összefűzve is használhatók.
Ezzel a módszerrel egyetlen sablont használhatunk több környezetben anélkül, hogy jelentős módosításokra lenne szükség.
Beágyazott (Nested) és hivatkozott (Linked) ARM sablonok
Beágyazott sablonok (Nested Templates)
A beágyazott sablonok lehetővé teszik, hogy egy ARM sablonon belül további sablonokat definiáljunk és telepítsünk. Ez segít az infrastruktúra modularizálásában és újrafelhasználhatóságában.
Példa egy beágyazott sablonra, amely egy Tárfiókot hoz létre:
A hivatkozott sablonok lehetővé teszik, hogy külső forrásból (például egy Azure Storage Blob-ból) töltsünk be egy másik ARM sablont. Ez különösen hasznos nagyobb infrastruktúrák esetén, ahol az egyes sablonokat külön szeretnénk kezelni és frissíteni.
A hivatkozott sablonok lehetővé teszik a jobb kezelhetőséget és karbantarthatóságot, különösen összetett környezetek esetén.
A „mode” beállítás szerepe
Bizonyára feltűnt, hogy mindegyik példában szerepel egy „mode” nevű parameter. A „mode” beállítás határozza meg, hogy az ARM sablon telepítése hogyan történjen az Azure környezetben. Két lehetőség van:
Incremental: Csak az új vagy módosított erőforrásokat hozza létre vagy frissíti. A meglévő erőforrásokat nem törli.
Complete: Az összes meglévő erőforrást eltávolítja, amely nincs megadva a sablonban, és csak az új sablon szerinti konfiguráció marad meg.
Általában az Incremental módot ajánljuk (ez az alapértelmezett), hogy elkerüljük az adatok vagy erőforrások véletlen törlését.
ARM sablon futtatása PowerShell-ből és Azure CLI-ból
Fontos, hogy a sablon telepítése előtt minden olyan „erőforrás csoportot”létre kell hoznunk, amelybe erőforrásokat szeretnénk létrehozni.
PowerShell használata
Az ARM sablon PowerShellből történő telepítéséhez az New-AzResourceGroupDeployment parancsot használhatjuk:
Azure CLI-ben az az deployment group create parancsot használhatjuk:
az deployment group create --resource-group EroforrasCsoport --template-file template.json --parameters @parameters.json
Inline paraméterek megadásával:
az deployment group create --resource-group EroforrasCsoport --template-file template.json --parameters tarfiokNeve=cloudmentorsa
Ezekkel a parancsokkal az ARM sablonokat egyszerűen telepíthetjük az Azure környezetben.
Példa egy parameters.json fájlra
A parameters.json fájl a sablon által használt paraméterek megadására szolgál, lehetővé téve a sablon egyszerű újrafelhasználását különböző konfigurációkkal. Egy tipikus parameters.json fájl így néz ki:
Ez biztosítja, hogy az ARM sablon ugyanazt a logikát kövesse, de az értékek rugalmasan változtathatók legyenek.
ARM sablonok korlátai
Bonyolult szintaxis: Az ARM sablonok JSON-alapúak, ami nagyobb komplexitás esetén nehezen olvashatóvá válhat.
Nincs beépített ismétlés: Bár van néhány lehetőség (pl. copy loop), a Terraform-hoz képest kevésbé rugalmas.
Korlátozott hibakeresési lehetőség: A hibák az Azure Portalon vagy CLI-n keresztül nehezen diagnosztizálhatók.
Hosszabb telepítési idő: Összetettebb sablonok esetén a telepítés több percig is eltarthat.
Erőforráscsoport létrehozására nem használható: A sablon egy vagy több, létező erőforráscsoportba futtatható, de erőforráscsoportot nem tud létrehozni. (az előre létre kell hozni)
Összegzés
Az Azure ARM sablonok kulcsfontosságú eszközök a modern felhőalapú infrastruktúra kialakításában és kezelésében. Ha elkezdenéd használni az ARM sablonokat, érdemes egy kisebb projektben kipróbálni őket, majd fokozatosan bevezetni az összetettebb sablonokat.
Tudtad, hogy ha az ARM-be beletanulsz, akkor azzal együtt az teljes Azure automatizálás kulcsát is megkapod? 🙂
Korábban már beszéltünk a Kubernetes-ről, Docker-ről és a különböző konténerkép kezelési megoldásokról, mint az AWS ECR és Azur ACR. Azonban arról még nem esett szó: Mi az a képfájl? Hogyan épül fel? Milyen, számunkra fontos típusokról kell beszélnünk?
A konténerizáció egyik legfontosabb eleme a konténerképek használata, amelyek a futtatható környezeteket biztosítják. A Docker és az OCI (Open Container Initiative) képek szerkezete hasonló, mivel az OCI a Docker formátumának egy nyílt ipari szabványa lett. Az OCI létrejötte azért fontos, mert egy iparági szabványt biztosít a konténerképek kezelésére, elősegítve az interoperabilitást és a hordozhatóságot különböző konténer futtatókörnyezetek között. Ezzel kiküszöböli a vendor lock-in problémát, amely egyetlen technológiai ökoszisztémához kötné a fejlesztőket és üzemeltetőket.
Most szeretném nektek bemutatni a képek szerkezetét, a rétegek kezelését, a manifest-ek szerepét és a verziókezelés módját.
Docker és OCI képek alapjai
A Docker és az OCI képek egy rétegelt fájlrendszert használnak, amely lehetővé teszi a hatékony tárolást és a gyors betöltést. Egy konténerkép három fő részből áll:
Rétegek (Layers): A képfájl tartalma rétegekre van bontva, amelyek egymásra épülnek.
Manifest fájl: Egy JSON-alapú leírófájl, amely meghatározza a kép struktúráját és annak különböző attribútumait.
Config (Konfigurációs fájl): A futási beállításokat tartalmazza, mint például a környezeti változók és az alapértelmezett parancsok.
Rétegek kezelése
A konténerképek rétegei a Copy-on-Write (CoW) elv alapján működnek. Ez azt jelenti, hogy egy újabb réteg csak a módosított fájlokat tárolja, miközben az előző rétegek változatlanok maradnak. A rétegek kezelésének főbb szempontjai:
Rétegek építése: Minden egyes RUN, COPY és ADD utasítás egy új réteget hoz létre a Dockerfile feldolgozása során. (Példa)
Rétegek optimalizálása: Érdemes minél kevesebb réteget létrehozni, és a gyakran módosuló fájlokat a végső rétegbe helyezni, hogy a cache hatékony maradjon.
Rétegek megosztása: Ha több kép ugyanazokat az alaprétegeket használja, a konténer futtatókörnyezet (pl. Docker) csak a különböző rétegeket tölti le, így csökkenti a letöltési és tárolási igényt.
A Manifest szerepe
A manifest fájl egy JSON struktúra, amely meghatározza a kép rétegeit és meta adatait. Egy tipikus manifest a következő információkat tartalmazza:
SchemaVersion: A manifest formátum verziója.
Layers: A képet felépítő rétegek listája (digest formátumban).
Config: A konfigurációs fájl hash-e, amely tartalmazza a környezeti változókat és az indítási parancsokat.
MediaType: A fájlformátum meghatározása (Docker vagy OCI specifikus).
Az OCI és Docker image manifest formátumok nagyon hasonlóak, de az OCI teljesen nyílt és szabványosított formátumot biztosít.
Képverziók és a rétegek kezelése
A konténerképek verziókezelése többnyire címkék (tags) és digest-ek segítségével történik:
Tag (Címke): Egy könnyen olvasható név, például ubuntu:24.04 vagy webalkalmazas:1.2.0. A címkék bármikor új képverzióhoz rendelhetők.
Digest (SHA256 azonosító): Egy egyedi azonosító (pl. sha256:abcd1234...), amely garantálja, hogy a megadott kép mindig ugyanaz marad.
Rétegek újrahasznosítása: Ha egy új verzióban csak néhány fájl változik, akkor a rétegek nagy része változatlan marad, és a Docker vagy OCI runtime csak az új rétegeket tölti le. Ezzel tárhelyet és internet sávszélességet is spórol.
A konténerképek rétegei az alábbiak szerint épülnek fel:
Base Image (Alapkép): Az operációs rendszer és a minimális futtatókörnyezet.
Layer 1 (Alapcsomagok és függőségek): A szükséges könyvtárak és függőségek telepítése.
Layer 2 (Alkalmazáskód hozzáadása): Az egyedi alkalmazás fájljainak bemásolása.
Layer 3 (Konfiguráció és optimalizáció): A futtatási beállítások és optimalizációk alkalmazása.
Final Image (Végleges kép): Az összes réteg egyesítésével elkészült futtatható konténerkép.
Mi a különbség a Docker és az OCI között?
Bár az OCI a Docker formátumából fejlődött ki, a kettő között van néhány alapvető különbség:
Nyílt szabvány: Az OCI egy iparági konszenzusra épülő nyílt szabvány, míg a Docker formátumát eredetileg a Docker Inc. hozta létre.
Kompatibilitás: Az OCI szabvány célja a konténerképek hordozhatóságának biztosítása bármely futtatókörnyezet között, míg a Docker esetén elsősorban a Docker Engine-re optimalizált képekkel dolgozunk.
Modularitás: Az OCI szabvány különválasztja a runtime és az image specifikációkat, így rugalmasabb, és más futtatókörnyezetek is könnyen alkalmazhatják.
Összegzés
A Docker és OCI képek rétegelt felépítése lehetővé teszi a hatékony tárolást, gyors letöltést és verziókezelést. A manifest fájl kulcsfontosságú szerepet játszik a kép struktúrájának meghatározásában, míg a rétegek megosztása és optimalizálása jelentősen csökkentheti az erőforrásigényt.
Az OCI formátum szabványosította ezt a struktúrát, így biztosítva a kompatibilitást és a jövőbeli skálázhatóságot.
Remélem kicsit sikerült érhetővé tennem a képfájlok struktúráját. 🙂
A modern alkalmazásfejlesztés egyik alappillére a konténerizáció. Az olyan eszközök, mint a Docker, lehetővé teszik, hogy alkalmazásainkat izolált, skálázható konténerekben futtassuk. A konténerizációhoz azonban szükség van egy megbízható tárhelyre, ahol a konténerképeket tárolhatjuk, kezelhetjük és megoszthatjuk.
Ebben a cikkben bemutatjuk az AWS Elastic Container Registry-t (ECR), amely egy teljes mértékben felügyelt konténerképtároló szolgáltatás az AWS-ben. A cikk segít megismerni az alapokat és megpróbál megmutatni olyan fejlettebb funkciókat, mint az integrációs lehetőségek és az automatizált életciklus kezelés.
Mi az AWS ECR?
Az AWS Elastic Container Registry (ECR) egy (PaaS) kategóriába tartozó, felügyelt szolgáltatás, amely lehetővé teszi Docker és OCI (Open Container Initiative) kompatibilis konténerképek tárolását, kezelését és megosztását.
Az ECR maga a szolgáltatás elnevezése. Ezen belül történk a varázslás, hiszen ezen belül repository-kat hozhatunk létre. Egy repository egy olyan tárhely, amely egy adott alkalmazás konténerképeit és azok különböző verzióit (változatait) tartalmazza.
Az AWS ECR struktúrája
Az alábbi hierarchikus struktúria szemlélteti az ECR-t:
Repository: tartalmazza a különböző alkalmazás verziók konténerképeit
Hogyan tölthetek fel képet az ECR-be?
Első lépés, hogy fejlesztenem kell egy alkalmazást, amely docker vagy OCI kompatibilis. Ehhez találsz példát az én GitHub kódjaim között is.
Miután elkészítetted a képfájlt a számítógépeden, vagy valamilyen pipeline segítségével, nincs más dolgod, mint bejelentkezni ECR-be és feltölteni oda az aktuális konténerkép verzióját.
Ahhoz, hogy egy Docker-képet feltölts egy ECR repository-ba, kövesd az alábbi lépéseket:
docker tag sajat-kontener:latest <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/node-app:latest
docker tag sajat-kontener:latest <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/node-app:1.2.0
Az ECR-ben tárolt képeket könnyen használhatod AWS szolgáltatásokkal, például az ECS vagy az EKS segítségével.
Ha egy Amazon ECS clusterben szeretnél futtatni egy konténert az ECR-ből, hozz létre egy Task Definition-t, amely tartalmazza az ECR repository URL-jét:
Amikor nagyon sok alkalmazásunk konténerképeit tároljuk és ezekből rendszeresen készítünk új verziókat, előbb-utóbb azzal szembesülünk, hogy a régi és nem használt verziók sok helyet foglalnak. Ez pedig azt jelenti, hogy sok tárhelyet foglalnak, amely növeli a költségeinket.
Szerencsére az ECR támogatja az életciklus-szabályok (Lifecycle Policies) használatát, amelyek segítenek automatikusan törölni a régi vagy nem használt konténerképeket.
Ezeket szabályokon keresztül tudjuk megtenni. Egy-egy ilyen szabályhoz csupán néhány paramétert kell megadnunk, majd a szabályok között felállítanunk egy prioritási sorrendet, a többit az AWS elvégzi helyettünk.
Példa 1: egy olyan szabályra, amely csak az utolsó 5 képverziót tartja meg, és törli a régebbi verziókat:
{
"rules": [
{
"rulePriority": 1,
"description": "Tartsuk meg az utolsó 5 verziót",
"selection": {
"tagStatus": "tagged",
"countType": "imageCountMoreThan",
"countNumber": 5
},
"action": {
"type": "expire"
}
}
]
}
Példa 2: Összetett példa: A ‘latest’ verzió soha nem törlődik, de minden más 90 nap után törlődik:
{
"rules": [
{
"rulePriority": 1,
"description": "A 'latest' verzió soha nem törlődik",
"selection": {
"tagStatus": "tagged",
"tagPrefixList": ["latest"]
},
"action": {
"type": "retain"
}
},
{
"rulePriority": 2,
"description": "Minden más kép törlődik 90 nap után",
"selection": {
"tagStatus": "any",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 90
},
"action": {
"type": "expire"
}
}
]
}
AWS ECR integráció más AWS szolgáltatásokkal
Az AWS ECR könnyen integrálható más AWS szolgáltatásokkal, mint például:
Amazon ECS (Elastic Container Service)
Az ECR közvetlenül támogatja az ECS Fargate és ECS EC2 alapú futtatási módokat. Ha egy ECS clusterben szeretnéd futtatni az ECR-ben tárolt képeket, egyszerűen megadhatod az ECR repository URL-jét a Task Definition-ben.
Amazon EKS (Elastic Kubernetes Service)
Ha Kubernetes-t használsz az AWS-en, akkor az ECR tökéletes tárhely lehet a Kubernetes Pod-ok számára. Az alábbi módon hozhatsz létre hitelesítési „secret”-et, amely lehetővé teszi a Kubernetes számára az ECR repository elérését:
Ha AWS Lambda-t szeretnél konténer alapú csomagként használni, akkor az ECR egy megbízható tárhely lehet az ilyen konténerképek számára.
Összegzés
Az AWS ECR egy igazán sokoldalú konténerképtároló szolgáltatás, amely lehetővé teszi a konténerizált alkalmazások hatékony kezelését. Az életciklus-kezelés segít optimalizálni a tárhely felhasználást, így elkerülhető a felesleges konténerképek felhalmozódása. Emellett az ECR könnyedén integrálható más AWS szolgáltatásokkal, így egy teljes körű konténerizált fejlesztési és futtatási (teszt, éles, stb.) környezetet kínál.
Neked is van olyan ötleted, amelyet konténerképben lehetne ECR-en tárolni? 🚀
A felhő (Cloud) ma már mindennapi életünk része, mégis sokan még mindig misztikus, bonyolult technológiának tartják. Ha Te is azok közé tartozol, akik szeretnék megismerni, hogyan működik a Cloud és milyen lehetőségeket kínál, de tartasz attól, hogy csak programozói tudással lehet benne karriert építeni, akkor ez a cikk Neked szól!
Mi az a Cloud?
Internetről elérhető számítógépek összessége, amelyeken valamilyen alkalmazás és/vagy adatbázis működik
Egyszerűen fogalmazva a Cloud (felhő) egy olyan szolgáltatási modell, amely lehetővé teszi az adatok tárolását, alkalmazások futtatását és informatikai erőforrások igénybevételét az interneten keresztül. Ahelyett, hogy egy adott vállalat vagy személy saját szervereket tartana fenn, a felhő lehetőséget ad arra, hogy ezekhez a szolgáltatásokhoz bárhonnan hozzáférjünk.
Miért fontos a Cloud?
A Cloud a modern vállalatok és technológiák mozgatórugója. Segít a költségek csökkentésében, az adattárolás biztonságának növelésében és az innovatív ötletek gyorsabb megvalósításában. Napjainkban már nemzetközi viszonylatban is átlagosnak tekinthető a felhő használata. Ez motiválhat Téged is arra, hogy belépj ebbe a világba.
Szükséges-e programozói tudás a Cloud karrierhez?
A legnagyobb tévhit a Cloud-dal kapcsolatban, hogy csak programozók és fejlesztők tudnak benne elhelyezkedni. Ez nem igaz! Azt nem tagadom, hogy ha egy projektet indítunk, akkor a felhő kapcsán előbb-utóbb programoznunk kell. Ez a felhő sajátossága. Azonban a Cloud rengeteg más szerepkört is kínál, amelyekhez nincs szükség kódolási tudásra. Ilyenek például:
Cloud Sales és marketing: Cloud megoldások értékesítése és promóciója vállalatok számára.
Cloud Project Manager: Cloud alapú projektek vezetése, különböző csapatok koordinálása.
Cloud Support: Segítségnyújtás és úgyfélszolgálat Cloud szolgáltatásokhoz.
Business Analyst: Elemzések készítése, amely segíti a Cloud megoldások bevezetését és optimalizálását.
Hogyan érdemes elkezdeni?
Ha szeretnél megismerkedni a Cloud világával, érdemes az alábbi lépéseket követni:
Tanulj az alapokról: Számos ingyenes forrás áll rendelkezésre, mint például az AWS, Azure és Google Cloud ingyenes oktatási anyagai, vagy az én blogom is, ahol az alapokkal is rendszeresen foglalkozunk.
Próbálj ki Cloud szolgáltatásokat: Készíts saját fiókot egy Cloud platformon, és fedezd fel a lehetőségeket. (Azure-ban kaphatsz 200 USD-t 30 napra. És mindig vannak ingyenes szolgáltatások.)
Vegyél részt tanfolyamokon: Számos online képzés segít az alapok elsajátításában, akár programozói tudás nélkül is. Én a Gerilla Mentor Klub oktatójaként meleg szívvel ajánlom az itteni képzéseket.
Csatlakozz közösségekhez: Facebook csoportok, LinkedIn fórumok és olyan oktatással foglalkozó cégek közössége mint például a Gerilla Mentor Klub kiváló lehetőséget biztosítanak a tanulásra és kapcsolatépítésre.
Hogyan építhetünk Cloud karriert, ha nincs mély informatikai tudásunk?
A Cloud karrierépítés nem igényel feltétlenül mély technikai ismereteket. Ha nincs informatikai háttered, az alábbi lépések segíthetnek:
Fókuszálj az üzleti és menedzsment (vezetői) pozíciókra: A Cloud világában nemcsak mérnöki, hanem üzleti, ügyfélszolgálati és projektmenedzsment szerepek is elérhetők.
Fejleszd a Cloud alapú eszközök ismeretét: Olyan szolgáltatásokat érdemes megismerni, mint a Google Drive, Microsoft 365, OneDrive, vagy bármilyen SaaS (Software-as-a-Service) megoldás.
Szerezz tanúsítványokat: Az olyan belépő szintű tanúsítványok, mint az AWS Certified Cloud Practitioner, az Azure Fundamentals vagy a Google Cloud Digital Leader, segíthetnek megérteni az alapokat és megnövelhetik az esélyeidet a munkaerőpiacon. Habár ehhez kell némi informatikai tudás, bárki számára elérhető.
Vegyél részt Cloud fókuszú képzéseken: Tanulj meg Cloud alapú költségoptimalizálást, digitális transzformációt vagy ügyféltámogatási stratégiákat. Olyan területekre fókuszálj, amelyek habár nem konkrétan a felhővel kapcsolatosak, de a felhőben is létező terletek.
Építs kapcsolatokat Cloud szakemberekkel: Vegyél részt konferenciákon, lépj be online közösségekbe, ahol tapasztaltabb emberektől tanulhatsz. Építs kapcsolatot LinkedIn-en és keress hozzád hasonló, fejlődni vágyó embereket.
Keress gyakornoki vagy junior pozíciókat: Sok vállalat keres olyan embereket, akik nyitottak a tanulásra, és az alapok elsajátítása után fejlődhetnek a vállalaton belül.
Összegzés
A Cloud nem csak a fejlesztők és mérnökök világa. Rengeteg lehetőséget kínál olyanok számára is, akik üzleti, projektmenedzsment vagy ügyfélszolgálati területen szeretnének elhelyezkedni. A legfontosabb lépés az, hogy merj elindulni és felfedezni ezt a dinamikusan fejlődő világot!
Aki ismer, az már tudja, hogy nekem a kiszolgáló nélküli megoldások a kedvenceim. Ezek azok, amelyekben rengeteg potenciál van mind kezdőknek, mind haladóknak. Ezért is írok erről szívesen.
Ma az AWS zászlóshajóját mutatom be nektek, az AWS Lambda-t. A Lambda az Amazon Web Services (AWS) egyik legsokoldalúbb és leginnovatívabb szolgáltatása, amely a „serverless” megközelítés középpontjában áll. Amikor valaki találkozik az AWS-el, akkor hamar szembetűnik, hogy ez az. a szolgáltatás, amely megkerülhetetlen részét képezi az AWS alapú ökoszisztémának. Hogy miért is van így? Ezt próbálom bemutatni nektek a következő sorokban.
Mi az AWS Lambda?
Az AWS Lambda egy „serverless” szolgáltatás, amely lehetővé teszi, hogy kódot futtassunk anélkül, hogy infrastruktúrát (virtuális gépet) kellene kezelnünk. A szerverek konfigurálásától az operációs rendszerek frissítéséig minden teendőt az AWS végez el helyettünk, miközben mi csak a kódra koncentrálunk. Azaz csupán programoznunk kell. Ez már önmagában is egy nagyon jó dolog.
Hogyan működik az AWS Lambda?
Az AWS Lambda működése néhány kulcsfontosságú lépésre osztható:
Kód feltöltés: Alkalmazhatod a kódodat szöveges fájlként, egy zip fájl formájában, vagy egy konténer képként. Az AWS Lambda támogatja a Python, NodeJS, Java, Go, Ruby és .NET nyelveket, valamint ezek különböző verzióit (általában a legfrissebb és legstabilabb, aktuális verziókat).
Eseménykezelő: Meg kell határoznod a „handler” nevű függvényt, amelyet a Lambda futtat, amikor egy esemény bekövetkezik. Ez a függvény tartalmazza az üzleti logikát.
Kiváltó esemény (trigger) konfigurálása: Mindig egy esemény lesz, ami elindítja a Lambda-t, lehet egy HTTP kérés (pl.: API Gateway-n keresztül), egy S3 fájl feltöltés, egy DynamoDB tábla módosítása vagy akár egy CloudWatch időzítés.
Automatikus futtatás és skálázás: Az AWS Lambda függvényed futtatása megkezdődik, amikor a kiváltó esemény bekövetkezik. Több párhuzamos futtatás esetén a Lambda dinamikusan skálázódik, attól függően, hogy mennyi erőforrásra van szükség.
Fizetés használat alapján: Mint a legtöbb felhő alapú megoldás ez is Pay-As-You-Go modellben számlázódik, azaz csak azért a futási időért és memóriahasználatért fizetsz, amelyet valóban felhasználtál.
Legfontosabb összetevők
Amikor Lambda-t kezdünk használni a következő két összetevő lesz számunkra a legfontosabb. Ezek fogják azt is eldönteni, hogy egyáltalán a Lambda-e az a megoldás amire szükségünk van.
Események (triggers)
Ahogy fent már olvastad, mindig kell egy esemény, ami elindítja a Lambda függvényünket. Mivel az AWS Lambda szorosan van integrálva az AWS ökoszisztémájával, így nem meglepő, hogy az alábbiak a leggyakoribb eseményforrások:
Amazon S3: Automatikusan futtatható a kód, amikor egy fájl feltöltődik vagy módosul egy S3 bucket-ben.
Amazon DynamoDB: Tábla módosítási események kezelése.
Amazon API Gateway: RESTful API-k és webhookok létrehozása.
Amazon EventBridge: Komplex eseményalapú architektúra kialakítása.
Ezeket tudjuk kombinálni ráadásul oly módon is, hogy több Lamda függvényt használunk együtt.
Memória és időkorlát
Habár az AWS világában a Lambda szinte megkerülhetetlen, mégis vannak helyzetek, amikor nem használhatjuk. Ezért azt javaslom, hogy mielőtt eldöntöd, hogy a Lambda lesz-e az a szolgáltatás amit igénybe veszel a választott megoldás kivitelezéséhez, vizsgáld meg, hogy az alábbi korlátozások engedik-e ezt neked:
Memória limit: 128 MB és 10 GB közötti memória allokálható egy funkcióhoz.
Időkorlát: Egy Lambda funkció maximális futási ideje 15 perc lehet.
Tehát ha hosszan futó függvényeket vagy kódokat akarsz használni, a Lambda nem lesz számodra alternatíva. Ne csüggedj, ez esetben lesz más lehetőséged is.
Mikor érdemes használni az AWS Lambda-t?
Gyakorlati példák
Adatfeldolgozás valós időben: Pl. egy S3 bucketbe feltöltött fájl automatikus feldolgozása (pl. képek tömeges átméretezése, videók konvertálása).
RESTful API-k: Az AWS Lambda és az API Gateway kombinációjával gyorsan létrehozhatsz API-kat.
IoT alkalmazások: IoT eszközök eseményeinek kezelése.
Batch feldolgozás: Nagy mennyiségű adat csomagban történő feldolgozása.
Előnyök
Automatikus skálázás: Nem kell manuálisan módosítanod az erőforrásokat.
Nincs infrastruktúrakezelés: Az AWS kezeli a szerverek karbantartását.
Rövid fejlesztési ciklus: Gyorsan prototípusokat hozhatsz létre. Tipikus PaaS megoldás. 🙂
Optimalizálás és bevált gyakorlatok
A fent említett korlátozások miatt erősen ajánlott a lehető legjobban optimalizált kódok alkalmazása a Lambda függvényeknél. Ehhez szeretnék egy kis segítséget nyújtani:
Kisebb függvények létrehozása: Használj kisebb, rövidebb rutinokat és metódusokat az üzleti logika felépítéséhez, amelyek gyorsan és hatékonyan futnak.
Üresjárat csökkentése: A Lambda figyeli és leállítja az nem használt kapcsolatokat, így előfordulhat, hogy amikor újra használni szeretnék azt, akkor hibát kapunk. Ilyen helyzetekben használj keep-alive technikákat.
Környezeti változók: Használj környezeti változókat a dinamikus változók tárolásához. Pl.: S3 bucket neve, kapcsolati információk.
Rekurzív hívások kerülése: Kerüld az olyan eseteket, amikor a függvény önmagát hívja meg, vagy olyan folyamatot indít el, amely újra meghívhatja a függvényt. Ez a költségek növekedéséhez vezethet.
Monitoring és hibakeresés: Állítsd be és használd a CloudWatch Log-okat a futási információk megértéséhez és elemzéséhez.
Dokumentált, szabványos hívások használata: Ne használj, olyan hívásokat és megoldásokat, amelyek nem dokumentáltak vagy nem szabványosak. Ezzel megakadályozhatod, hogy a rendszeres AWS API frissítések kompatibilitási vagy futási hibákat okozzanak.
Idempotens kód használata: Írj olyan kódot, amely többszöri végrehajtása ugyanazzal a bemenettel ugyanazt az eredményt adja.
Összegzés
Az AWS Lambda a serverless megoldások egyik úttörője, amely modernizálta a felhőalapú alkalmazások fejlesztését. Ha költséghatékony, rugalmas és gyors megoldást keresel, az AWS Lambda egy kiváló választás.
Az elmúlt hetekben megismerhettük a böngészőben használható parancssori eszközt, a Cloud Shell-t a nagyobb felhőszolgáltatóknál, úgy mint az AWS vagy a Google Cloud. Amint láthattuk, a CloudShell egy olyan böngészőben használható parancssori eszköz, amely leegyszerűsíti a „kommunikációt” az aktuális felhőszolgáltatónk és közöttünk. Hiszen nem kell semmi új komponenst nem kell telepítenem a számítógépemre, hogy kezelni tudjam a felhőerőforrásaimat. Ez az eszköz kiemelten hasznos mindazok számára, akik szeretnének kísérletezni, alkalmazásokat fejleszteni, tanulni vagy hibákat elhárítani a felhőben. És mindezt nagyon gyorsan.
A korábbi cikkekben bemutatott megoldásokkal ellentétben, az Azure esetén nem lesz olyan rejtett gép a háttérben, amelyen futtathatjuk a parancsainkat. Itt kissé másképpen működik, de ne szaladjunk ennyire előre.
Mi az Azure Cloud Shell?
Az Azure Cloud Shell az egyik legkényelmesebb és legrugalmasabb eszköz, amelyet az Azure felhasználóknak kínál. Ez a böngésző alapú parancssori környezet lehetővé teszi, hogy bárhonnan, bármilyen eszközről elérd és kezeld az Azure erőforrásaidat. Nincs szükség telepítésekre vagy konfigurációkra, mindössze egy internetkapcsolat és egy web böngésző kell hozzá.
Ami a legjobb ebben és az Azure Cloud Shell-t egyedivé teszi, hogy egy helyen férhetsz hozzá az Azure CLI-hoz, a PowerShell-hez, és számos előre telepített eszközhöz, miközben automatikusan hozzáférsz egy tárhelyhez (tárfiók – storage account) is, ahol a fájljaid és szkriptek is találhatók. Ez az eszköz nemcsak időt takarít meg, de megkönnyíti az Azure erőforrások hatékony és biztonságos kezelését.
Fő funkciók, előnyök és tippek:
Webalapú hozzáférés: Bármilyen böngészőből elérhető (akár mobiltelefonról is), nincs szükség telepítésre.
Beépített eszközök: Bash, PowerShell, Azure CLI, és számos más előre telepített eszköz. (Pl.: Git)
Tárhely integráció: Automatikus kapcsolat egy előre megadott tárfiókkal (Azure Storage Account) a szkriptek és fájlok tárolásához. Ezt a tárhelyet ráadásul felcsatolhatod a helyi számítógépedre is.
Egyszerű erőforrás-kezelés: Parancsok és szkriptek egyszerű, gyors futtatása az Azure erőforrások hatékony kezeléséhez.
Alias-ok beállítása: Gyorsítsd meg a munkádat egyéni parancsokkal.
VS Code integráció: Használd a Cloud Shell-t közvetlenül a Visual Studio Code-ból.
Gyorsbillentyűk: Ismerd meg a legfontosabb billentyűkombinációkat, hogy úgy dolgozz mint egy profi.
PowerShell és Bash együtt
A többi felhőszolgáltatótól eltérően, a Microsoft gondolt azon szakemberekre, akiknél vagy PowerShell vagy Bash tapasztalat a nagyobb. Hiszen előfordulhat, hogy valaki a felhő előtt csak PowerShell-t használt, vagy csak Bash-t. Azure-ban pedig senkinek sem kell újratanulnia semmit vagy megszoknia egy új nyelvet.
Egyetlen kattintással választhatunk Bash vagy PowerShell környezetet és ha meggondolnánk magunkat akkor is bármikor átválthatunk a másikra. Teljes szabadságot kapunk. Ez igazán jó hír mindenkinek. 🙂
Kattint a jobb felső sarokban lévő Cloud Shell ikonra.
Válaszd ki, hogy Bash-t vagy PowerShell-t szeretnél használni először
Utána lehetőséged van Tárfiók nélküli beállításra (ekkor a használat végén minden fájl és parancs előzmény törlődik) vagy ha szeretnéd tárolni a szkriptjeidet és fájljaidat, akkor a Tárfiók csatlakoztatása lehetőséget válaszd.
Ezután ki kell választanod azt az előfizetést, amelyben a fájlokat tároló tárfiók van/lesz.
Következő lépésben 3 lehetőséged van:
Meglévő tárfiók kiválasztása: Ez akkor hasznos, ha a tárfiókod már létezik és azt szeretnéd felcsatolni a Cloud Shell mögé
Létrehozunk Önnek egy tárfiókot: Ez esetben az Azure létrehoz egy tárfiókot véletlenszerűen a kijelölt előfizetésben. Ez akkor hasznos, ha gyorsan szeretnék a beállítást elvégezni. (nem javasolt)
Szeretnék létrehozni egy tárfiókot: Általában ezt a lehetőséget választjuk a legtöbb esetben, mert így mi adjuk meg, hogy milyen néven és melyik erőforráscsoportba kerüljön a tárfiók.
Ha a harmadikat választottuk, akkor a következő lapon meg kell adnunk az alábbi adatokat:
Előfizetés neve: Ahová a tárfiókot létrehozzuk
Erőforráscsoport: Ahová a tárfiók létrejön
Régió: Melyik régióban legyen az erőforráscsoport és a tárfiók
Tárfiók neve: Egyedi névnek kell lennie
Fájlmegosztás: Fájlmegosztás neve, ahol a fájlokat majd mentjük és amit fel tudunk csatolni a saját gépünkre (Windows, Linux, Mac)
Ha ezzel megvagyunk, akkor a Létrehozás gombra kattintva 1-2 perc alatt befejeződik a Cloud Shell beállítása.
Példa parancsok
Amint elindult a Cloud Shell, végtelen lehetőségünk van arra, milyen parancsokat futtatunk. Innen már csak rajtunk és a kitűzött céltól függ a parancsok bonyolultsága és jellege.