(ELAVULT) Teljes CI/CD-folyamat többtárolós alkalmazás üzembe helyezéséhez az Azure Container Service-ben a Docker Swarm használatával az Azure DevOps Services használatával

Figyelmeztetés

Az Azure Container Service (ACS) elavult. A rendszer nem ad hozzá új funkciókat vagy funkciókat az ACS-hez. Az api-k, a portálélmény, a parancssori felület parancsai és a dokumentáció elavultként vannak megjelölve.

További információ: Az Azure Container Service elavulással kapcsolatos bejelentése Azure.com.

Javasoljuk, hogy telepítse az alábbi Azure Marketplace megoldások egyikét:

Ha a Kubernetes-t szeretné használni, tekintse meg a Azure Kubernetes Service című témakört.

A felhőhöz készült modern alkalmazások fejlesztésének egyik legnagyobb kihívása, hogy ezeket az alkalmazásokat folyamatosan el tudja szállítani. Ebből a cikkből megtudhatja, hogyan valósíthat meg teljes körű folyamatos integrációs és üzembehelyezési (CI/CD) folyamatot az Azure Container Service és a Docker Swarm, a Azure Container Registry és az Azure Pipelines kezelésével.

MyShop mintaalkalmazás

A cél, hogy ezt az alkalmazást folyamatosan egy Docker Swarm-fürtön, az Azure DevOps Services használatával kézbesítse. Az alábbi ábra ezt a folyamatos kézbesítési folyamatot részletezi:

MyShop mintaalkalmazás

Íme egy rövid magyarázat a lépésekről:

  1. A kódmódosítások véglegesítve vannak a forráskódtárban (itt: GitHub)
  2. A GitHub létrehoz egy buildet az Azure DevOps Servicesben
  3. Az Azure DevOps Services lekéri a források legújabb verzióját, és létrehozza az alkalmazást alkotó összes lemezképet
  4. Az Azure DevOps Services leküldi az egyes lemezképeket a Azure Container Registry szolgáltatással létrehozott Docker-beállításjegyzékbe
  5. Az Azure DevOps Services új kiadást indít el
  6. A kiadás SSH használatával futtat néhány parancsot az Azure Container Service-fürt főcsomópontján
  7. A Fürtön található Docker Swarm lekéri a rendszerképek legújabb verzióját
  8. Az alkalmazás új verziója a Docker Compose használatával van üzembe helyezve

Előfeltételek

Az oktatóanyag megkezdése előtt el kell végeznie a következő feladatokat:

Megjegyzés

Az Azure Container Service Docker Swarm-vezénylője örökölt önálló Swarmot használ. Az integrált Swarm mód (a Docker 1.12-es és újabb verzióiban) jelenleg nem támogatott vezénylő az Azure Container Service-ben. Ha üzembe szeretne helyezni egy Swarm módú fürtöt az Azure-ban, használja a nyílt forráskódú ACS Engine-t, amely egy közösségi hozzájárulással készült gyorssablon, vagy válasszon egy Docker-megoldást az Azure Marketplace-ről.

Szüksége van egy Ubuntu (14.04 vagy 16.04) gépre is, amelyen telepítve van a Docker. Ezt a gépet az Azure DevOps Services használja az Azure Pipelines-folyamatok során. A gép létrehozásának egyik módja a Azure Marketplace elérhető rendszerkép használata.

1. lépés: Az Azure DevOps Services-szervezet konfigurálása

Ebben a szakaszban konfigurálja az Azure DevOps Services-szervezetet.

Azure DevOps Services Linux buildügynök konfigurálása

Ha Docker-rendszerképeket szeretne létrehozni, és le szeretné küldeni ezeket a lemezképeket egy Azure-tárolóregisztrációs adatbázisba egy Azure DevOps Services-buildből, regisztrálnia kell egy Linux-ügynököt. A telepítési lehetőségek a következők:

A Docker Integration Azure DevOps Services-bővítmény telepítése

A Microsoft egy Azure DevOps Services-bővítményt biztosít a Dockerrel való együttműködéshez az Azure Pipelines-folyamatokban. Ez a bővítmény az Azure DevOps Services Marketplace-en érhető el. Kattintson a Telepítés gombra a bővítmény Azure DevOps Services-szervezethez való hozzáadásához:

A Docker-integráció telepítése

A rendszer arra kéri, hogy csatlakozzon az Azure DevOps Services-szervezethez a hitelesítő adataival.

Az Azure DevOps Services és a GitHub csatlakoztatása

Hozzon létre egy kapcsolatot az Azure DevOps Services-projekt és a GitHub-fiókja között.

  1. Az Azure DevOps Services-projektben kattintson a Beállítások ikonra az eszköztáron, és válassza a Szolgáltatások lehetőséget.

    Azure DevOps Services – Külső kapcsolat

  2. A bal oldalon kattintson az Új szolgáltatásvégpont>GitHub elemre.

    Azure DevOps Services – GitHub

  3. Ha engedélyezni szeretné, hogy az Azure DevOps Services együttműködjön a GitHub-fiókjával, kattintson az Engedélyezés gombra, és kövesse a megnyíló ablakban található eljárást.

    Azure DevOps Services – A GitHub engedélyezése

