Целевые объекты и возможности в Azure Chaos Studio

Прежде чем вы сможете внедрить ошибку в ресурс Azure, ресурс должен иметь соответствующие целевые объекты и возможности. Целевые объекты и возможности определяют, какие ресурсы включены для внедрения ошибок и которые могут выполняться с этими ресурсами.

Используя целевые объекты и возможности вместе с другими мерами безопасности, вы можете избежать случайной или вредоносной внедрения ошибок в Azure Chaos Studio. Например, с целевыми объектами и возможностями можно разрешить запуск сбоя нагрузки ЦП на рабочих виртуальных машинах, предотвращая выполнение сбоя процесса убийства.

Целевые объекты

Целевой объект хаоса позволяет Chaos Studio взаимодействовать с ресурсом для определенного типа целевого объекта. Целевой тип представляет метод внедрения ошибок в ресурс. Типы ресурсов, поддерживающие только ошибки с прямой службой, имеют один целевой тип. Примером является Microsoft-CosmosDB тип Для Azure Cosmos DB.

Типы ресурсов, поддерживающие ошибки на основе служб и агентов, имеют два целевых типа. Один из целевых типов — для сбоев с прямой службой (например, Microsoft-VirtualMachine). Другой тип целевого объекта предназначен для сбоев на основе агента (всегда Microsoft-Agent).

Целевой объект — это ресурс расширения, созданный в качестве дочернего ресурса, подключенного к Chaos Studio. Примерами являются виртуальная машина или группа безопасности сети. Целевой объект определяет тип целевого объекта, который включен в ресурсе. Например, при подключении экземпляра Azure Cosmos DB с этим идентификатором ресурса:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB

Ресурс Azure Cosmos DB имеет дочерний ресурс, форматированный в следующем примере:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/chaosstudiodemo/providers/Microsoft.DocumentDB/databaseAccounts/myDB/providers/Microsoft.Chaos/targets/Microsoft-CosmosDB

Только ресурсы с целевым объектом, созданным из них, предназначены для внедрения ошибок с помощью Chaos Studio.

Возможности

Возможность позволяет Chaos Studio выполнять определенную ошибку в ресурсе, например завершение работы виртуальной машины. Возможности уникальны для каждого целевого типа. Они представляют ошибку, которую они позволяют, например CPUPressure-1.0. Чтобы понять все доступные ошибки и соответствующие имена возможностей и типы целевых объектов, ознакомьтесь с библиотекой ошибок Chaos Studio.

Возможность — это ресурс расширения, созданный в качестве дочернего объекта. Например, если вы включаете сбой завершения работы виртуальной машины с идентификатором целевого объекта service-direct:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine

Целевой ресурс имеет дочерний ресурс, отформатированный в следующем примере:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0

Эксперимент может внедрять только ошибки на подключенных целевых объектах с соответствующими возможностями.

Перечисление имен возможностей и параметров

Для справки список имен возможностей, URI сбоя и параметров доступен в нашей библиотеке ошибок. Вы можете использовать HTTP-ответ, чтобы создать возможность или выполнить GET по существующей возможности, чтобы получить эту информацию по запросу. Например, чтобы выполнить функцию GET для завершения работы виртуальной машины:

az rest --method get --url "https://management.azure.com/subscriptions/fd9ccc83-faf6-4121-9aff-2a2d685ca2a2/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0?api-version=2023-11-01"

Возвращает следующий код JSON:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-VirtualMachine/capabilities/shutdown-1.0",
  "name": "shutdown-1.0",
  "properties": {
    "description": null,
    "name": "shutdown-1.0",
    "parametersSchema": "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json",
    "publisher": "Microsoft",
    "targetType": "VirtualMachine",
    "type": "shutdown",
    "urn": "urn:csci:microsoft:virtualMachine:shutdown/1.0",
    "version": "1.0"
  },
  "resourceGroup": "myRG",
  "systemData": {
    "createdAt": "2021-09-15T23:00:00.826575+00:00",
    "lastModifiedAt": "2021-09-15T23:00:00.826575+00:00"
  },
  "type": "Microsoft.Chaos/targets/capabilities"
}

Свойство properties.urn используется для определения сбоя, который требуется выполнить в эксперименте хаоса. Чтобы понять схему параметров этого сбоя, можно получить схему, на которую ссылается properties.parametersSchema:

az rest --method get --url "https://schema-tc.eastus.chaos-prod.azure.com/targetTypes/Microsoft-VirtualMachine/capabilityTypes/Shutdown-1.0/parametersSchema.json"

Возвращает следующий код JSON:

{
  "$schema": "https://json-schema.org/draft-07/schema",
  "properties": {
    "abruptShutdown": {
      "type": "boolean"
    },
    "restartWhenComplete": {
      "type": "boolean"
    }
  },
  "type": "object"
}

Следующие шаги

Теперь, когда вы понимаете, какие целевые объекты и возможности являются, вы готовы: