Dela via


Använda automatiserade distributioner i Azure Kubernetes Fleet Manager för att skapa resursplacering för flera kluster (förhandsversion)

Automatiserade distributioner i Azure Kubernetes Fleet Manager kan användas för att skapa och distribuera ett program från en kodlagringsplats till ett eller flera AKS-kluster i en flotta. Automatiserade distributioner förenklar processen med att konfigurera ett GitHub Action-arbetsflöde för att skapa och distribuera din kod. När du har anslutit kör varje ny commit som du gör pipelinen.

Automatiserade distributioner bygger på draft.sh. När du skapar ett nytt distributionsarbetsflöde kan du använda en befintlig Dockerfile, generera en Dockerfile, använda befintliga Kubernetes-manifest eller generera Kubernetes-manifest. De genererade manifesten skapas med bästa praxis för säkerhet och återhämtning i åtanke.

Viktigt!

Förhandsversionsfunktionerna i Azure Kubernetes Fleet Manager är tillgängliga via självbetjäning och opt-in. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. Förhandsversioner av Azure Kubernetes Fleet Manager omfattas delvis av kundsupport på bästa sätt. Dessa funktioner är därmed inte avsedda för produktionsanvändning.

Förutsättningar

Hämta programmets källkod

Leta upp din Azure Kubernetes Fleet Manager och starta konfigurationen av automatiserade distributioner.

  1. I Azure-portalen söker du efter Kubernetes Fleet Manager i det övre sökfältet.
  2. Välj Kubernetes fleet manager i sökresultaten.
  3. Välj din Azure Kubernetes Fleet Manager i resurslistan.
  4. Välj Automatiserade distributioner under Fleet-resurser på Fleet Manager-tjänstmenyn.
  5. Välj + Skapa på den översta menyn. Om den här distributionen är din första kan du också välja Skapa i distributionslistan.

Skärmbild som visar alternativ för att skapa automatiserade distributioner i Fleet Manager.

Ansluta till källkodslagringsplatsen

Skapa ett arbetsflöde och auktorisera det för att ansluta till önskad källkodslagringsplats och -gren. Fyll i följande information på fliken Lagringsplats .

  1. Ange ett beskrivande namn för arbetsflödet i fältet Arbetsflödesnamn .
  2. Välj sedan Auktorisera åtkomst för att auktorisera en användare mot GitHub för att hämta en lista över lagringsplatser.
  3. För Lagringsplatskälla väljer du antingen:
    1. Mina lagringsplatser för lagringsplatser som den för närvarande auktoriserade GitHub-användaren äger, eller;
    2. Alla lagringsplatser för lagringsplatser som den för närvarande auktoriserade GitHub-användaren kan komma åt. Du måste välja den organisation som äger lagringsplatsen.
  4. Välj lagringsplats och gren.
  5. Välj knappen Nästa.

Skärmbild som visar val av lagringsplats för källkontroll när du konfigurerar automatiserade distributioner i Fleet Manager.

Ange programbild och distributionskonfiguration

För att förbereda ett program för körning på Kubernetes måste du skapa det till en containeravbildning som du lagrar i ett containerregister. En Dockerfile innehåller instruktioner om hur du skapar containeravbildningen. Om källkodslagringsplatsen inte redan har en Dockerfile kan automatiserade distributioner generera en åt dig.

Om din kodlagringsplats redan har en Dockerfile kan du använda den för att skapa programbilden.

  1. Välj Befintlig Dockerfile för containerkonfigurationen.
  2. Välj Dockerfile från lagringsplatsen.
  3. Ange Dockerfile-byggkontexten för att skicka uppsättningen filer och kataloger till byggprocessen (vanligtvis samma mapp som Dockerfile). Dessa filer används för att skapa avbildningen och de ingår i den slutliga avbildningen, såvida de inte ignoreras genom inkludering i en .dockerignore fil.
  4. Välj ett befintligt Azure Container Registry. Det här registret används för att lagra den byggda programbilden. Alla AKS-kluster som kan ta emot programmet måste ha AcrPull behörighet i registret.
  5. Ange containerbildnamnet för Azure Container Registry. Du måste använda det här avbildningsnamnet i Kubernetes-distribueringsmanifester.

Skärmbild som visar val av en befintlig Dockerfile när du konfigurerar automatiserade distributioner i Fleet Manager.

Välj Kubernetes-manifestkonfigurationen

Ett program som körs på Kubernetes består av många primitiva Kubernetes-komponenter. Dessa komponenter beskriver vilken containeravbildning som ska användas, hur många repliker som ska köras, om det krävs en offentlig IP-adress för att exponera programmet osv. Mer information finns i den officiella Kubernetes-dokumentationen. Om källkodslagringsplatsen inte redan har Kubernetes-manifest kan automatiserade distributioner generera dem åt dig. Du kan också välja ett befintligt Helm-diagram.

Varning

Använd inte fleet-system eller något av fleet-member namnrymderna eftersom dessa är interna namnrymder som används av Fleet Manager och inte kan användas för att placera ditt program.

Om din kodlagringsplats redan har ett Kubernetes-manifest kan du välja det för att styra vilken arbetsbelastning som distribueras och konfigureras av en klusterresursplacering.

  1. Välj Använd befintliga Kubernetes-manifestdistributionsfiler för distributionsalternativen.
  2. Välj Kubernetes-manifestfilen eller -mappen från lagringsplatsen.
  3. Välj det befintliga Fleet Manager-namnområdet för att mellanlagra arbetsbelastningen i.
  4. Välj knappen Nästa.

Skärmbild som visar val av ett befintligt Kubernetes-manifest när du konfigurerar automatiserade distributioner i Fleet Manager.

