Megosztás a következőn keresztül:


Chaos Mesh-hibát használó káoszkísérlet létrehozása az Azure CLI-vel

Egy káoszkísérlettel ellenőrizheti, hogy az alkalmazás rugalmas-e a hibákkal szemben, ha ezeket a hibákat egy ellenőrzött környezetben okozza. Ebben a cikkben az Azure Kubernetes Service (AKS) podhibáit okozhatja egy névtéren egy káoszkísérlet és az Azure Chaos Studio használatával. A kísérlet futtatása segíthet megvédeni a szolgáltatás elérhetetlenségét szórványos hibák esetén.

A Chaos Studio a Chaos Mesht, a Kubernetes ingyenes, nyílt forráskódú chaos mérnöki platformjának használatával injektálja a hibákat egy AKS-fürtbe. A Chaos Mesh-hibák olyan szolgáltatás-közvetlen hibák, amelyek megkövetelik, hogy a Chaos Mesh telepítve legyen az AKS-fürtre. Ugyanezekkel a lépésekkel konfigurálhat és futtathat kísérleteket az AKS Chaos Mesh-hibákhoz.

Előfeltételek

Korlátozások

  • A Chaos Mesh hibáit privát fürtökkel is használhatja a VNet-injektálás konfigurálásával a Chaos Studióban. A privát fürtnek kiadott parancsokat , beleértve a jelen cikkben a Chaos Mesh beállításának lépéseit is, követnie kell a privát fürt útmutatását. Az ajánlott módszerek közé tartozik egy virtuális gépről való csatlakozás ugyanabban a virtuális hálózaton, vagy az AKS parancshívási funkciójának használata.
  • Az AKS Chaos Mesh-hibák csak Linux-csomópontkészleteken támogatottak.
  • A Chaos Mesh hibái jelenleg nem működnek, ha az AKS-fürt helyi fiókjai le vannak tiltva.
  • Ha az AKS-fürt úgy van konfigurálva, hogy csak engedélyezett IP-tartományokat engedélyezzen, engedélyeznie kell a Chaos Studio IP-tartományait. A szolgáltatáscímkét a ChaosStudio Service Tag Discovery API-val vagy letölthető JSON-fájlokkal kérdezheti le.

Az Azure Cloud Shell megnyitása

Az Azure Cloud Shell egy ingyenes interaktív rendszerhéj, amellyel futtathatja a cikkben leírt lépéseket. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.

A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is megnyithatja a Bash megnyitásával. A Másolás gombra kattintva másolja a kódblokkokat, illessze be a Cloud Shellbe, és futtassa az Enter billentyűt.

Ha inkább helyileg szeretné telepíteni és használni a parancssori felületet, ehhez az oktatóanyaghoz az Azure CLI 2.0.30-s vagy újabb verziójára van szükség. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Feljegyzés

Ezek az utasítások egy Bash-terminált használnak a Cloud Shellben. Előfordulhat, hogy egyes parancsok nem működnek a leírtak szerint, ha helyileg vagy PowerShell-terminálon futtatja a parancssori felületet.

A Chaos Mesh beállítása az AKS-fürtön

Mielőtt a Chaos Mesh hibáit futtathatja a Chaos Studióban, telepítenie kell a Chaos Mesht az AKS-fürtre.

  1. Futtassa a következő parancsokat egy Cloud Shell-ablakban , ahol az aktív előfizetés az az előfizetés, amelyben az AKS-fürt telepítve van. Cserélje le és $CLUSTER_NAME írja be $RESOURCE_GROUP a fürterőforrás erőforráscsoportját és nevét.

    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
    
  2. Ellenőrizze, hogy a Chaos Mesh-podok telepítve vannak-e a következő parancs futtatásával:

    kubectl get po -n chaos-testing
    

A következő példához hasonló kimenetnek kell megjelennie (egy chaos-controller-manager és egy vagy több káosz-démon):

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

A Chaos Mesh webhelyén található telepítési utasításokat is használhatja.

A Chaos Studio engedélyezése az AKS-fürtön

A Chaos Studio csak akkor tud hibákat beszúrni egy erőforrásba, ha először hozzáadja az erőforrást a Chaos Studióhoz. Ha erőforrást szeretne hozzáadni a Chaos Studióhoz, hozzon létre egy célt és képességeket az erőforráson. Az AKS-fürtök csak egy céltípussal rendelkeznek (közvetlen szolgáltatással), de más erőforrások legfeljebb két céltípussal rendelkezhetnek. Az egyik céltípus a közvetlen szolgáltatáshibák. Egy másik céltípus az ügynökalapú hibák. A Chaos Mesh-hibák minden típusa olyan képességként jelenik meg, mint a PodChaos, a NetworkChaos és az IOChaos.

  1. Hozzon létre egy célt a hozzáadni kívánt AKS-fürt megfelelő sztringjeinek lecserélésével$SUBSCRIPTION_ID$resourceGroupName$AKS_CLUSTER_NAME.

    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\":{}}"
    
  2. A cél képességeinek létrehozásához cserélje le $SUBSCRIPTION_IDa , $resourceGroupNameés $AKS_CLUSTER_NAME a hozzáadni kívánt AKS-fürt megfelelő sztringjeire.

Cserélje le $CAPABILITY a hozzáadni kívánt hiba "Képesség neve" helyére.

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\":{}}"

