CI-/CD-folyamat tárolóalapú számítási feladatokhoz

Container Registry
Cosmos DB
Kubernetes Service
Monitor
Pipelines

Ez a példaforgatókönyv olyan vállalatokra vonatkozik, amelyek tárolók és DevOps-munkafolyamatok használatával szeretnék modernizálni az alkalmazásfejlesztést. Ebben a forgatókönyvben a Jenkins Node.js és helyez üzembe egy webalkalmazást egy Azure Container Registry és Azure Kubernetes Service. Globálisan elosztott adatbázisszinten a Azure Cosmos DB van használva. Az alkalmazások teljesítményének figyelése és hibaelhárítása érdekében Azure Monitor Grafana-példányokkal és -irányítópultokkal integrálható.

Alkalmazásforgatókönyvek például egy automatizált fejlesztési környezet biztosítása, az új kód véglegesítésének érvényesítése, valamint az új üzemelő példányok átmeneti vagy éles környezetbe való lekért lehelyezése. Hagyományosan a vállalkozásoknak manuálisan kellett alkalmazásokat és frissítéseket létrehozniuk és lefordítania, valamint egy nagy méretű, monolitikus kódbázist kellett fenntartaniuk. A folyamatos integrációt (CI) és folyamatos üzembe helyezést (CD) használó modern alkalmazásfejlesztési megközelítéssel gyorsabban építhet ki, tesztelhet és helyezhet üzembe szolgáltatásokat. Ezzel a modern megközelítéssel gyorsabban lehet alkalmazásokat és frissítéseket kiadni az ügyfeleknek, és gyorsabban reagálhat a változó üzleti igényekre.

Az Olyan Azure-szolgáltatások használatával, mint a Azure Kubernetes Service, Container Registry és Cosmos DB, a vállalatok a legújabb alkalmazásfejlesztési technikákat és eszközöket használják a magas rendelkezésre állás megvalósításának egyszerűsítéséhez.

Releváns esetek

További releváns esetek például a következők:

  • Alkalmazásfejlesztési eljárások modernizálása mikroszolgáltatás- és tárolóalapú megközelítéssel.
  • Felgyorsíthatja az alkalmazásfejlesztés és az üzembe helyezés életciklusát.
  • Üzembe helyezés automatizálása ellenőrzési környezetek teszteléséhez vagy elfogadásához.

Architektúra

A Jenkins, a Azure Container Registry és a Azure Kubernetes Service

Ez a forgatókönyv egy DevOps-folyamatot fed le egy Node.js webalkalmazáshoz és adatbázis-háttéralkalmazáshoz. Az adatok a következőképpen áramlnak végig a forgatókönyven:

  1. A fejlesztők módosítják a Node.js webalkalmazás forráskódját.
  2. A kódváltozást a rendszer egy forrásvezérlő adattárba, például az GitHub.
  3. A folyamatos integrációs (CI) folyamat elkezdéséhez egy GitHub webhook elindít egy Jenkins-projekt buildjét.
  4. A Jenkins-build feladat dinamikus buildügynökkel Azure Kubernetes Service a tárolók buildfolyamatának végrehajtásához.
  5. A rendszer létrehoz egy tároló rendszerképet a forráskódból a forrásvezérlőben, majd lekkért egy Azure Container Registry.
  6. A Jenkins folyamatos üzembe helyezéssel (CD) telepíti ezt a frissített tárolólemezképet a Kubernetes-fürtön.
  7. A Node.js webalkalmazás Cosmos DB háttérként használja a Cosmos DB. A Cosmos DB és Azure Kubernetes Service jelentésmetrikákat is Azure Monitor.
  8. A Grafana-példány vizualizációs irányítópultokat biztosít az alkalmazás teljesítményéről a Azure Monitor.

