Tárolók létrehozása, tesztelése és üzembe helyezése Azure Kubernetes Service (AKS) számára a GitHub Actions használatával

GitHub Actions rugalmasan hozhat létre automatizált szoftverfejlesztési életciklus-munkafolyamatokat. Több Kubernetes-műveletet is használhat a tárolókban való üzembe helyezéshez Azure Container Registry (ACR) és Azure Kubernetes Service (AKS) között GitHub Actions.

Előfeltételek

GitHub Actions az AKS-hez

A GiHub Actions segítségével automatizálhatja a szoftverfejlesztési munkafolyamatokat a GitHubon belül. További információ: GitHub Actions az Azure-hoz.

Az alábbi táblázat az AKS-hez elérhető műveleteket sorolja fel:

Név Leírás További részletek
azure/aks-set-context Állítsa be a cél AKS-fürtkörnyezetet, hogy más műveletek kubectl-parancsokat használjanak vagy futtassanak. azure/aks-set-context
azure/k8s-set-context Állítsa be a cél Kubernetes-fürtkörnyezetet, hogy a többi művelet kubectl-parancsokat használjon vagy futtasson. azure/k8s-set-context
azure/k8s-bake A Helm, a kustomize vagy a kompose használatával történő üzembe helyezéshez használandó jegyzékfájlt sütheti. azure/k8s-bake
azure/k8s-create-secret Hozzon létre egy általános titkos kulcsot vagy docker-registry titkos kulcsot a Kubernetes-fürtben. azure/k8s-create-secret
azure/k8s-deploy Jegyzékfájlokat helyezhet üzembe Kubernetes-fürtökön. azure/k8s-deploy
azure/k8s-lint A jegyzékfájlok ellenőrzése/lintálása. azure/k8s-lint
azure/setup-helm Telepítse a Helm bináris egy adott verzióját a futóra. azure/setup-helm
azure/setup-kubectl Telepítse a kubectl egy adott verzióját a futóra. azure/setup-kubectl
azure/k8s-artifact-substitute Frissítse a tárolórendszerképek címkéjét vagy kivonatát. azure/k8s-artifact-substitute
azure/aks-create-action Hozzon létre egy AKS-fürtöt a Terraform használatával. azure/aks-create-action
azure/aks-github-runner Saját üzemeltetésű ügynökök beállítása GitHub Actions. azure/aks-github-runner
azure/acr-build Tárolók létrehozása az ACR használatával. azure/acr-build

A GitHub Actions használata az AKS-sel

Például a GitHub Actions használatával üzembe helyezhet egy alkalmazást az AKS-fürtön minden alkalommal, amikor módosítást küld a GitHub-adattárba. Ez a példa az Azure Vote alkalmazást használja.

Megjegyzés

Ez a példa egy szolgáltatásnevet használ az ACR- és AKS-fürttel való hitelesítéshez. Másik lehetőségként konfigurálhatja az Open ID Connectet (OIDC), és frissítheti a műveletet az azure/login OIDC használatára. További információ: Azure Login beállítása OpenID Connect-hitelesítéssel.

Elágazás és az adattár frissítése

  1. Nyissa meg az Azure Vote-adattárat , és válassza az Elágazás lehetőséget.

  2. Frissítse a parancsot azure-vote-all-in-one-redis.yaml , hogy az ACR-t használja a azure-vote-front rendszerképhez. Cserélje le a <registryName> elemet a tárolójegyzék nevére.

    ...
          containers:
          - name: azure-vote-front
            image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
    ...
    
  3. Véglegesítse a frissítettet azure-vote-all-in-one-redis.yaml az adattárban.