Íme egy példa a PodChaos referencia képességének engedélyezésére:

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\":{}}"

Ezt a lépést minden olyan* képességnél el kell végezni, amelyet engedélyezni szeretne a fürtön.

Most sikeresen hozzáadta az AKS-fürtöt a Chaos Studióhoz.

Kísérlet létrehozása

Most már létrehozhatja a kísérletet. A káoszkísérlet meghatározza a célerőforrásokon végrehajtandó műveleteket. A műveletek sorrendbe vannak rendezve, és szekvenciális lépésekben futnak. A káoszkísérlet azt is meghatározza, hogy milyen műveleteket szeretne végrehajtani az ágakon, amelyek párhuzamosan futnak.

  1. Chaos Mesh jsonSpeclétrehozása:

    1. Tekintse meg a Chaos Mesh dokumentációját egy hibatípusról, például a PodChaos típusról.

    2. A Chaos Mesh dokumentációjának használatával alakítsa ki az adott hibatípus YAML-konfigurációját.

      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
      
    3. Távolítsa el a yaML-t a specmegadott tulajdonságon kívül, beleértve a spec tulajdonság nevét is. Távolítsa el a specifikáció részleteinek behúzását. A duration paraméter nem szükséges, de ha meg van adva, akkor használatos. Ebben az esetben távolítsa el.

      action: pod-failure
      mode: all
      selector:
        namespaces:
          - default
      
    4. Az ehhez hasonló YAML-to-JSON konverterrel alakítsa át a Chaos Mesh YAML-et JSON-ra, és minimalizálja azt.

      {"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
      
    5. Az ilyen JSON-sztringek feloldóeszközével elkerülheti a JSON-specifikációt, vagy módosíthatja a dupla idézőjeleket egy idézőjelekká.

      {\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}
      
      {'action':'pod-failure','mode':'all','selector':{'namespaces':['default']}}
      
  2. Hozza létre a kísérlet JSON-ját a következő JSON-mintával kezdve. Módosítsa a JSON-t úgy, hogy megfeleljen a futtatni kívánt kísérletnek a Kísérlet létrehozása API, a hibatár és az jsonSpec előző lépésben létrehozott használatával.

    {
      "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.1"
                  }
                ]
              }
            ]
          }
        ],
        "selectors": [
          {
            "id": "Selector1",
            "type": "List",
            "targets": [
              {
                "type": "ChaosTarget",
                "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.ContainerService/managedClusters/myCluster/providers/Microsoft.Chaos/targets/Microsoft-AzureKubernetesServiceChaosMesh"
              }
            ]
          }
        ]
      }
    }
    
  3. Hozza létre a kísérletet az Azure CLI használatával. Cserélje le $SUBSCRIPTION_IDa , $RESOURCE_GROUPés $EXPERIMENT_NAME a kísérlet tulajdonságaira. Győződjön meg arról, hogy mentette és feltöltötte a kísérlet JSON-ját. Frissítsen experiment.json a JSON-fájlnévvel.

    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
    

    Minden kísérlet létrehoz egy megfelelő, rendszer által hozzárendelt felügyelt identitást. Jegyezze fel az identitás egyszerű azonosítóját a következő lépés válaszában.

A kísérlet engedélyének megadása az AKS-fürthöz

Káoszkísérlet létrehozásakor a Chaos Studio létrehoz egy rendszer által hozzárendelt felügyelt identitást, amely hibákat hajt végre a célerőforrásokon. Ennek az identitásnak megfelelő engedélyekkel kell rendelkeznie a célerőforráshoz a kísérlet sikeres futtatásához.

  1. Kérje le a $EXPERIMENT_PRINCIPAL_ID következő parancs futtatásával és a PrincipalID válaszból való másolással. Cserélje le $SUBSCRIPTION_IDa , $RESOURCE_GROUPés $EXPERIMENT_NAME a kísérlet tulajdonságaira.
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
  1. Adjon hozzáférést a kísérletnek az erőforrásokhoz az alábbi paranccsal. Cserélje le $EXPERIMENT_PRINCIPAL_ID az előző lépésben szereplő egyszerű azonosítóra. Cserélje le $SUBSCRIPTION_IDa , $resourceGroupNameés $AKS_CLUSTER_NAME az AKS-fürt megfelelő sztringjeire.
az role assignment create --role "Azure Kubernetes Service Cluster Admin Role" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --assignee-principal-type "ServicePrincipal" --scope subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroupName/providers/Microsoft.ContainerService/managedClusters/$AKS_CLUSTER_NAME

A kísérlet futtatása

Most már készen áll a kísérlet futtatására. Az effektus megtekintéséhez javasoljuk, hogy nyissa meg az AKS-fürt áttekintését, és nyissa meg az Elemzések lapot egy külön böngészőlapon. Az aktív podok számának élő adatai a kísérlet futtatásának hatását mutatják.

  1. Indítsa el a kísérletet az Azure CLI használatával. Cserélje le $SUBSCRIPTION_IDa , $RESOURCE_GROUPés $EXPERIMENT_NAME a kísérlet tulajdonságaira.

    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
    
  2. A válasz tartalmaz egy állapot URL-címet, amellyel lekérdezheti a kísérlet állapotát a kísérlet futtatásakor.

Következő lépések

Most, hogy futtatott egy AKS Chaos Mesh szolgáltatás-közvetlen kísérletet, készen áll a következőre: