Vytvoření experimentu s chaosem, který používá chybu Chaos Mesh pomocí Azure CLI
Pomocí experimentu s chaosem můžete ověřit, že je vaše aplikace odolná vůči selháním, a to tím, že tyto chyby způsobují v řízeném prostředí. V tomto článku způsobíte pravidelné selhání podů Azure Kubernetes Service (AKS) v oboru názvů pomocí experimentu chaosu a nástroje Azure Chaos Studio. Spuštění tohoto experimentu vám může pomoct bránit se nedostupnosti služby, pokud dojde k občasným selháním.
Chaos Studio používá k vložení chyb do clusteru AKS bezplatnou opensourcovou platformu chaosu pro Kubernetes. Chyby služby Chaos Mesh jsou chyby přímé služby, které vyžadují, aby byla v clusteru AKS nainstalovaná služba Chaos Mesh. Stejný postup můžete použít k nastavení a spuštění experimentu pro jakoukoli chybu AKS Chaos Mesh.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
- Cluster AKS s fondy uzlů Linuxu. Pokud cluster AKS nemáte, prohlédni si rychlý start AKS, který používá Azure CLI, Azure PowerShell nebo Azure Portal.
Omezení
- Chyby služby Chaos Mesh můžete použít s privátními clustery konfigurací injektáže virtuální sítě v aplikaci Chaos Studio. Všechny příkazy vydané privátnímu clusteru, včetně kroků v tomto článku pro nastavení služby Chaos Mesh, musí postupovat podle pokynů k privátnímu clusteru. Mezi doporučené metody patří připojení z virtuálního počítače ve stejné virtuální síti nebo použití funkce vyvolání příkazu AKS.
- Chyby AKS Chaos Mesh jsou podporovány pouze ve fondech uzlů s Linuxem.
- Pokud je váš cluster AKS nakonfigurovaný tak, aby povoloval jenom autorizované rozsahy IP adres, musíte povolit rozsahy IP adres aplikace Chaos Studio. Najdete je tak, že se
ChaosStudio
na značku služby dotazujete pomocí rozhraní API pro zjišťování značek služby nebo souborů JSON ke stažení.
Otevření Azure Cloud Shellu
Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít ke spuštění kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.
Pokud chcete otevřít Cloud Shell, vyberte Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete otevřít také na samostatné kartě prohlížeče tak, že přejdete na Bash. Výběrem možnosti Kopírovat zkopírujte bloky kódu, vložte ho do Cloud Shellu a stisknutím klávesy Enter ho spusťte.
Pokud chcete rozhraní příkazového řádku nainstalovat a používat místně, tento kurz vyžaduje Azure CLI verze 2.0.30 nebo novější. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Poznámka:
Tyto pokyny používají terminál Bash v Cloud Shellu. Některé příkazy nemusí fungovat, jak je popsáno, pokud spouštíte rozhraní příkazového řádku místně nebo v terminálu PowerShellu.
Nastavení služby Chaos Mesh v clusteru AKS
Než budete moct spustit chyby Chaos Mesh v aplikaci Chaos Studio, musíte do clusteru AKS nainstalovat Chaos Mesh.
V okně Cloud Shellu spusťte následující příkazy, ve kterém máte aktivní předplatné nastavené jako předplatné, ve kterém je nasazený cluster AKS.
$CLUSTER_NAME
Nahraďte$RESOURCE_GROUP
skupinu prostředků a názvem vašeho prostředku clusteru a nahraďte ji.az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME helm repo add chaos-mesh https://charts.chaos-mesh.org helm repo update kubectl create ns chaos-testing helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
Spuštěním následujícího příkazu ověřte, že jsou pody Chaos Mesh nainstalované:
kubectl get po -n chaos-testing
Měl by se zobrazit výstup podobný následujícímu příkladu (chaos-controller-manager a jeden nebo více démonů chaosu):
NAME READY STATUS RESTARTS AGE
chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h
chaos-daemon-jb8xh 1/1 Running 0 2d5h
chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
Můžete také použít pokyny k instalaci na webu Chaos Mesh.
Povolení Chaos Studia v clusteru AKS
Chaos Studio nemůže vkládat chyby proti prostředku, pokud se tento prostředek nepřidá do aplikace Chaos Studio. Pokud chcete přidat prostředek do nástroje Chaos Studio, vytvořte cíl a možnosti prostředku. Clustery AKS mají pouze jeden cílový typ (přímý servis), ale jiné prostředky můžou mít až dva cílové typy. Jedním cílovým typem jsou chyby přímé služby. Dalším cílovým typem jsou chyby založené na agentech. Každý typ chyby Chaos Mesh je reprezentován jako funkce, jako je PodChaos, NetworkChaos a IOChaos.
Vytvořte cíl nahrazením
$SUBSCRIPTION_ID
$resourceGroupName
a$AKS_CLUSTER_NAME
relevantními řetězci clusteru AKS, který přidáváte.az rest --method put --url "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh?api-version=2024-01-01" --body "{\"properties\":{}}"
Vytvořte v cíli funkce nahrazením
$SUBSCRIPTION_ID
$resourceGroupName
a$AKS_CLUSTER_NAME
odpovídajícími řetězci clusteru AKS, který přidáváte.
Nahraďte $CAPABILITY
"Název schopnosti" chyby, kterou přidáváte.
az rest --method put --url "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh/capabilities/$CAPABILITY?api-version=2024-01-01" --body "{\"properties\":{}}"
Tady je příklad povolení PodChaos
funkce pro referenci:
az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.ContainerService/managedClusters/myCluster/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh/capabilities/PodChaos-2.1?api-version=2024-01-01" --body "{\"properties\":{}}"
Tento krok je potřeba provést pro každou* funkci, kterou chcete povolit v clusteru.
Teď jste úspěšně přidali cluster AKS do chaos studia.
Vytvoření experimentu
Teď můžete experiment vytvořit. Experiment chaosu definuje akce, které chcete provést proti cílovým prostředkům. Akce jsou uspořádány a spouštěny v sekvenčních krocích. Experiment chaosu také definuje akce, které chcete provést proti větvím, které běží paralelně.
Vytvoření chaosové sítě
jsonSpec
:Informace o typu chyby, například typu PodChaos, najdete v dokumentaci k Chaos Mesh.
Pomocí dokumentace ke službě Chaos Mesh zformulujte konfiguraci YAML pro tento typ chyby.
apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-example namespace: chaos-testing spec: action: pod-failure mode: all duration: '600s' selector: namespaces: - default
Odeberte libovolný YAML mimo název
spec
vlastnosti specifikace. Odeberte odsazení podrobností specifikace. Parametrduration
není nutný, ale pokud je zadaný, použije se. V tomto případě ji odeberte.action: pod-failure mode: all selector: namespaces: - default
Pomocí převaděče YAML-to-JSON, jako je tento , převeďte YAML Chaos Mesh na JSON a minimalizujte ho.
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
Pomocí řídicího nástroje pro řetězce JSON, jako je tento , použijte řídicí nástroj JSON nebo změňte dvojité uvozovky na jednoduché uvozovky.
{\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}
{'action':'pod-failure','mode':'all','selector':{'namespaces':['default']}}
Vytvořte json experimentu tak, že začnete s následující ukázkou JSON. Upravte json tak, aby odpovídal experimentu, který chcete spustit, pomocí rozhraní API pro vytvoření experimentu , knihovny chyb a vytvořeného
jsonSpec
v předchozím kroku.{ "location": "centralus", "identity": { "type": "SystemAssigned" }, "properties": { "steps": [ { "name": "AKS pod kill", "branches": [ { "name": "AKS pod kill", "actions": [ { "type": "continuous", "selectorId": "Selector1", "duration": "PT10M", "parameters": [ { "key": "jsonSpec", "value": "{\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}" } ], "name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:podChaos/2.2" } ] } ] } ], "selectors": [ { "id": "Selector1", "type": "List", "targets": [ { "type": "ChaosTarget", "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myRG/providers/Microsoft.ContainerService/managedClusters/myCluster/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh" } ] } ] } }
Vytvořte experiment pomocí Azure CLI. Nahraďte
$SUBSCRIPTION_ID
a$RESOURCE_GROUP
$EXPERIMENT_NAME
vlastnosti experimentu. Ujistěte se, že jste uložili a nahráli json experimentu. Aktualizujteexperiment.json
název souboru JSON.az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
Každý experiment vytvoří odpovídající spravovanou identitu přiřazenou systémem. Poznamenejte si ID objektu zabezpečení pro tuto identitu v odpovědi pro další krok.
Udělení oprávnění experimentu clusteru AKS
Když vytvoříte experiment chaosu, Chaos Studio vytvoří spravovanou identitu přiřazenou systémem, která provádí chyby proti cílovým prostředkům. Tato identita musí mít příslušná oprávnění k cílovému prostředku, aby se experiment úspěšně spustil.
$EXPERIMENT_PRINCIPAL_ID
Načtěte příkaz spuštěním následujícího příkazu a zkopírovánímPrincipalID
odpovědi. Nahraďte$SUBSCRIPTION_ID
a$RESOURCE_GROUP
$EXPERIMENT_NAME
vlastnosti experimentu.
az rest --method get --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2024-01-01
- Pomocí následujících příkazů přidělte experimentu přístup k vašim prostředkům. Nahraďte
$EXPERIMENT_PRINCIPAL_ID
ID objektu zabezpečení z předchozího kroku. Nahraďte$SUBSCRIPTION_ID
a$resourceGroupName
$AKS_CLUSTER_NAME
za odpovídající řetězce clusteru AKS.
az role assignment create --role "Azure Kubernetes Service RBAC Admin Role" --assignee-principal-type "ServicePrincipal" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME
az role assignment create --role "Azure Kubernetes Service Cluster User Role" --assignee-principal-type "ServicePrincipal" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME
Pokud dáváte přednost vytváření vlastních rolí místo předdefinovaných rolí AKS, postupujte podle pokynů na stránce Podporované typy prostředků a přiřazení rolí pro Chaos Studio , kde najdete seznam operací řízení přístupu na základě rolí potřebných pro konkrétní chybu a přidejte je do ručně vytvořené vlastní role.
Spuštění experimentu
Teď jste připraveni spustit experiment. Pokud chcete zobrazit efekt, doporučujeme otevřít přehled clusteru AKS a přejít na přehledy na samostatné kartě prohlížeče. Živá data pro počet aktivních podů ukazují účinek spuštění experimentu.
Spusťte experiment pomocí Azure CLI. Nahraďte
$SUBSCRIPTION_ID
a$RESOURCE_GROUP
$EXPERIMENT_NAME
vlastnosti experimentu.az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2024-01-01
Odpověď obsahuje adresu URL stavu, kterou můžete použít k dotazování stavu experimentu při spuštění experimentu.
Další kroky
Teď, když jste spustili přímý experiment služby AKS Chaos Mesh, jste připraveni: