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:
- Alkalmazza a legújabb frissítéseket a fürt összes csomópontjára.
- 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).
- Újraindítja a csomópontokat.
- 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.
Nyissa meg az adattárat a GitHubon.
Válassza a Műveletek gombot.
Válassza az Új munkafolyamat>– Munkafolyamat beállítása saját maga lehetőséget.
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 * *'
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
A Keresés a Marketplace for Actions sávon keresse meg az Azure Logint.
Válassza az Azure Login lehetőséget.
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.
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
Ú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" }
Másolja ki a kimenetet, és keresse meg a GitHub-adattárat.
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.
A Név mezőbe írja be a következőt
AZURE_CREDENTIALS
:Titkos kód esetén másolja be a szolgáltatásnév létrehozásakor kapott kimenet tartalmát.
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
Lépjen az ablakra a YAML munkafolyamattal.
A Keresés a Marketplace for Actions sávon keresse meg az Azure CLI-műveletet.
Válassza az Azure CLI-művelet lehetőséget.
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.
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ébenAZURE_CREDENTIALS
tette.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}}
Nevezze át a YAML-et a következőre
upgrade-node-images.yml
: .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 aon
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.
Azure Kubernetes Service