Az Azure DevOps Services csatlakoztatása az Azure Container Registryhez és az Azure Container Service-fürthöz

A CI/CD-folyamatba való bejutás előtt az utolsó lépés a tárolóregisztrációs adatbázis és a Docker Swarm-fürt külső kapcsolatainak konfigurálása az Azure-ban.

  1. Az Azure DevOps Services-projekt Szolgáltatási beállításai között adjon hozzá egy Docker Registry típusú szolgáltatásvégpontot.

  2. A megnyíló előugró ablakban adja meg az Azure-tárolóregisztrációs adatbázis URL-címét és hitelesítő adatait.

    Azure DevOps Services – Docker Registry

  3. A Docker Swarm-fürthöz adjon hozzá egy SSH típusú végpontot. Ezután adja meg a Swarm-fürt SSH-kapcsolati adatait.

    Azure DevOps Services – SSH

Az összes konfiguráció elkészült. A következő lépésekben létrehozza a CI/CD-folyamatot, amely létrehozza és üzembe helyezi az alkalmazást a Docker Swarm-fürtben.

2. lépés: A buildelési folyamat létrehozása

Ebben a lépésben beállít egy buildfolyamatot az Azure DevOps Services-projekthez, és definiálja a tárolórendszerképek buildelési munkafolyamatát

Kezdeti folyamatbeállítás

  1. Buildfolyamat létrehozásához csatlakozzon az Azure DevOps Services-projekthez, és kattintson a Build & Release (Build & Release) elemre.

  2. A Definíciók összeállítása szakaszban kattintson az + Új elemre. Válassza az Üres sablont.

    Azure DevOps – Új buildfolyamat

  3. Konfigurálja az új buildet egy GitHub-adattárforrással, ellenőrizze a folyamatos integrációt, és válassza ki azt az ügynöksort, amelyben regisztrálta a Linux-ügynököt. A létrehozási folyamat létrehozásához kattintson a Létrehozás gombra.

    Azure DevOps Services – Buildfolyamat létrehozása

  4. A Build Definitions (Build-definíciók) lapon először nyissa meg az Adattár lapot, és konfigurálja a buildet úgy, hogy az előfeltételek között létrehozott MyShop-projekt elágazását használja. Győződjön meg arról, hogy az acs-docs értéket választja alapértelmezett ágként.

    Azure DevOps Services – Adattár konfigurációjának összeállítása

  5. Az Eseményindítók lapon konfigurálja úgy a buildet, hogy minden véglegesítés után aktiválódjon. Válassza a Folyamatos integráció és a Batch-módosítások lehetőséget.

    Azure DevOps Services – Eseményindító konfigurálása

A buildelési munkafolyamat definiálása

A következő lépések határozzák meg a buildelési munkafolyamatot. A MyShop alkalmazáshoz öt tárolórendszerképet kell létrehozni. Minden rendszerkép a projektmappákban található Docker-fájl használatával jön létre:

  • ProductsApi
  • Proxy
  • RatingsApi
  • RecommendationsApi
  • ShopFront

Minden lemezképhez két Docker-lépést kell hozzáadnia, egyet a rendszerkép létrehozásához, egyet pedig a rendszerkép azure-tárolóregisztrációs adatbázisba való leküldéséhez.

  1. Ha hozzá szeretne adni egy lépést a buildelési munkafolyamathoz, kattintson a + Buildelési lépés hozzáadása elemre , és válassza a Docker lehetőséget.

    Azure DevOps Services – Buildelési lépések hozzáadása

  2. Minden lemezképhez konfiguráljon egy lépést, amely a docker build parancsot használja.

    Azure DevOps Services – Docker-build

    A buildelési művelethez válassza ki az Azure Container Registryt, a Rendszerkép létrehozása műveletet és az egyes rendszerképeket meghatározó Dockerfile-t. Állítsa be a buildkörnyezetet Dockerfile gyökérkönyvtárként, és adja meg a rendszerkép nevét.

    Az előző képernyőn látható módon indítsa el a rendszerkép nevét az Azure Container Registry URI-jával. (Egy buildváltozóval paraméterezheti a rendszerkép címkéjét, például a példában szereplő buildazonosítót.)

  3. Minden lemezképhez konfiguráljon egy második lépést, amely a docker push parancsot használja.

    Azure DevOps Services – Docker Push

    A leküldéses művelethez válassza ki az Azure Container Registryt, a Rendszerkép leküldése műveletet, és adja meg az előző lépésben létrehozott Rendszerkép nevét .

  4. Miután konfigurálta az öt rendszerkép buildelési és leküldési lépéseit, adjon hozzá két további lépést a buildelési munkafolyamathoz.

    a. Parancssori feladat, amely bash-szkriptet használ a docker-compose.yml fájl BuildNumber előfordulásának lecseréléséhez az aktuális buildazonosítóra. A részletekért tekintse meg az alábbi képernyőt.

    Azure DevOps Services – Levélírási fájl frissítése

    b. Olyan feladat, amely a frissített Compose-fájlt buildösszetevőként elveti, hogy az a kiadásban használható legyen. A részletekért tekintse meg az alábbi képernyőt.

    Azure DevOps Services – Levélírási fájl közzététele

  5. Kattintson a Mentés gombra, és nevezze el a buildfolyamatot.