Összetevők

  • A Jenkins egy nyílt forráskódú automatizálási kiszolgáló, amely integrálható az Azure-szolgáltatásokkal a folyamatos integráció (CI) és a folyamatos üzembe helyezés (CD) érdekében. Ebben a forgatókönyvben a Jenkins összehangolja az új tároló rendszerképek létrehozását a forrásvezérlés véglegesítései alapján, lekullja ezeket a rendszerképeket a Azure Container Registry-be, majd frissíti az alkalmazáspéldányokat a Azure Kubernetes Service.
  • Az Azure Linux Virtual Machines a Jenkins- és Grafana-példányok futtatásához használt IaaS-platform.
  • Azure Container Registry a tárolófürt által használt tárolólemezképeket tárolja és Azure Kubernetes Service felügyeli. A rendszerképek biztonságosan vannak tárolva, és az Azure platform replikálhatja őket más régiókba az üzembe helyezési idők felgyorsítása érdekében.
  • Azure Kubernetes Service egy felügyelt Kubernetes-platform, amellyel tárolóvezénylési szakértelem nélkül helyezhet üzembe és kezelhet tárolóba helyezett alkalmazásokat. Üzemeltetett Kubernetes-szolgáltatásként az Azure olyan fontos műveleteket bonyolít le, mint az állapotmonitorozás és a karbantartás.
  • Azure Cosmos DB egy globálisan elosztott, többmodelles adatbázis, amely lehetővé teszi, hogy az igényeinek megfelelő különböző adatbázis- és konzisztenciamodellek közül válasszon. A Cosmos DB az adatok globálisan replikálhatók, és nincsenek telepíthető és konfigurálható fürtkezelési vagy replikációs összetevők.
  • Azure Monitor segít a teljesítmény nyomon követésében, a biztonság fenntartásában és a trendek azonosításában. A Monitor által lekért metrikákat más erőforrások és eszközök, például a Grafana is használhatja.
  • A Grafana egy nyílt forráskódú megoldás a metrikák lekérdezésére, megjelenítésére, riasztására és megjelenítésére. A Azure Monitor beépülő modul lehetővé teszi a Grafana számára, hogy vizuális irányítópultokat hozzon létre a Azure Kubernetes Service alkalmazásban futó alkalmazások teljesítményének Cosmos DB.

Alternatív megoldások

  • Az Azure Pipelines segítségével folyamatos integrációs (CI), tesztelési és üzembe helyezési (CD) folyamatot valósíthat meg bármely alkalmazáshoz.
  • A Kubernetes közvetlenül az Azure-beli virtuális gépeken futtatható felügyelt szolgáltatás helyett, ha jobban szeretné szabályozni a fürtöt.
  • Service Fabric egy másik alternatív tárolóvezénylési tároló, amely helyettesítheti az AKS-t.

Megfontolandó szempontok

Rendelkezésre állás

Az alkalmazás teljesítményének figyelése és a problémákról való jelentés készítése érdekében ez a forgatókönyv Azure Monitor a Grafanával a vizualizációs irányítópultokhoz. Ezek az eszközök lehetővé teszik a kódfrissítést igénylő teljesítményproblémák monitorozását és elhárítását, amelyek aztán üzembe helyezhetők a CI/CD-folyamat használatával.

Az Azure Kubernetes Service részeként a terheléselosztás elosztja az alkalmazás forgalmát egy vagy több olyan tárolóra (podra), amely az alkalmazást futtatja. Ez a tárolóba integrált alkalmazások Kubernetesben való futtatásának ez a megközelítése magas rendelkezésre álló infrastruktúrát biztosít az ügyfelek számára.

Méretezhetőség

Azure Kubernetes Service az alkalmazások igényeinek megfelelően skálázhatja a fürtcsomópontok számát. Az alkalmazás növekedésével horizontálisan felskálaszthatja a szolgáltatást futtató Kubernetes-csomópontok számát.

Az alkalmazásadatokat egy globálisan Azure Cosmos DB, többmodelles adatbázis tárolja, amely globálisan skálázható. Cosmos DB az infrastruktúra hagyományos adatbázis-összetevőkkel való méretezésének igényét, és dönthet úgy, hogy globálisan replikálja a Cosmos DB, hogy megfeleljen az ügyfelek igényeinek.

Más skálázhatósági témakörökért tekintse meg a teljesítményhatékonysági ellenőrzőlistát a Azure Architecture Center.

Biztonság

A támadási hely minimalizálása érdekében ez a forgatókönyv nem teszi elérhetővé a Jenkins virtuálisgép-példányt HTTP-protokollon keresztül. A Jenkinsszel való interakciót igénylő felügyeleti feladatokhoz biztonságos távoli kapcsolatot kell létrehoznia egy SSH-alagúttal a helyi gépről. A Jenkins és a Grafana virtuálisgép-példányokhoz csak a nyilvános SSH-kulcsos hitelesítés engedélyezett. A jelszóalapú bejelentkezések le vannak tiltva. További információ: Jenkins-kiszolgáló futtatása az Azure-ban.

