Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aktualizacje zabezpieczeń są kluczowym elementem utrzymania zabezpieczeń i zgodności klastra usługi AKS z najnowszymi poprawkami dla bazowego systemu operacyjnego. Te aktualizacje obejmują poprawki zabezpieczeń systemu operacyjnego lub aktualizacje jądra. Niektóre aktualizacje wymagają ponownego uruchomienia węzła w celu ukończenia procesu.
W tym artykule pokazano, jak zautomatyzować proces aktualizacji węzłów AKS przy użyciu GitHub Actions i Azure CLI, aby automatycznie utworzyć zadanie aktualizacji oparte na cron.
Uwaga / Notatka
Można również automatycznie przeprowadzać uaktualnienia obrazów węzłów i planować te uaktualnienia przy użyciu planowanej konserwacji. Aby uzyskać więcej informacji, zobacz Automatyczne uaktualnianie obrazów węzłów.
Zanim rozpoczniesz
- W tym artykule założono, że masz już istniejący klaster AKS. Jeśli potrzebujesz klastra usługi AKS, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- W tym artykule założono również, że masz konto usługi GitHub i repozytorium profilów do hostowania akcji. Jeśli nie masz repozytorium, utwórz je o takiej samej nazwie jak nazwa użytkownika usługi GitHub.
- Potrzebny jest interfejs wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej, zainstalowany i skonfigurowany. Uruchom
az --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Aktualizowanie węzłów za pomocą az aks upgrade
Polecenie az aks upgrade umożliwia aktualizowanie bez przerywania pracy systemu. Polecenie wykonuje następujące akcje:
- Stosuje najnowsze aktualizacje do wszystkich węzłów klastra.
- Cordons (sprawia, że węzeł jest niedostępny do planowania nowych obciążeń) i odprowadzanie (przenosi istniejące obciążenia do innego węzła) ruchu węzłów.
- Uruchamia ponownie węzły.
- Umożliwia ponowne odbieranie ruchu przez zaktualizowane węzły.
Usługa AKS nie uruchamia automatycznie ponownie węzłów, jeśli zaktualizujesz je przy użyciu innej metody.
Uwaga / Notatka
Uruchomienie az aks upgrade z flagą --node-image-only uaktualnia jedynie obrazy węzłów. Uruchomienie polecenia bez flagi uaktualnia zarówno obrazy węzłów, jak i wersję płaszczyzny sterowania Kubernetes. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą uaktualnień zarządzanych w węzłach i dokumentację dotyczącą uaktualnień klastra.
Wszystkie węzły platformy Kubernetes działają na standardowej maszynie wirtualnej platformy Azure z systemem Windows lub Linux. Maszyny wirtualne oparte na systemie Linux używają obrazu systemu Ubuntu z systemem operacyjnym skonfigurowanym do automatycznego sprawdzania dostępności aktualizacji każdej nocy.
Kiedy używasz polecenia az aks upgrade, Azure CLI tworzy wiele nowych węzłów z najnowszymi aktualizacjami zabezpieczeń i jądra. Te nowe węzły są początkowo odizolowane, aby uniemożliwić zaplanowanie aplikacji do momentu zakończenia aktualizacji. Po zakończeniu aktualizacji platforma Azure oznacza starsze węzły jako niedostępne i opróżnia je, a następnie odblokowuje nowe, przenosząc wszystkie zaplanowane aplikacje do nowych węzłów.
Ten proces jest lepszy niż ręczne aktualizowanie jąder opartych na systemie Linux, ponieważ system Linux wymaga ponownego uruchomienia po zainstalowaniu nowej aktualizacji jądra. Jeśli zaktualizujesz system operacyjny ręcznie, musisz również ponownie uruchomić maszynę wirtualną, ręcznie kordonować i opróżniać wszystkie aplikacje.
Utwórz zaplanowaną akcję GitHub
cron to narzędzie, które umożliwia uruchamianie zestawu poleceń lub zadań zgodnie z harmonogramem automatycznym. Aby utworzyć zadanie aktualizacji węzłów usługi AKS w ramach zautomatyzowanego harmonogramu, potrzebne jest repozytorium do hostowania akcji. Funkcja GitHub Actions jest zwykle konfigurowana w tym samym repozytorium co aplikacja, ale można użyć dowolnego repozytorium.
Przejdź do repozytorium w witrynie GitHub.
Wybierz Akcje.
Wybierz pozycję Nowy przepływ pracy> samodzielnie.
Utwórz akcję usługi GitHub o nazwie Uaktualnij obrazy węzłów klastra z wyzwalaczem harmonogramu, który będzie uruchamiany co 15 dni o godzinie 3:00. Skopiuj następujący kod do kodu YAML:
name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *'Utwórz zadanie o nazwie upgrade-node, które jest uruchamiane na agencie systemu Ubuntu i łączy się z kontem Azure CLI w celu wykonania polecenia aktualizacji węzła. Skopiuj następujący kod do kodu YAML pod kluczem
on:jobs: upgrade-node: runs-on: ubuntu-latest
Skonfigurowanie Azure CLI w przepływie pracy
W pasku Wyszukaj akcje w Marketplace wyszukaj Logowanie do Azure.
Wybierz pozycję Azure Login (Logowanie do platformy Azure).
W obszarze Instalacja wybierz wersję, taką jak wersja 1.4.6, i skopiuj fragment kodu instalacji.
Dodaj klucz
stepsi informacje z fragmentu kodu instalacji do YAML.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 }}
Tworzenie poświadczeń dla Azure CLI
W nowym oknie przeglądarki utwórz nową jednostkę usługi, używając polecenia
az ad sp create-for-rbac. Pamiętaj, aby zastąpić*{subscriptionID}*własnym identyfikatorem subskrypcji.Uwaga / Notatka
W tym przykładzie tworzy rolę
Contributorw zakresie Subskrypcja. Możesz podać rolę i zakres, który spełnia Twoje potrzeby. Aby uzyskać więcej informacji, zobacz Wbudowane role platformy Azure i poziomy zakresu RBAC platformy Azure.az ad sp create-for-rbac --role Contributor --scopes /subscriptions/{subscriptionID} -o jsonDane wyjściowe powinny być podobne do następujących przykładowych danych wyjściowych:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "xxxxx-xxx-xxxx-xx-xx-xx-xx-xx", "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }Skopiuj dane wyjściowe i przejdź do repozytorium GitHub.
Wybierz pozycję Ustawienia>Sekrety i zmienne>Akcje>Nowy sekretny klucz repozytorium.
W polu Nazwa wprowadź
AZURE_CREDENTIALS.W polu Wpis tajny skopiuj zawartość danych wyjściowych odebranych podczas tworzenia jednostki usługi.
Wybierz pozycję Dodaj wpis tajny.
Utwórz kroki do wykonania poleceń Azure CLI
Przejdź do okna za pomocą przepływu pracy YAML.
Na pasku Wyszukaj w Marketplace dla akcji wyszukaj Azure CLI Action.
Wybierz Akcję Azure CLI.
W obszarze Instalacja wybierz wersję, taką jak wersja 1.0.8, i skopiuj fragment kodu instalacji.
Wklej zawartość akcji do YAML poniżej kroku
*Azure Login*, podobnie jak w poniższym przykładzie: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 --yesWskazówka
Parametry
--resource-groupi--namemożna oddzielić od polecenia, tworząc nowe wpisy tajne repozytorium tak jak zrobiłeś to dlaAZURE_CREDENTIALS.Jeśli utworzysz wpisy tajne dla tych parametrów, musisz zastąpić symbole zastępcze
<resourceGroupName>i<aksClusterName>ich tajnymi odpowiednikami. Na przykład${{secrets.RESOURCE_GROUP_NAME}}i${{secrets.AKS_CLUSTER_NAME}}Zmień nazwę pliku YAML na
upgrade-node-images.yml.Wybierz pozycję Zatwierdź zmiany..., dodaj komunikat zatwierdzenia, a następnie wybierz pozycję Zatwierdź zmiany.
Ręczne uruchamianie działania na GitHub
Przepływ pracy można uruchomić ręcznie oprócz zaplanowanego przebiegu, dodając nowy on wyzwalacz o nazwie workflow_dispatch.
Uwaga / Notatka
Jeśli chcesz zaktualizować jedną pulę węzłów zamiast wszystkich pul węzłów w klastrze, dodaj --name parametr do az aks nodepool upgrade polecenia, aby określić nazwę puli węzłów. Przykład:
az aks nodepool upgrade --resource-group <resourceGroupName> --cluster-name <aksClusterName> --name <nodePoolName> --node-image-only
workflow_dispatchDodaj wyzwalacz pod kluczemon:name: Upgrade cluster node images on: schedule: - cron: '0 3 */15 * *' workflow_dispatch:Kod YAML powinien wyglądać podobnie do poniższego przykładu:
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
Dalsze kroki
Aby uzyskać więcej informacji na temat uaktualnień usługi AKS, zobacz następujące artykuły i zasoby:
Szczegółowe omówienie najlepszych praktyk aktualizacji i innych kwestii można znaleźć w przewodniku po poprawkach i uaktualnieniach AKS.