Delen via


Microsoft Entra-verificatie gebruiken met Chaos Studio AKS-fouten

Overzicht

Azure Chaos Studio kan worden geïntegreerd met Chaos Mesh om fouten uit te voeren in AKS-clusters (Azure Kubernetes Service), zoals het verwijderen van pods, CPU-stress, netwerkonderbreking en meer. U kunt twee verschillende typen verificatie gebruiken om deze fouten uit te voeren, afhankelijk van uw configuratie en voorkeuren, lokale accounts of door AKS beheerde Microsoft Entra-verificatie:

  • Lokale Kubernetes-accounts worden opgeslagen op de Kubernetes API-server en kunnen worden gebruikt voor het verifiëren en autoriseren van aanvragen voor het cluster. Meer informatie over lokale accounts vindt u op deze pagina: Lokale accounts beheren.
  • Met AKS-beheerde Microsoft Entra-verificatie kunt u zich aanmelden en machtigingen voor uw cluster beheren met behulp van Microsoft Entra-referenties en Azure RBAC. Meer informatie over het inschakelen van door AKS beheerde Microsoft Entra-verificatie.

Notitie

Lokale accountmachtigingen verlenen toegang zolang de referenties zich op de clientcomputer bevinden, terwijl AKS-beheerde Microsoft Entra-verificatie meer toewijzing en beheer van machtigingen toestaat. Meer informatie over deze best practice: Best practices voor clusterbeveiliging en upgrades.

Chaos Studio ondersteunt voorheen alleen chaos mesh met lokale accounts, maar versie 2.2 van alle AKS-fouten ondersteunen nu zowel lokale accounts als Microsoft Entra-verificatie.

Waarschuwing

Als u een runtimefout Object reference not set to an instance of an objectziet, is dit een bekende fout met de fouten in versie 2.2. Er wordt naar verwachting begin januari 2025 een oplossing geïmplementeerd. Dit gebeurt wanneer u de nieuwe AKS Chaos Mesh-foutversie (2.2) op een cluster gebruikt waarvoor lokale accounts zijn ingeschakeld. De tijdelijke oplossing is het gebruik van de v2.1-fouten, die zijn gemarkeerd als (afgeschaft) in de gebruikersinterface of een AKS-cluster gebruiken waarvoor Entra-verificatie is ingeschakeld.

Doelen bijwerken

Doelen (Microsoft.Chaos/targets) vertegenwoordigen een andere Azure-resource in het resourcemodel van Chaos Studio, zodat u eenvoudig kunt bepalen of een bepaalde resource is ingeschakeld voor foutinjectie en welke fouten ermee kunnen worden uitgevoerd. In dit geval vertegenwoordigt het doel een AKS-cluster dat u wilt beïnvloeden.

Als u onboarding uitvoert voor een AKS-cluster als een nieuw Chaos Studio-doel in Azure Portal, zijn de nieuwe foutversies automatisch beschikbaar.

Als u de nieuwe foutversie op een bestaand AKS-doel wilt gebruiken, moet u het doel bijwerken. U kunt dit op twee manieren doen:

  • Schakel de doelresource uit en schakel deze opnieuw in.
    • Als u dit wilt doen in Azure Portal, gaat u naar het deelvenster Doelen in de Interface van de Chaos Studio-portal, selecteert u de relevante AKS-cluster(s) en selecteert u Doelen uitschakelen. Wacht 1-2 minuten of voor een bevestigingsmelding, selecteer doelen>inschakelen service-direct doelen inschakelen en doorloop het scherm Controleren en maken.
  • Werk de ingeschakelde mogelijkheden bij.
    • Als u dit wilt doen in Azure Portal, gaat u naar het deelvenster Doelen in Chaos Studio, zoekt u de AKS-clusters, selecteert u Acties beheren en controleert u of alle mogelijkheden zijn ingeschakeld. Selecteer Opslaan om de update te voltooien.

Als u de API of opdrachtregel gebruikt, volgt u de instructies in Een chaos-experiment maken dat gebruikmaakt van een Chaos Mesh-fout met de Azure CLI om ervoor te zorgen dat de nieuwste beschikbare mogelijkheden zijn ingeschakeld.

Een nieuw experiment maken