Titkos kulcsok létrehozása

  1. Hozzon létre egy szolgáltatásnevet az erőforráscsoport eléréséhez a szerepkörrel a Contributoraz ad sp create-for-rbac paranccsal. Cserélje le <SUBSCRIPTION_ID> a elemet az Azure-fiók előfizetés-azonosítójára és <RESOURCE_GROUP> az ACR-t tartalmazó erőforráscsoport nevére.

    az ad sp create-for-rbac \
        --name "ghActionAzureVote" \
        --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
        --role Contributor \
        --json-auth
    

    A kimenetnek az alábbi példakimenethez hasonlóan kell kinéznie:

    {
      "clientId": <clientId>,
      "clientSecret": <clientSecret>,
      "subscriptionId": <subscriptionId>,
      "tenantId": <tenantId>,
      ...
    }
    
  2. Lépjen a GitHub-adattár beállításaihoz, és válassza a Biztonsági>titkos kódok és változók>Műveletek lehetőséget.

  3. Minden titkos kódhoz válassza az Új adattár titkos kódja lehetőséget, és adja meg a titkos kód nevét és értékét.

    Titkos név Titkos kód értéke
    AZURE_CREDENTIALS A parancs teljes JSON-kimenete az ad sp create-for-rbac .
    service_principal A értéke <clientId>.
    service_principal_password A értéke <clientSecret>.
    előfizetést A értéke <subscriptionId>.
    Bérlő A értéke <tenantId>.
    registry A beállításjegyzék neve.
    repository azuredocs
    resource_group Az erőforráscsoport neve.
    cluster_name A fürt neve.

További információ a titkos kódok létrehozásáról: Titkosított titkos kódok.

Műveletfájl létrehozása

  1. Az adattárban hozzon létre egy .github/workflows/main.yml elemet, és illessze be a következő tartalmat:

    name: build_deploy_aks
    on:
      push:
        paths:
          - "azure-vote/**"
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source code 
            uses: actions/checkout@v3
          - name: ACR build
            id: build-push-acr
            uses: azure/acr-build@v1
            with:
              service_principal: ${{ secrets.service_principal }}
              service_principal_password: ${{ secrets.service_principal_password }}
              tenant: ${{ secrets.tenant }}
              registry: ${{ secrets.registry }}
              repository: ${{ secrets.repository }}
              image:  azure-vote-front
              folder: azure-vote
              branch: master
              tag: ${{ github.sha }}
          - name: Azure login
            id: login
            uses: azure/login@v1.4.3
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
          - name: Set AKS context
            id: set-context
            uses: azure/aks-set-context@v3
            with:
              resource-group: '${{ secrets.resource_group }}' 
              cluster-name: '${{ secrets.cluster_name }}'
          - name: Setup kubectl
            id: install-kubectl
            uses: azure/setup-kubectl@v3
          - name: Deploy to AKS
            id: deploy-aks
            uses: Azure/k8s-deploy@v4
            with:
              namespace: 'default'
              manifests: |
                 azure-vote-all-in-one-redis.yaml
              images: '${{ secrets.registry }}.azurecr.io/${{ secrets.repository }}/azure-vote-front:${{ github.sha }}'
              pull-images: false 
    

    A on szakasz a műveletet kiváltó eseményt tartalmazza. A példafájlban a művelet akkor aktiválódik, amikor a rendszer módosítást küld a azure-vote könyvtárba.

    A steps szakasz minden egyes különböző műveletet tartalmaz:

    1. A kivétel forráskódja a GitHub Actions Kivétel művelettel klónozza az adattárat.
    2. Az ACR build a Azure Container Registry Build Action használatával hozza létre és töltse fel a rendszerképet a regisztrációs adatbázisba.
    3. Az Azure-bejelentkezés az Azure Bejelentkezési művelet használatával jelentkezik be az Azure-fiókjába.
    4. Az AKS-környezet beállítása az Azure AKS Környezeti művelettel állítja be az AKS-fürt környezetét.
    5. A kubectl beállítása az Azure AKS Setup Kubectl Action használatával telepíti a kubectl-t a futóra.
    6. Az Üzembe helyezés az AKS-ben az Azure Kubernetes Deploy Action használatával helyezi üzembe az alkalmazást a Kubernetes-fürtön.
  2. Véglegesítse a .github/workflows/main.yml fájlt az adattárban.

  3. A művelet működésének ellenőrzéséhez frissítse a azure-vote/azure-vote/config_file.cfg következő tartalommal:

    # UI Configurations
    TITLE = 'Azure Voting App'
    VOTE1VALUE = 'Fish'
    VOTE2VALUE = 'Dogs'
    SHOWHOST = 'false'
    
  4. Véglegesítse a frissítettet azure-vote/azure-vote/config_file.cfg az adattárban.

  5. Az adattárban válassza a Műveletek lehetőséget, és ellenőrizze, hogy fut-e munkafolyamat. Ezután ellenőrizze, hogy a munkafolyamat zöld pipával rendelkezik-e, és hogy a frissített alkalmazás telepítve van-e a fürtön.

Következő lépések

Tekintse át az AKS következő kezdő munkafolyamatait. További információ: Kezdő munkafolyamatok használata.