Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aktualizace zabezpečení jsou klíčovou součástí údržby zabezpečení clusteru AKS a dodržování nejnovějších oprav základního operačního systému. Mezi tyto aktualizace patří opravy zabezpečení operačního systému nebo aktualizace jádra. Některé aktualizace vyžadují restartování uzlu k dokončení procesu.
V tomto článku se dozvíte, jak automatizovat proces aktualizace uzlů AKS pomocí GitHub Actions a Azure CLI a vytvořit úlohu aktualizace na cron základě toho, která se spustí automaticky.
Poznámka:
Upgrady imagí uzlů můžete provádět automaticky a plánovat tyto upgrady pomocí plánované údržby. Další informace viz Automatická aktualizace obrazů uzlů.
Než začnete
- Tento článek předpokládá, že již máte existující AKS cluster. Pokud potřebujete cluster AKS, vytvořte ho pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
- Tento článek také předpokládá, že máte účet GitHub a úložiště profilu pro hostování vašich akcí. Pokud úložiště nemáte, vytvořte si ho se stejným názvem jako uživatelské jméno GitHubu.
- Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.
Aktualizace uzlů pomocí az aks upgrade
Tento az aks upgrade příkaz vám poskytuje způsob, jak aplikovat aktualizace bez výpadku. Příkaz provede následující akce:
- Použije nejnovější aktualizace na všechny uzly clusteru.
- Cordons (znepřístupňuje uzel pro plánování nových úloh) a vyprázdní (přesune existující úlohy do jiného uzlu) provoz do uzlů.
- Restartuje uzly.
- Umožňuje aktualizovaným uzlům znovu přijímat provoz.
AKS automaticky nerestartuje uzly, pokud je aktualizujete jinou metodou.
Poznámka:
Spuštění az aks upgrade s příznakem --node-image-only upgraduje pouze image uzlů. Spuštěním příkazu bez příznaku se aktualizují jak image uzlů, tak i verze řídicí roviny Kubernetes. Další informace najdete v dokumentaci ke spravovaným upgradům na uzlech a dokumentaci pro upgrady clusteru.
Všechny uzly Kubernetes běží na standardním virtuálním počítači Azure s Windows nebo Linuxem. Virtuální počítače založené na Linuxu používají image Ubuntu s operačním systémem nakonfigurovaným tak, aby automaticky kontrolovaly aktualizace každou noc.
Když použijete az aks upgrade příkaz, Azure CLI vytvoří nárůst nových uzlů s nejnovějšími aktualizacemi zabezpečení a jádra. Tyto nové uzly jsou zpočátku oddělené, aby se zabránilo přiřazení žádné aplikace, dokud se aktualizace nedokončí. Po dokončení aktualizace Azure izoluje a odvede starší uzly, odizoluje nové uzly a přenese všechny naplánované aplikace do nových uzlů.
Tento proces je lepší než ruční aktualizace linuxových jader, protože Linux vyžaduje restartování při instalaci nové aktualizace jádra. Pokud operační systém aktualizujete ručně, musíte také restartovat virtuální počítač, ručně izolovat a vypnout všechny aplikace.
Vytvoření akce GitHubu s časovým limitem
cron je nástroj, který umožňuje spustit sadu příkazů nebo úloh v automatizovaném plánu. Pokud chcete vytvořit úlohu pro aktualizaci uzlů AKS podle automatizovaného plánu, potřebujete úložiště pro hostování akcí. GitHub Actions se obvykle konfiguruje ve stejném úložišti jako vaše aplikace, ale můžete použít libovolné úložiště.
Přejděte do úložiště na GitHubu.
Vyberte Akce.
Vyberte Nový pracovní postup>Nastavte pracovní postup sami.
Vytvořte akci GitHubu s názvem Upgradovat image uzlů clusteru s aktivační událostí plánu, která se spustí každých 15 dnů v 3:00. Do YAML zkopírujte následující kód:
name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *'Vytvořte úlohu s názvem upgrade-node , která běží na agentovi Ubuntu, a připojte se k účtu Azure CLI a spusťte příkaz pro upgrade uzlu. Zkopírujte následující kód do YAML pod
onklíčem:jobs: upgrade-node: runs-on: ubuntu-latest
Nastavení Azure CLI v pracovním postupu
Na panelu Hledat na Marketplace pro akce vyhledejte Azure Login.
Vyberte Přihlášení k Azure.
V části Instalace vyberte verzi, například v1.4.6, a zkopírujte fragment kódu instalace.
stepsDo YAML přidejte klíč a následující informace z fragmentu kódu instalace: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 }}
Vytvoření přihlašovacích údajů pro Azure CLI
V novém okně prohlížeče použijte příkaz
az ad sp create-for-rback vytvoření nové služby principal. Nezapomeňte nahradit*{subscriptionID}*vlastním ID předplatného.Poznámka:
Tento příklad vytvoří
Contributorroli na úrovni předplatného. Můžete zadat roli a obor, který vyhovuje vašim potřebám. Další informace najdete v tématu Předdefinované role Azure a úrovně rozsahu Azure RBAC.az ad sp create-for-rbac --role Contributor --scopes /subscriptions/{subscriptionID} -o jsonVýstup by se měl podobat následujícímu příkladu výstupu:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "xxxxx-xxx-xxxx-xx-xx-xx-xx-xx", "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }Zkopírujte výstup a přejděte do úložiště GitHub.
Vyberte Nastavení>tajných kódů a proměnných>Akce>Nový tajný klíč úložiště.
Do pole Název zadejte
AZURE_CREDENTIALS.V případě tajného kódu zkopírujte obsah výstupu, který jste obdrželi při vytváření instančního objektu.
Vyberte Přidat tajný klíč.
Vytvoření kroků pro spuštění příkazů Azure CLI
Přejděte do okna pomocí YAML pracovního postupu.
V panelu Hledat v Marketplace pro akce vyhledat Azure CLI Action.
Vyberte akci Azure CLI.
V části Instalace vyberte verzi, například v1.0.8, a zkopírujte fragment kódu instalace.
Vložte obsah akce do YAML pod krok
*Azure Login*, podobně jako v následujícím příkladu.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 --yesNávod
Můžete oddělit parametry
--resource-groupa--nameod příkazu vytvořením nových tajemství úložiště, jako jste to udělali proAZURE_CREDENTIALS.Pokud pro tyto parametry vytvoříte tajemství, musíte nahradit zástupné symboly
<resourceGroupName>a<aksClusterName>jejich tajnými protějšky. Například${{secrets.RESOURCE_GROUP_NAME}}a${{secrets.AKS_CLUSTER_NAME}}Přejmenujte YAML na
upgrade-node-images.yml.Vyberte Potvrdit změny..., přidejte zprávu potvrzení a pak vyberte Potvrdit změny.
Ruční spuštění akce GitHubu
Kromě naplánovaného spuštění můžete pracovní postup spustit ručně přidáním nové on aktivační události s názvem workflow_dispatch.
Poznámka:
Pokud chcete upgradovat fond s jedním uzlem místo všech fondů uzlů v clusteru, přidejte --name do az aks nodepool upgrade příkazu parametr, který určí název fondu uzlů. Například:
az aks nodepool upgrade --resource-group <resourceGroupName> --cluster-name <aksClusterName> --name <nodePoolName> --node-image-only
Přidejte trigger pod klíč
workflow_dispatchonname: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' workflow_dispatch:YAML by měl vypadat podobně jako v následujícím příkladu:
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
Další kroky
Další informace o upgradech AKS najdete v následujících článcích a zdrojích informací:
Podrobné informace o osvědčených postupech upgradu a dalších aspektech najdete v pokynech k opravám a upgradu AKS.