Wanneer u een nieuw experiment maakt dat gebruikmaakt van AKS Chaos Mesh-fouten in Azure Portal, ziet u mogelijk twee versies van elke fout, zoals 'AKS Chaos Mesh DNS Chaos' en 'AKS Chaos Mesh DNS Chaos (afgeschaft)'. Selecteer de eerste optie, niet de afgeschafte optie.

Als u uw AKS-cluster niet ziet als mogelijk doel nadat u de fout hebt geselecteerd, moet u mogelijk de nieuwe foutversie inschakelen op het cluster. Ga naar de pagina Doelen, zoek uw AKS-cluster en selecteer Acties beheren en zorg ervoor dat alle mogelijkheden zijn geselecteerd voordat u Opslaan selecteert.

Volg het experiment Een chaos-experiment maken dat gebruikmaakt van een Chaos Mesh-fout om AKS-pods te doden met de zelfstudie over Azure Portal om een experiment te maken.

Een bestaand experiment bijwerken

Volg een van deze twee methoden om uw bestaande experiment bij te werken.

  1. Open een experiment met ten minste één AKS Chaos Mesh-fout.
  2. Selecteer Bewerken bij de fout en kopieer de jsonSpec parameterwaarde naar het Klembord.
  3. Open de vervolgkeuzelijst voor foutselectie en selecteer de versie van de gewenste fout zonder de (deprecated) markering.
  4. Plak het jsonSpec vanaf het klembord in het parameterveld.
  5. Sla de fout en het experiment op.

Machtigingen

Chaos Studio heeft toestemming nodig om fouten op uw resources uit te voeren.

Wanneer u een experiment maakt in Azure Portal, kunt u desgewenst aangepaste rollen maken en toewijzen inschakelen selecteren om Chaos Studio te laten proberen de benodigde machtigingen toe te wijzen aan de beheerde identiteit van het experiment.

Als u ervoor kiest om geen aangepaste rol te maken of als u azure Portal niet gebruikt, moet u een van de volgende handelingen uitvoeren nadat u uw experiment hebt gemaakt:

RBAC-bewerkingen

De volgende RBAC-bewerkingen worden gebruikt voor AKS Chaos Mesh-fouten:

  • Acties:
    • Microsoft.ContainerService/managedClusters/read
  • Gegevensacties:
    • Microsoft.ContainerService/managedClusters/namespaces/read
    • Microsoft.ContainerService/managedClusters/pods/read
    • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
    • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
    • Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/read
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/delete
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/bind/action
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterroles/escalate/action
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/read
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/write
    • Microsoft.ContainerService/managedClusters/rbac.authorization.k8s.io/clusterrolebindings/delete

Optionele toegang met minimale bevoegdheden

Als u liever geen volledige ClusterRole- en ClusterRoleBinding-lees-/schrijftoegang verleent tot de Chaos Studio-experimentidentiteit, kunt u handmatig de benodigde rol en binding voor Chaos Mesh maken. Dit is nodig voor Chaos Mesh om ervoor te zorgen dat het experiment gemachtigd is om de opgegeven tenantnaamruimte te targeten.

Er zijn twee stappen voor deze optionele configuratie.

  1. Wanneer u machtigingen toewijst aan de beheerde identiteit van het experiment, gebruikt u een aangepaste rol met een beperkte set machtigingen. De vereiste machtigingen zijn:

    • Acties:
      • Microsoft.ContainerService/managedClusters/read
    • Gegevensacties:
      • Microsoft.ContainerService/managedClusters/namespaces/read
      • Microsoft.ContainerService/managedClusters/pods/read
      • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/write
      • Microsoft.ContainerService/managedClusters/apiextensions.k8s.io/customresourcedefinitions/read
      • Microsoft.ContainerService/managedClusters/authorization.k8s.io/subjectaccessreviews/write
  2. Implementeer de volgende YAML-configuratie om de rol en binding te maken. Meer informatie over implementaties in de AKS-documentatie: Een AKS-cluster (Azure Kubernetes Service) implementeren met behulp van Azure Portal.

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: role-cluster-manager-pdmas
    rules:
    - apiGroups:
      - chaos-mesh.org
      resources: [ "*" ]
      verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]
    
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: cluster-manager-binding
      namespace: {Namespace targeted by experiment}
    subjects:
    - kind: User
      name: {CHAOS-STUDIO-EXPERIMENT-MSI-OBJECT-ID}
    roleRef:
      kind: ClusterRole
      name: role-cluster-manager-pdmas
      apiGroup: rbac.authorization.k8s.io