(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:
- Mesosphere DC/OS
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.
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:
Íme egy rövid magyarázat a lépésekről:
- A kódmódosítások véglegesítve vannak a forráskódtárban (itt: GitHub)
- A GitHub létrehoz egy buildet az Azure DevOps Servicesben
- Az Azure DevOps Services lekéri a források legújabb verzióját, és létrehozza az alkalmazást alkotó összes lemezképet
- 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
- Az Azure DevOps Services új kiadást indít el
- A kiadás SSH használatával futtat néhány parancsot az Azure Container Service-fürt főcsomópontján
- A Fürtön található Docker Swarm lekéri a rendszerképek legújabb verzióját
- 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:
- Swarm-fürt létrehozása az Azure tárolószolgáltatásban
- Csatlakozás a Swarm-fürthöz az Azure tárolószolgáltatásban
- Azure-tárolóregisztrációs adatbázis létrehozása
- Azure DevOps Services-szervezet és -projekt létrehozása
- A GitHub-adattár elágazása a GitHub-fiókhoz
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 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.
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.
A bal oldalon kattintson az Új szolgáltatásvégpont>GitHub elemre.
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.
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.
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.
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.
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.
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
Buildfolyamat létrehozásához csatlakozzon az Azure DevOps Services-projekthez, és kattintson a Build & Release (Build & Release) elemre.
A Definíciók összeállítása szakaszban kattintson az + Új elemre. Válassza az Üres sablont.
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.
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.
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.
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.
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.
Minden lemezképhez konfiguráljon egy lépést, amely a
docker build
parancsot használja.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.)
Minden lemezképhez konfiguráljon egy második lépést, amely a
docker push
parancsot használja.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 .
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.
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.
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.
Kezdeti kiadás beállítása
Kiadási folyamat létrehozásához kattintson a Releases>+ Release (Kiadások+ kiadás) elemre.
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.
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.
A kiadási munkafolyamat definiálása
A kiadási munkafolyamat két hozzáadott feladatból áll.
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.
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.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.
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
- Az Azure DevOps Services ci/CD-jével kapcsolatos további információkért tekintse meg az Azure Pipelines dokumentációját ismertető cikket.