Megosztás a következőn keresztül:


Automatikus biztonsági frissítések alkalmazása az Azure Kubernetes Service -csomópontokra a GitHub Actions használatával

A biztonsági frissítések kulcsfontosságú részét képezik az AKS-fürt biztonságának és az alapul szolgáló operációs rendszer legújabb javításainak való megfelelésnek. Ezek a frissítések közé tartoznak az operációs rendszer biztonsági javításai vagy a kernelfrissítések. Egyes frissítésekhez a csomópont újraindítása szükséges a folyamat befejezéséhez.

Ez a cikk bemutatja, hogyan automatizálhatja az AKS-csomópontok frissítési folyamatát a GitHub Actions és az Azure CLI használatával egy automatikusan futó frissítési feladat cron létrehozásához.

Feljegyzés

A csomópontrendszerképek automatikus frissítéseit is végrehajthatja, és tervezett karbantartással ütemezheti ezeket a frissítéseket. További információ: Csomópontrendszerképek automatikus frissítése.

Mielőtt elkezdené

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, hozzon létre egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Ez a cikk azt is feltételezi, hogy rendelkezik egy GitHub-fiókkal és egy profiladattárral a műveletek üzemeltetéséhez. Ha nem rendelkezik adattárral, hozzon létre egyet ugyanazzal a névvel, mint a GitHub-felhasználónevét.
  • Telepítenie és konfigurálnia kell az Azure CLI 2.0.59-es vagy újabb verzióját. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Csomópontok frissítése az aks upgrade

A az aks upgrade parancs nulla állásidőt biztosít a frissítések alkalmazásához. A parancs a következő műveleteket hajtja végre:

  1. Alkalmazza a legújabb frissítéseket a fürt összes csomópontjára.
  2. A kordonok (az új számítási feladatok ütemezéséhez elérhetetlenné teszik a csomópontot) és a csomópontokra üríti (áthelyezi a meglévő számítási feladatokat más csomópontokra).
  3. Újraindítja a csomópontokat.
  4. Lehetővé teszi, hogy a frissített csomópontok ismét fogadják a forgalmat.

Az AKS nem indítja újra automatikusan a csomópontokat, ha más módszerrel frissíti őket.

Feljegyzés

A jelzővel való futtatás az aks upgrade --node-image-only csak a csomópont lemezképeit frissíti. A jelölő nélküli parancs futtatása a csomópont lemezképeit és a Kubernetes vezérlősíkjának verzióját is frissíti. További információ: a csomópontok felügyelt frissítéseinek dokumentációja és a fürtfrissítések dokumentációja.

Minden Kubernetes-csomópont szabványos Windows- vagy Linux-alapú Azure-beli virtuális gépen fut. A Linux-alapú virtuális gépek egy Ubuntu rendszerképet használnak, amelyen az operációs rendszer úgy van konfigurálva, hogy minden este automatikusan ellenőrizze a frissítéseket.

A parancs használatakor az az aks upgrade Azure CLI új csomópontokat hoz létre a legújabb biztonsági és kernelfrissítésekkel. Ezek az új csomópontok kezdetben kordonnal vannak elzárva, hogy az alkalmazások a frissítés befejezéséig ne legyenek ütemezve hozzájuk. A frissítés befejeződése után az Azure kordonokat ad a régebbi csomópontoknak, és nem rendezi az újakat, és az összes ütemezett alkalmazást átküldi az új csomópontokra.

Ez a folyamat jobb, mint a Linux-alapú kernelek manuális frissítése, mivel a Linux újraindítást igényel egy új kernelfrissítés telepítésekor. Ha manuálisan frissíti az operációs rendszert, újra kell indítania a virtuális gépet, manuálisan kell kordonolnia és kiürítenie az összes alkalmazást.

Időzített GitHub-művelet létrehozása

cron Egy segédprogram, amely lehetővé teszi, hogy parancsokat vagy feladatokat futtasson automatizált ütemezés szerint. Ahhoz, hogy az AKS-csomópontokat automatizált ütemezés szerint frissíthesse, egy adattárra van szüksége a műveletek üzemeltetéséhez. A GitHub Actions általában ugyanabban az adattárban van konfigurálva, mint az alkalmazás, de bármilyen adattárat használhat.

  1. Nyissa meg az adattárat a GitHubon.

  2. Válassza a Műveletek gombot.

  3. Válassza az Új munkafolyamat>– Munkafolyamat beállítása saját maga lehetőséget.

  4. Hozzon létre egy GitHub-műveletet a fürtcsomópont lemezképének frissítése nevű ütemezési eseményindítóval, amely 15 naponta, hajnali 3-kor fog futni. Másolja a következő kódot a YAML-be:

    name: Upgrade cluster node images
    on:
      schedule:
        - cron: '0 3 */15 * *'
    
  5. Hozzon létre egy upgrade-node nevű feladatot, amely egy Ubuntu-ügynökön fut, és csatlakozik az Azure CLI-fiókhoz a csomópontfrissítési parancs végrehajtásához. Másolja a következő kódot a YAML-be a on kulcs alatt:

    jobs:
      upgrade-node:
        runs-on: ubuntu-latest
    

