Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sicherheitsupdates sind ein wichtiger Bestandteil, um die Sicherheit und Konformität Ihres AKS-Clusters mit den neuesten Korrekturen für das zugrunde liegende Betriebssystem aufrechtzuerhalten. Diese Updates enthalten Sicherheitsfixes für das Betriebssystem oder Kernelupdates. Einige Updates erfordern einen Knotenneustart, um den Vorgang abzuschließen.
In diesem Artikel erfahren Sie, wie Sie den Aktualisierungsprozess von AKS-Knoten mithilfe von GitHub Actions und der Azure CLI automatisieren können, um eine Aktualisierungsaufgabe zu erstellen, die auf cron basiert und automatisch ausgeführt wird.
Hinweis
Sie können Knotenimageupgrades auch automatisch durchführen und diese Upgrades mit geplanter Wartung planen. Weitere Informationen finden Sie unter Automatisches Upgrade von Knotenimages.
Bevor Sie anfangen
- In diesem Artikel wird vorausgesetzt, dass Sie über einen AKS-Cluster verfügen. Wenn Sie einen AKS-Cluster benötigen, erstellen Sie einen mithilfe der Azure CLI, von Azure PowerShell oder des Azure-Portals.
- In diesem Artikel wird außerdem davon ausgegangen, dass Sie über ein GitHub-Konto und ein Profil-Repository verfügen, um Ihre Aktionen zu hosten. Wenn Sie nicht über ein Repository verfügen, erstellen Sie ein Repository mit demselben Namen wie Ihr GitHub-Benutzername.
- Azure CLI-Version 2.0.59 oder höher muss installiert und konfiguriert sein. Führen Sie
az --versionaus, um die Version zu ermitteln. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
Aktualisieren von Knoten mit az aks upgrade
Mit dem az aks upgrade Befehl erhalten Sie eine Null-Ausfallzeit, um Updates anzuwenden. Der Befehl führt die folgenden Aktionen aus:
- Wendet die neuesten Updates auf alle Knoten Ihres Clusters an.
- Sperrt (macht den Knoten für die Planung neuer Workloads nicht verfügbar) und leert (verschiebt die vorhandenen Workloads auf andere Knoten) Datenverkehr auf die Knoten.
- Startet die Knoten neu.
- Ermöglicht es den aktualisierten Knoten, den Datenverkehr erneut zu empfangen.
AKS startet Ihre Knoten nicht automatisch neu, wenn Sie sie mit einer anderen Methode aktualisieren.
Hinweis
Das Ausführen von az aks upgrade mit dem --node-image-only-Flag aktualisiert nur die Knotenbilder. Wenn Sie den Befehl ohne das Flag ausführen, werden sowohl die Knotenimages als auch die Kubernetes-Steuerungsebenenversion aktualisiert. Weitere Informationen finden Sie in den Dokumenten für verwaltete Upgrades auf Knoten und die Dokumente für Clusterupgrades.
Alle Kubernetes-Knoten werden auf einem Windows- oder Linux-basierten virtuellen Azure-Computer (VM) ausgeführt. Die linuxbasierten VMs verwenden ein Ubuntu-Image mit dem Betriebssystem, das für die automatische Überprüfung auf Updates jeden Abend konfiguriert ist.
Wenn Sie den az aks upgrade Befehl verwenden, initiiert die Azure CLI eine Erhöhung an neuen Knoten mit den neuesten Sicherheits- und Kernelupdates. Diese neuen Knoten werden zunächst abgesperrt, um zu verhindern, dass Apps auf ihnen geplant werden, bis das Update abgeschlossen ist. Nach Abschluss des Updates sperrt Azure die älteren Knoten und entlastet sie, während es die neuen entsperrt und alle geplanten Anwendungen auf die neuen Knoten überträgt.
Dieser Vorgang ist besser als das manuelle Aktualisieren von Linux-basierten Kerneln, da Linux einen Neustart erfordert, wenn ein neues Kernelupdate installiert wird. Wenn Sie das Betriebssystem manuell aktualisieren, müssen Sie auch die VM neu starten und alle Anwendungen manuell sperren und ausgleichen.
Erstellen einer zeitlichen GitHub-Aktion
cron ist ein Dienstprogramm, mit dem Sie eine Reihe von Befehlen oder Aufträgen in einem automatisierten Zeitplan ausführen können. Um einen Auftrag zum Aktualisieren Ihrer AKS-Knoten in einem automatisierten Zeitplan zu erstellen, benötigen Sie ein Repository, um Ihre Aktionen zu hosten. GitHub-Aktionen werden in der Regel im selben Repository wie Ihre Anwendung konfiguriert, aber Sie können ein beliebiges Repository verwenden.
Navigieren Sie zu Ihrem Repository auf GitHub.
Wählen Sie Actions aus.
Wählen Sie Neuen Workflow>Workflow selbst einrichten aus.
Erstellen Sie eine GitHub-Aktion namens Upgrade cluster node images mit einem Zeitplantrigger, der alle 15 Tage um 3 Uhr ausgeführt werden soll. Kopieren Sie den folgenden Code in das YAML:Copy the following code into the YAML:
name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *'Erstellen Sie einen Auftrag namens Upgradeknoten, der auf einem Ubuntu-Agent ausgeführt wird und eine Verbindung mit Ihrem Azure CLI-Konto herstellt, um den Knotenupgradebefehl auszuführen. Kopieren Sie den folgenden Code unter dem
onSchlüssel in das YAML:jobs: upgrade-node: runs-on: ubuntu-latest
Einrichten der Azure CLI im Workflow
Suchen Sie in der Such-Marketplace-Leiste für Aktionen nach Azure-Anmeldung.
Wählen Sie Azure-Anmeldung aus.
Wählen Sie unter "Installation" eine Version aus, z. B. v1.4.6, und kopieren Sie den Codeausschnitt der Installation.
Fügen Sie den
stepsSchlüssel und die folgenden Informationen aus dem Codeausschnitt der Installation zum YAML hinzu: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 }}
Erstellen von Anmeldeinformationen für die Azure CLI
Erstellen Sie in einem neuen Browserfenster mithilfe des
az ad sp create-for-rbac-Befehls einen neuen Dienstprinzipal. Stellen Sie sicher, dass Sie*{subscriptionID}*durch Ihre eigene Abonnement-ID ersetzen.Hinweis
In diesem Beispiel wird die
ContributorRolle im Abonnementbereich erstellt. Sie können die Rolle und den Bereich bereitstellen, die Ihren Anforderungen entspricht. Weitere Informationen finden Sie unter den integrierten Azure-Rollen und Azure RBAC-Bereichsebenen.az ad sp create-for-rbac --role Contributor --scopes /subscriptions/{subscriptionID} -o jsonIhre Ausgabe sollte der folgenden Beispielausgabe ähneln:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "xxxxx-xxx-xxxx-xx-xx-xx-xx-xx", "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }Kopieren Sie die Ausgabe, und navigieren Sie zu Ihrem GitHub-Repository.
Wählen Sie "Geheime Einstellungen">und "Variablen>Aktionen>Neuer Repositoryschlüssel" aus.
Geben Sie unter Name
AZURE_CREDENTIALSein.Kopieren Sie für Geheimnis den Inhalt der Ausgabe, die Sie beim Erstellen des Dienstprinzipals erhalten haben.
Wählen Sie "Geheimen Schlüssel hinzufügen" aus.
Erstellen der Schritte zum Ausführen der Azure CLI-Befehle
Navigieren Sie mit dem YaML-Workflow zu Ihrem Fenster.
Suchen Sie in der Such-Marketplace-Leiste für Aktionen nach Azure CLI Action.
Wählen Sie Azure CLI-Aktion aus.
Wählen Sie unter "Installation" eine Version wie v1.0.8 aus, und kopieren Sie den Codeausschnitt der Installation.
Fügen Sie den Inhalt der Aktion in das YAML unterhalb des
*Azure Login*Schritts ein, ähnlich wie im folgenden Beispiel: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 --yesTipp
Sie können die Parameter
--resource-groupund--namevom Befehl entkoppeln, indem Sie neue Repository-Geheimnisse erstellen, wie Sie es fürAZURE_CREDENTIALSgetan haben.Wenn Sie Geheimnisse für diese Parameter erstellen, müssen Sie die
<resourceGroupName>und<aksClusterName>Platzhalter durch ihre geheimen Entsprechungen ersetzen. Beispielsweise${{secrets.RESOURCE_GROUP_NAME}}und${{secrets.AKS_CLUSTER_NAME}}Benennen Sie YAML in
upgrade-node-images.ymlum.Wählen Sie Änderungen bestätigen... aus, fügen Sie eine Commit-Nachricht hinzu, und wählen Sie dann Änderungen bestätigen.
Manuelles Ausführen der GitHub-Aktion
Sie können den Workflow zusätzlich zur geplanten Ausführung manuell ausführen, indem Sie einen neuen on Trigger namens workflow_dispatch hinzufügen.
Hinweis
Wenn Sie einen einzelnen Knotenpool anstelle aller Knotenpools auf dem Cluster aktualisieren möchten, fügen Sie dem Befehl den --nameaz aks nodepool upgrade Parameter hinzu, um den Namen des Knotenpools anzugeben. Beispiel:
az aks nodepool upgrade --resource-group <resourceGroupName> --cluster-name <aksClusterName> --name <nodePoolName> --node-image-only
Fügen Sie den
workflow_dispatchTrigger unter demonSchlüssel hinzu:name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' workflow_dispatch:Das YAML sollte ähnlich wie im folgenden Beispiel aussehen:
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
Nächste Schritte
Weitere Informationen zu AKS-Upgrades finden Sie in den folgenden Artikeln und Ressourcen:
Eine ausführliche Erläuterung zu bewährten Methoden für Upgrades und anderen Überlegungen finden Sie unter AKS Patch- und Upgradeanleitungen.