3. lépés: A kiadási folyamat létrehozása

Az Azure DevOps Services lehetővé teszi a különböző környezetek kiadásainak kezelését. Engedélyezheti a folyamatos üzembe helyezést, hogy az alkalmazás zökkenőmentesen legyen üzembe helyezve a különböző környezetekben (például fejlesztési, tesztelési, éles üzem előtti és éles környezetben). Létrehozhat egy új környezetet, amely az Azure Container Service Docker Swarm-fürtöt képviseli.

Azure DevOps Services – Kiadás az ACS-ben

Kezdeti kiadás beállítása

  1. Kiadási folyamat létrehozásához kattintson a Releases>+ Release (Kiadások+ kiadás) elemre.

  2. Az összetevőforrás konfigurálásához kattintson az Összetevők>Összetevőforrás csatolása elemre. Itt csatolja ezt az új kiadási folyamatot az előző lépésben meghatározott buildhez. Ezzel a docker-compose.yml fájl elérhető a kiadási folyamatban.

    Azure DevOps Services – Összetevők kiadása

  3. A kiadási eseményindító konfigurálásához kattintson az Eseményindítók elemre, és válassza a Folyamatos üzembe helyezés lehetőséget. Állítsa be az eseményindítót ugyanazon az összetevőforráson. Ez a beállítás biztosítja, hogy az új kiadás a build sikeres befejezését követően azonnal elinduljon.

    Azure DevOps Services – Kiadási triggerek

A kiadási munkafolyamat definiálása

A kiadási munkafolyamat két hozzáadott feladatból áll.

  1. Konfiguráljon egy feladatot a levélírási fájl biztonságos másolásához a Docker Swarm főcsomópontjának üzembe helyezési mappájába a korábban konfigurált SSH-kapcsolat használatával. A részletekért tekintse meg az alábbi képernyőt.

    Azure DevOps Services – SCP kiadása

  2. Konfiguráljon egy második feladatot egy bash-parancs végrehajtásához a főcsomóponton való futtatáshoz és docker-compose a parancsok végrehajtásáhozdocker. A részletekért tekintse meg az alábbi képernyőt.

    Azure DevOps Services – Bash-kiadás

    A főkiszolgálón végrehajtott parancs a Docker cli-vel és a Docker-Compose parancssori felülettel hajtja végre a következő feladatokat:

    • Jelentkezzen be az Azure Container Registrybe (a Változók lapon definiált három buildváltozót használ)

    • Határozza meg a DOCKER_HOST változót, hogy működjön a Swarm-végponttal (:2375)

    • Lépjen az előző biztonságos másolási feladat által létrehozott üzembe helyezési mappára, amely tartalmazza a docker-compose.yml fájlt

    • Hajtsa végre docker-compose az új rendszerképeket lekérő parancsokat, állítsa le a szolgáltatásokat, távolítsa el a szolgáltatásokat, és hozza létre a tárolókat.

      Fontos

      Az előző képernyőn látható módon hagyja bejelöletlenül a Sikertelen az STDERR-en jelölőnégyzetet. Ez egy fontos beállítás, mivel docker-compose a szabványos hibakimeneten számos diagnosztikai üzenetet nyomtat ki, például a tárolók leállnak vagy törlődnek. Ha bejelöli a jelölőnégyzetet, az Azure DevOps Services arról számol be, hogy hibák történtek a kiadás során, még akkor is, ha minden jól megy.

  3. Mentse ezt az új kiadási folyamatot.

Megjegyzés

Ez az üzembe helyezés némi állásidőt is tartalmaz, mivel leállítja a régi szolgáltatásokat, és az újat futtatjuk. Ezt a kék-zöld üzembe helyezéssel elkerülheti.

4. lépés: A CI/CD-folyamat tesztelése

Most, hogy végzett a konfigurációval, ideje tesztelni ezt az új CI/CD-folyamatot. A legegyszerűbben úgy tesztelheti, ha frissíti a forráskódot, és véglegesíti a módosításokat a GitHub-adattárban. Néhány másodperccel a kód leküldése után egy új build fog futni az Azure DevOps Servicesben. A sikeres befejezése után egy új kiadás aktiválódik, és üzembe helyezi az alkalmazás új verzióját az Azure Container Service-fürtön.

Következő lépések