A hitelesítő adatok és engedélyek elkülönítéséhez ez a forgatókönyv dedikált Azure Active Directory (AD) szolgáltatásnévvel. A szolgáltatásnév hitelesítő adatait a rendszer biztonságos hitelesítő objektumként tárolja a Jenkinsben, így azok nem lesznek közvetlenül elérhetőek és láthatók a szkriptekben vagy a build folyamatban.

A biztonságos megoldások tervezésével kapcsolatos általános útmutatásért tekintse meg az Azure Security dokumentációját.

Rugalmasság

Ez a forgatókönyv Azure Kubernetes Service az alkalmazáshoz. A Kubernetesbe épített rugalmassági összetevők a tárolók (podok) monitorozó és újraindítható összetevői, ha probléma van. Több Kubernetes-csomópont futtatásával kombinálva az alkalmazás tűrheti, hogy egy pod vagy csomópont nem érhető el.

A rugalmas megoldások tervezésére vonatkozó általános útmutatásért lásd: Megbízható Azure-alkalmazások tervezése.

A forgatókönyv üzembe helyezése

Előfeltételek

  • Meglévő Azure-fiókkal kell lennie. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

  • Szüksége lesz egy nyilvános SSH-kulcspárra. A nyilvános kulcspárok létrehozásához szükséges lépésekért lásd: SSH-kulcspár létrehozása és használata Linux rendszerű virtuális gépekhez.

  • A szolgáltatás és Azure Active Directory (AD) szolgáltatásnévre van szüksége. Szükség esetén létrehozhat egy szolgáltatásnév az az ad sp create-for-rbac segítségével

    az ad sp create-for-rbac --name myDevOpsScenario
    

    Jegyezze fel az appId-t és a jelszót a parancs kimenetében. Ezeket az értékeket a forgatókönyv üzembe helyezésekor adja meg a sablonnak.

  • Keresse meg az üzemelő példány régiójához támogatott Kubernetes-verziókat az az aks get-versions futtatásával. A következő parancs lekérte a parancssori felület alapértelmezett verzióját:

    az aks get-versions -l <region> --query "orchestrators[?default!=null].orchestratorVersion" -o tsv
    

Séta

Ha ezt a forgatókönyvet egy Azure Resource Manager sablonnal telepíti, hajtsa végre a következő lépéseket.

  1. A megoldás üzembe helyezéséhez kattintson az alábbi hivatkozásra.

    Üzembe helyezés az Azure-ban

  2. Várja meg, amíg megnyílik a sablon üzembe helyezése a Azure Portal, majd kövesse az alábbi lépéseket:

    • Válassza az Új erőforráscsoport létrehozása lehetőséget, majd a szövegmezőben adja meg a myAKSDevOpsScenario nevet.
    • Válasszon ki egy régiót a Hely legördülő listában.
    • Adja meg a szolgáltatásnév alkalmazásazonosítóját és jelszavát a az ad sp create-for-rbac parancsban.
    • Adjon meg egy felhasználónevet és egy biztonságos jelszót a Jenkins-példányhoz és a Grafana-konzolhoz.
    • Adjon meg egy SSH-kulcsot a Linux rendszerű virtuális gépekre való bejelentkezések biztonságossá történő bejelentkezéskor.
    • Írja be a Kubernetes-verziót a az aks get-versions parancsból.
    • Tekintse át a használati feltételeket, majd ellenőrizze, hogy elfogadom-e a fenti feltételeket.
    • Válassza a Vásárlás gombot.

Az üzembe helyezés 15–20 percet is igénybe vehet.

Díjszabás

A forgatókönyv futtatásának költségeinek feltárása érdekében az összes szolgáltatás előre konfigurálva van a költségkalkulátorban. Ha szeretné látni, hogyan változna a díjszabás az adott esetben, módosítsa a megfelelő változókat a várt forgalomnak megfelelően.

Három költségprofil-mintát biztosítunk a tárolni és Kubernetes-csomópontok száma alapján az alkalmazások futtatásához.

  • Kicsi:ez a díjszabási példa havonta 1000 tároló buildet mutat be.
  • Közepes:ez a díjszabási példa havonta 100 000 tároló buildet mutat be.
  • Nagy méretű:ez a díjszabási példa havonta 1 000 000 tároló buildre mutat.

Ez a forgatókönyv Azure Container Registry és Azure Kubernetes Service tárolóalapú alkalmazások tárolására és futtatására használt. Azure Container Instances tárolóalapú alkalmazások futtatására is használható anélkül, hogy vezénylési összetevőket kellene kiépítenünk. További információkért lásd a Azure Container Instances áttekintését.