Gyakorlat – Az üzembehelyezési folyamat létrehozása
Most, hogy létrehozta a Helm-diagramokat, az összes szükséges eszközzel rendelkezik ahhoz, hogy üzembe helyezze az alkalmazást az AKS-ben a GitHub Actions használatával. Ebben a leckében a CI/CD-folyamatot a végső üzembe helyezési lépések végrehajtásával fejezheti be.
Az üzembe helyezés lépései a következők:
- Hozza létre az üzembe helyezési feladatot.
- Open ID Csatlakozás (OIDC) beállítása.
- Telepítse az alkalmazást a Helm használatával.
- Futtassa az üzembe helyezést éles környezetben.
Az üzembe helyezési feladat hozzáadása
A GitHubon lépjen az adattár adattármásolatára.
Bontsa ki a .github/workflows könyvtárat, és nyissa meg a build-staging.yml fájlt szerkesztésre.
Adjon hozzá egy új
deploy
feladatot a fájl végén, a feladat után azbuild_push_image
alábbiak szerint. Ügyeljen arra, hogy megfeleljen a behúzásnak.A feladat három kulcsból áll:
runs-on
,needs
éspermissions
.- A
runs-on
másikubuntu-20.04
feladattal való konzisztensnek kell lennie. - Ehhez
needs
használja az első feladat nevét,build_push_image
így az alkalmazás csak a rendszerkép létrehozása után települ - Ehhez
permissions
adjon hozzá két argumentumot, éscontents
adja hozzá a következőtid-token
: Állítsa beid-token
write
éscontents
állítsa be,read
hogy a GitHub Actions hozzáférést biztosítson a kérések küldéséhez és az adattár tartalmának olvasásához.
- A
Hozzáadás
- uses: actions/checkout@v2
a feladat első lépéseként.A hozzáadott
deploy
feladatnak a következő kódhoz hasonlóan kell kinéznie:deploy: runs-on: ubuntu-20.04 needs: build_push_image permissions: id-token: write contents: read steps: - uses: actions/checkout@v2
A Helm telepítése lépés hozzáadása
GitHub-művelet használatával töltse le és telepítse a Helm-verziót v3.3.1
.
A szerkesztési oldal jobb oldali paneljén keresse meg a Helm-eszköz telepítőt. Válassza ki az Azure által közzétett első eredményt.
A használati YAML másolásához válassza a másolás ikont.
Másolja és illessze be a YAML-et a kulcs alá a
uses
build-staging.yml.Nevezze át a lépést a következőre
Helm tool installer
Install Helm
, és rögzítse a kulcsotv3.3.1
.version
steps: - uses: actions/checkout@v2 - name: Install Helm uses: Azure/setup-helm@v1 with: version: v3.3.1
Az Azure Login hitelesítési lépésének hozzáadása
Az AKS eléréséhez használja az OIDC-t a GitHub Actions hitelesítéséhez.
A jobb oldali panelen keresse meg az Azure-bejelentkezést, és válassza az Azure által közzétett Azure-bejelentkezést.
Válassza a másolás ikont a használati YAML másolásához, majd illessze be a
Install Helm
build-staging.yml lépés alá.Módosítsa a lépés nevét a következőre
Azure Login
Sign in to Azure with OIDC
: .Azure Login
A hitelesítéshez három paraméter szükséges:client-id
,tenant-id
éssubscription-id
. Töltse ki ezeket a paramétereket helyőrzőkkel a később beállított titkos kódokhoz.- name: Sign in to Azure with OIDC uses: Azure/login@v1.5.1 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
A jobb oldali panelen keresse meg a beállított környezetet, és válassza az Azure Által közzétett Azure Kubernetes set context lehetőséget.
Válassza a másolás ikont a használati YAML másolásához, majd illessze be a
Sign in to Azure with OIDC
build-staging.yml lépés alá. Töltse ki aresource-group
korábbi leckében beállított titkos kulcsok helyőrzőit éscluster-name
paramétereit.- name: Azure Kubernetes set context uses: Azure/aks-set-context@v3 with: resource-group: ${{ secrets.RESOURCE_GROUP }} cluster-name: ${{ secrets.CLUSTER_NAME }}
A build-staging.yml fájlnak a következő példához hasonlóan kell kinéznie:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Docker Login uses: docker/login-action@v3.0.0 with: registry: ${{ secrets.ACR_NAME }} username: ${{ secrets.ACR_LOGIN }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push staging images uses: docker/build-push-action@v5.0.0 with: context: . push: true tags: ${{secrets.ACR_NAME}}/contoso-website:latest deploy: runs-on: ubuntu-20.04 needs: build_push_image # Will wait for the execution of the previous job permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout steps: - uses: actions/checkout@v2 - name: Install Helm uses: Azure/setup-helm@v1 with: version: v3.3.1 - name: Sign in to Azure with OIDC uses: Azure/login@v1.5.1 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: Azure Kubernetes set context uses: Azure/aks-set-context@v3 with: resource-group: ${{ secrets.RESOURCE_GROUP }} cluster-name: ${{ secrets.CLUSTER_NAME }}
Open ID Csatlakozás (OIDC) beállítása
Az OIDC-vel való bejelentkezéshez rendeljen értékeket a titkos kódokhoz szolgáltatásnév és tanúsítványok létrehozásával.
A szolgáltatásnév létrehozása
Az Azure Cloud Shellben futtassa
az account show
és mentse azid
értéket a kimenetből.Hozzon létre egy egyszerű szolgáltatást a következő parancs futtatásával, és helyettesítse az
id
előző parancs értékét a következőhöz$SUBSCRIPTION_ID
:az ad sp create-for-rbac --scopes /subscriptions/$SUBSCRIPTION_ID --role Contributor
Másolja ki a JSON-kimenetet, és mentse a következő lépéshez.
A titkos kódok beállítása
A GitHub-adattár lapján válassza a Gépház lapot, majd válassza a Titkos kódok és változók>műveletek lehetőséget a bal oldali menüből. Adja meg az alábbi három új titkos kódot, amelyek az előző lépések kimenetét használják.
AZURE_CLIENT_ID
: A"appId"
kimenetből származóaz ad sp create-for-rbac
értékAZURE_TENANT_ID
: A"tenant"
kimenetből származóaz ad sp create-for-rbac
értékAZURE_SUBSCRIPTION_ID
: Aid
kimenetből származóaz account show
érték
Minden titkos kód esetében:
- Válassza az Új tárház titkos kódját.
- A Név mezőbe írja be a titkos kód nevét.
- A Titkos kód mezőbe írja be az értéket.
- Válassza az Add secret (Titkos kód hozzáadása) lehetőséget.
Összevont hitelesítő adatok hozzáadása
Összevont tanúsítványokat hozhat létre, amelyek engedélyezik a GitHub Actions számára az alkalmazás elérését.
Az Azure Portalon nyissa meg a Alkalmazásregisztrációk.
Keresse meg és jelölje ki azt az alkalmazást, amely megfelel az
displayName
előzőaz ad sp create-for-rbac
lépésben visszaadott értéknek. Alapértelmezés szerint az alkalmazás neve a szolgáltatásnév létrehozásának időbélyegét használja.Ellenőrizze, hogy az appID (ügyfélazonosító), az objektumazonosító (alkalmazásobjektum-azonosító) és a címtárazonosító (bérlőazonosító) értékei megegyeznek-e az előző JSON-kimenettel.
A bal oldali navigációs sávon válassza a Tanúsítványok > titkos kulcsok lehetőséget.
A Tanúsítványok > titkos kódok képernyőn válassza az Összevont hitelesítő adatok lapot.
Válassza a Hitelesítő adatok hozzáadása lehetőséget.
Az átmeneti hitelesítő adatok hozzáadásához a hitelesítő adatok hozzáadása képernyőn válassza ki vagy adja meg a következő adatokat:
- Összevont hitelesítőadat-forgatókönyv: Válassza ki az Azure-erőforrásokat üzembe helyező GitHub Actionst.
- Szervezet: Adja meg a GitHub-felhasználónevet.
- Adattár: Adja meg az mslearn-aks-deployment-pipeline-github-actions parancsot.
- Entitás típusa: Ág kiválasztása.
- GitHub-ág neve: Adja meg a főt.
- Név: Adja meg a staging-cred értéket.
- Leírás : Adja meg a tesztelést.
Válassza a Hozzáadás lehetőséget.
Az éles hitelesítő adatok hozzáadásához válassza ismét a Hitelesítő adatok hozzáadása lehetőséget, majd a Hitelesítő adatok hozzáadása képernyőn adja meg az összes olyan értéket, mint az előző hitelesítő adat esetében, kivéve:
- Entitás típusa: Címke kiválasztása.
- GitHub-címke neve: Adja meg a 2.0.0-s verziót, mert a következő lépésben a 2- es verziót telepíti.
- Név: Adja meg a prod-cred értéket.
Válassza a Hozzáadás lehetőséget.
Az alkalmazás üzembe helyezése a Helmel
Most, hogy konfigurálta a Helmt, és hozzáférést adott a fürthöz, készen áll az alkalmazás üzembe helyezésére.
A Run Helm Deploy lépés hozzáadása
A GitHub build-staging.yml fájljában a feladat legújabb lépése
deploy
után hozzon létre egy új, névvel ellátottRun Helm Deploy
lépést. Alatta adjon hozzá egy másik, úgynevezettrun
kulcsot.- name: Run Helm Deploy run:
A kulccsal bármilyen rendszerhéjparancsot végrehajthat
run
a tárolóban. Ez a folyamat arun
következő Helm-parancs végrehajtásához használja a kulcsot:helm upgrade --install --create-namespace --atomic --wait --namespace staging contoso-website \ ./kubernetes/contoso-website \ --set image.repository=${{ secrets.ACR_NAME }} \ --set dns.name=${{ secrets.DNS_NAME }}
Az egyes paraméterek leírása:
Paraméter Művelet vagy érték helm upgrade
Egy telepített kiadás frissítése. --install
Ha a kiadás nem létezik, telepíti. --create-namespace
Ha a névtér nem létezik a --namespace
jelölőben, hozza létre.--atomic
Ha a kiadás sikertelen, eltávolítja a telepített összes számítási feladatot. --wait
Megvárja, amíg a kiadás befejeződik, és visszaadja az állapotot OK
.--namespace staging contoso-website
Üzembe helyezi a kiadást contoso-website
astaging
névtérben../kubernetes/contoso-website
A diagramkönyvtár helye. --set image.repository
csak ebben a kiadásban Frissítések a values.yaml fájl értékét image.repository
.--set dns.name
csak ehhez a dns.name
kiadáshoz Frissítések a values.yaml fájl kulcsát.Adja hozzá a parancsot a fájlhoz, és állítsa be futtatásra a karakterrel
|
kezdve. ARun Helm deploy
lépésnek egyeznie kell a példával:... - name: Run Helm Deploy run: | helm upgrade \ --install \ --create-namespace \ --atomic \ --wait \ --namespace staging \ contoso-website \ ./kubernetes/contoso-website \ --set image.repository=${{ secrets.ACR_NAME }} \ --set dns.name=${{ secrets.DNS_NAME }}
A kész build-staging.yml fájlnak a következő példához hasonlóan kell kinéznie:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Docker Login uses: docker/login-action@v3.0.0 with: registry: ${{ secrets.ACR_NAME }} username: ${{ secrets.ACR_LOGIN }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push staging images uses: docker/build-push-action@v5.0.0 with: context: . push: true tags: ${{secrets.ACR_NAME}}/contoso-website:latest deploy: runs-on: ubuntu-20.04 needs: build_push_image # Waits for the execution of the previous job permissions: id-token: write # Required for requesting the JWT contents: read # Required for actions/checkout steps: - uses: actions/checkout@v2 - name: Install Helm uses: Azure/setup-helm@v1 with: version: v3.3.1 - name: Sign in to Azure with OIDC uses: Azure/login@v1.5.1 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: Azure Kubernetes set context uses: Azure/aks-set-context@v3 with: resource-group: ${{ secrets.RESOURCE_GROUP }} cluster-name: ${{ secrets.CLUSTER_NAME }} - name: Run Helm Deploy run: | helm upgrade \ --install \ --create-namespace \ --atomic \ --wait \ --namespace staging \ contoso-website \ ./kubernetes/contoso-website \ --set image.repository=${{ secrets.ACR_NAME }} \ --set dns.name=${{ secrets.DNS_NAME }}
A DNS_NAME titkos kód beállítása
Egy új böngészőlapon nyissa meg az adattár elágazását, válassza a Gépház lapot, majd válassza a Titkos kulcsok és változók>műveletek lehetőséget a bal oldali menüben.
Válassza az Új tárház titkos kódját.
A Név mezőbe írja be a következőt
DNS_NAME
:Titkos kód esetén adja meg az AKS DNS-zónanév értékét az eredeti beállítási szkript kimenetéből.
Ha nem rendelkezik ezzel az értékkel, futtassa a következő parancsot a Cloud Shellben, és helyettesítse a következő értékeket
<resource-group-name>
<aks-cluster-name>
:az aks show -g <resource-group-name> -n <aks-cluster-name> -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
Válassza az Add secret (Titkos kód hozzáadása) lehetőséget.
A módosítások véglegesítése és az előkészítési üzembe helyezés tesztelése
A módosítások véglegesítéséhez válassza a Módosítások véglegesítése lehetőséget. Adja meg a véglegesítés leírását, majd válassza a Véglegesítési módosítások lehetőséget.
Válassza a Műveletek lapot a build futtatásának megtekintéséhez.
Miután a build sikeres volt, a böngészőben ellenőrizze
contoso-staging.<aks-dns-zone-name>
, hogy megjelenik-e a webhely.
Az üzembe helyezés futtatása éles környezetben
A következő lépés az éles munkafolyamat létrehozása.
Az adattár .github/workflows könyvtárában nyissa meg a build-production.yml fájlt szerkesztésre.
Másolja ki a feladatot az
deploy
előkészítési folyamatból, és illessze be a build-production.yml fájl utolsó sora alá.Módosítsa a lépést az
Run Helm Deploy
éles névtérben való üzembe helyezéshez, ha a jelölőt a--namespace
következőrestaging
production
módosítja.A Helm parancs végén adjon hozzá egy új paramétert.
--set image.tag=${GITHUB_REF##*/}
Itt egy Paraméterbővítés nevű Bash-funkciót használ. A kiterjesztés
${ENV##<wildcard><character>}
a sztring utolsó előfordulását adja vissza a következő utáncharacter
.Ebben az esetben csak a GitHub Actions-futtatókörnyezetként
GITHUB_REF
megjelenített címkenevet szeretné megkapni. Az ágak arefs/heads/<branch>
következők, míg a címkék.refs/tags/<tag>
El szeretné távolítani
refs/tags/
, hogy csak a címke nevét kapja meg, ezért a környezeti${GITHUB_REF##*/}
változóban az utolsó után kell visszaadnia azGITHUB_REF
adatokat/
.Az utolsó build-production.yml fájlnak a következő példához hasonlóan kell kinéznie:
name: Build and push the tagged build to production permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout on: push: tags: - 'v*' jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Fetch latest version id: fetch_version run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/} - name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Docker Login uses: docker/login-action@v3.0.0 with: registry: ${{ secrets.ACR_NAME }} username: ${{ secrets.ACR_LOGIN }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push production images uses: docker/build-push-action@v2 with: context: . push: true tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }} deploy: runs-on: ubuntu-20.04 needs: build_push_image steps: - uses: actions/checkout@v2 - name: Install Helm uses: Azure/setup-helm@v1 with: version: v3.3.1 - name: Login to Azure with OIDC uses: azure/login@v1 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: Azure Kubernetes set context uses: Azure/aks-set-context@v3 with: resource-group: ${{ secrets.RESOURCE_GROUP }} cluster-name: ${{ secrets.CLUSTER_NAME }} - name: Run Helm Deploy run: | helm upgrade \ --install \ --create-namespace \ --atomic \ --wait \ --namespace production \ contoso-website \ ./kubernetes/contoso-website \ --set image.repository=${{ secrets.ACR_NAME }} \ --set dns.name=${{ secrets.DNS_NAME }} \ --set image.tag=${GITHUB_REF##*/}
A módosítások véglegesítéséhez válassza a Módosítások véglegesítése lehetőséget. Adja meg a véglegesítés leírását, majd válassza a Véglegesítési módosítások lehetőséget.
Éles változások
Az éles munkafolyamat minden futtatásakor frissítenie kell az összevont tanúsítványt a megfelelő címkeverzióval, az alábbiak szerint:
Az Azure Portalon lépjen az alkalmazáslapra, és válassza a Tanúsítványok > titkos kulcsok lehetőséget a bal oldali navigációs sávon.
Válassza az Összevont hitelesítő adatok lapot.
Válassza ki a prod-cred hitelesítő adatokat.
A Hitelesítő adatok szerkesztése képernyőn, a Kijelölés alapján elem mellett növelje a címke számát egy új v.x.x.x-hez, például v.2.0.1-hez.
Válassza a Frissítés lehetőséget.
A Cloud Shellben futtassa
git pull
a legújabb módosítások beolvasását. Ezután futtassa a következő parancsot a módosítások címkézéséhez és leküldéséhez, és helyettesítse az új verziócímkét a helyőrzőhöz:git tag -a v<new version tag> -m 'Create new production deployment' && git push --tags
Amikor a rendszer kéri, adja meg a PAT-t a korábbi gyakorlatokból jelszóként.
A GitHubon nyissa meg a Műveletek lapot, és tekintse meg a futó folyamatot.
Miután a munkafolyamat sikeres volt, tesztelje az éles üzembe helyezést, lépjen
contoso-production.<aks-dns-zone-name>
a böngészőbe, és ellenőrizze, hogy megjelenik-e a webhely.
Folytassa a következő leckét az erőforrások törléséhez, hogy azok ne járjanak tovább díjakkal.