Granska konfigurationen

Granska konfigurationen för lagringsplatsen, avbildningen och distributionskonfigurationen.

Skärmbild som visar konfigurationen av en automatiserad distribution så att den kan granskas innan den skickas.

Välj Nästa för att starta processen som utför följande åtgärder:

  1. Skapa federerade autentiseringsuppgifter så att GitHub-åtgärden kan:
    1. Skicka den skapade containeravbildningen till Azure Container Registry.
    2. Mellanlagra Kubernetes-manifesten i det valda namnområdet i Fleet Manager-hubbklustret.
  2. Skapa en pull-begäran på kodlagringsplatsen med alla genererade filer och arbetsflödet.

Installationen tar några minuter, så gå inte bort från sidan Distribuera.

Skärmbild som visar att konfigurationen av automatiserad distribution har slutförts med en knapp för att godkänna pull-begäran.

Granska och sammanfoga pull-begäran

När distributionssteget är klart väljer du knappen Godkänn pull-begäran för att öppna den genererade pull-begäran på kodlagringsplatsen.

Anmärkning

Det finns ett känt problem med namnet på den genererade pull-begäran där det står att den distribuerar till AKS. Trots det här felaktiga namnet mellanlagrar det resulterande arbetsflödet din arbetsbelastning på Fleet Manager-hubbklustret i det namnområde som du har valt.

Skärmbild av pull-begäran på GitHub.

  1. Granska ändringarna under Filer har ändrats och gör önskade ändringar.
  2. Välj Koppla pull-begäran för att sammanfoga ändringarna till din kodlagringsplats.

Genom att slå ihop ändringen körs GitHub Actions-arbetsflödet som bygger ditt program som en containeravbildning och lagrar det i det valda Azure Container Registry.

Skärmbild som visar hur GitHub Actions-arbetsflödet pågår.

Kontrollera de genererade resurserna

När pipelinen är klar kan du granska den skapade containeravbildningen på Azure-portalen genom att hitta den Azure Container Registry-instans som du konfigurerade och öppna avbildningslagringsplatsen.

Skärmbild av den byggda containeravbildningen som finns på en Azure Container Registry-lagringsplats.

Du kan också visa konfigurationen för automatiserad distribution i Fleet Manager. Om du väljer workflow namnet öppnas GitHub på GitHub Action.

Skärmbild av den konfigurerade automatiserade distributionen av Fleet Manager, inklusive en länk till GitHub-åtgärden.

Slutligen kan du bekräfta att de förväntade Kubernetes-resurserna mellanlagras i Fleet Manager-hubbklustret.

az fleet get-credentials \
    --resource-group ${GROUP} \
    --name ${FLEET}
kubectl describe deployments virtual-worker --namespace=contoso-store

Utdata ser ut ungefär som nedan. Replikerna av 0 förväntas eftersom arbetsbelastningar inte schemaläggs i Fleet Manager-hubbklustret. Kontrollera att Image egenskapen pekar på den inbyggda avbildningen i Azure Container Registry.

Name:                   virtual-worker
Namespace:              contoso-store
CreationTimestamp:      Thu, 24 Apr 2025 01:56:49 +0000
Labels:                 workflow=actions.github.com-k8s-deploy
                        workflowFriendlyName=contoso-store-deploy
Annotations:            <none>
Selector:               app=virtual-worker
Replicas:               1 desired | 0 updated | 0 total | 0 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=virtual-worker
  Containers:
   virtual-worker:
    Image:      contoso03.azurecr.io/virtual-worker:latest
    Port:       <none>
    Host Port:  <none>
    Limits:
      cpu:     2m
      memory:  20Mi
    Requests:
      cpu:     1m
      memory:  1Mi
    Environment:
      MAKELINE_SERVICE_URL:  http://makeline-service:3001
      ORDERS_PER_HOUR:       100
    Mounts:                  <none>
  Volumes:                   <none>
  Node-Selectors:            kubernetes.io/os=linux
  Tolerations:               <none>
Events:                      <none>

Definiera placering av klusterresurser

Under förhandsversionen kan du följa de här stegen för att konfigurera placeringen av din mellanlagrade arbetsbelastning på medlemskluster.

  1. I källkodslagringsplatsen för ditt program skapar du en mapp i lagringsplatsens rot som heter fleet.

  2. Skapa en ny fil deploy-contoso-ns-two-regions.yaml i mappen fleet och lägg till innehållet som visas. Det här exemplet distribuerar contoso-store namnområdet mellan två kluster som måste finnas i två olika Azure-regioner.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterResourcePlacement
    metadata:
      name: distribute-virtual-worker-two-regions
    spec:
      resourceSelectors:
        - group: ""
          kind: Namespace
          version: v1          
          name: contoso-store
      policy:
        placementType: PickN
        numberOfClusters: 2
        topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: region
          whenUnsatisfiable: DoNotSchedule
    
  3. Ändra arbetsflödesfilen för GitHub Action och lägg till en referens till CRP-filen.

    DEPLOYMENT_MANIFEST_PATH: |
      ./virtual-worker.yaml
      ./fleet/deploy-contoso-ns-two-regions.yaml
    
  4. Lägg till det nya CRP-manifestet och den uppdaterade arbetsflödesfilen för GitHub Action.

  5. Kontrollera att arbetsbelastningen är placerad enligt principen som definierats i CRP-definitionen. Du kontrollerar antingen med hjälp av Azure-portalen eller kubectl på kommandoraden.

Skärmbild av Fleet Manager-resursplaceringar som visar en slutförd placering.

Nästa steg