Az Azure CLI beállítása a munkafolyamatban

  1. A Keresés a Marketplace for Actions sávon keresse meg az Azure Logint.

  2. Válassza az Azure Login lehetőséget.

    A keresési eredmények két sort mutatnak, az első művelet neve

  3. A Telepítés területen válasszon ki egy verziót (például 1.4.6-os verziót), és másolja ki a telepítési kódrészletet.

  4. Adja hozzá a steps kulcsot és a következő információkat a telepítési kódrészletből a YAML-hez:

    name: Upgrade cluster node images
    on:
      schedule:
        - cron: '0 3 */15 * *'
    jobs:
      upgrade-node:
        runs-on: ubuntu-latest
        steps:
          - name: Azure Login
            uses: Azure/login@v1.4.6
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    

Hitelesítő adatok létrehozása az Azure CLI-hez

  1. Új böngészőablakban hozzon létre egy új szolgáltatásnevet a az ad sp create-for-rbac parancs használatával. Győződjön meg arról, hogy lecseréli *{subscriptionID}* a saját előfizetés-azonosítóját.

    Feljegyzés

    Ez a példa létrehozza a szerepkört Contributor az Előfizetés hatókörében. Megadhatja az igényeinek megfelelő szerepkört és hatókört. További információ: Azure beépített szerepkörök és Azure RBAC-hatókörszintek.

    az ad sp create-for-rbac --role Contributor --scopes /subscriptions/{subscriptionID} -o json
    

    A kimenetnek hasonlónak kell lennie a következő példakimenethez:

    {
      "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": "xxxxx-xxx-xxxx-xx-xx-xx-xx-xx",
      "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  2. Másolja ki a kimenetet, és keresse meg a GitHub-adattárat.

  3. Válassza a Beállítások titkos>kulcsok és változók>Műveletek>Új tárház titkos kódja lehetőséget.

  4. A Név mezőbe írja be a következőtAZURE_CREDENTIALS:

  5. Titkos kód esetén másolja be a szolgáltatásnév létrehozásakor kapott kimenet tartalmát.

  6. Válassza a Titkos kód hozzáadása lehetőséget.

Az Azure CLI-parancsok végrehajtásának lépéseinek létrehozása

  1. Lépjen az ablakra a YAML munkafolyamattal.

  2. A Keresés a Marketplace for Actions sávon keresse meg az Azure CLI-műveletet.

  3. Válassza az Azure CLI-művelet lehetőséget.

    Az

  4. A Telepítés területen válasszon ki egy verziót (például 1.0.8-as verziót), és másolja ki a telepítési kódrészletet.

  5. Illessze be a művelet tartalmát a lépés alatti *Azure Login* YAML-be az alábbi példához hasonlóan:

    name: Upgrade cluster node images
    on:
      schedule:
        - cron: '0 3 */15 * *'
    jobs:
      upgrade-node:
        runs-on: ubuntu-latest
        steps:
          - name: Azure Login
            uses: Azure/login@v1.4.6
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
          - name: Upgrade node images
            uses: Azure/cli@v1.0.8
            with:
              inlineScript: az aks upgrade --resource-group <resourceGroupName> --name <aksClusterName> --node-image-only --yes
    

    Tipp.

    A parancstól az új adattár titkos kulcsainak létrehozásával leválaszthatja a --resource-group --name paramétereket a parancsról, ahogyan azt a parancs esetében AZURE_CREDENTIALStette.

    Ha titkos kulcsokat hoz létre ezekhez a paraméterekhez, a <resourceGroupName> helyőrzőket a <aksClusterName> titkos megfelelőikre kell cserélnie. Például és ${{secrets.RESOURCE_GROUP_NAME}}${{secrets.AKS_CLUSTER_NAME}}

  6. Nevezze át a YAML-et a következőre upgrade-node-images.yml: .

  7. Válassza a Módosítások véglegesítése... lehetőséget, adjon hozzá egy véglegesítési üzenetet, majd válassza a Módosítások véglegesítése lehetőséget.

A GitHub-művelet manuális futtatása

Az ütemezett futtatás mellett manuálisan is futtathatja a munkafolyamatot egy új on , úgynevezett trigger hozzáadásával workflow_dispatch.

Feljegyzés

Ha a fürt összes csomópontkészlete helyett egyetlen csomópontkészletet szeretne frissíteni, adja hozzá a --name paramétert a az aks nodepool upgrade parancshoz a csomópontkészlet nevének megadásához. Példa:

az aks nodepool upgrade --resource-group <resourceGroupName> --cluster-name <aksClusterName> --name <nodePoolName> --node-image-only
  • Adja hozzá az workflow_dispatch eseményindítót a on kulcs alatt:

    name: Upgrade cluster node images
    on:
      schedule:
        - cron: '0 3 */15 * *'
      workflow_dispatch:
    

    A YAML-nek a következő példához hasonlóan kell kinéznie:

        name: Upgrade cluster node images
        on:
          schedule:
            - cron: '0 3 */15 * *'
          workflow_dispatch:
        jobs:
          upgrade-node:
            runs-on: ubuntu-latest
            steps:
              - name: Azure Login
                uses: Azure/login@v1.4.6
                with:
                  creds: ${{ secrets.AZURE_CREDENTIALS }}
              - name: Upgrade node images
                uses: Azure/cli@v1.0.8
                with:
                  inlineScript: az aks upgrade -g {resourceGroupName} -n {aksClusterName} --node-image-only --yes
              # Code for upgrading one or more node pools
    

Következő lépések

Az AKS frissítéseiről az alábbi cikkekben és forrásokban talál további információt:

A frissítési ajánlott eljárások és egyéb szempontok részletes ismertetését az AKS-javítás és a frissítési útmutató ismerteti.