IoT Edge zmiany zarządzania rolami dla urządzenia Azure Stack Edge

W przypadku zarządzania rolami usługi Azure IoT Edge dla urządzenia Azure Stack Edge użyj zaktualizowanej wersji interfejsu API, zestawu SDK i Azure PowerShell, która jest zaplanowana na styczeń 2021 r.

W tym artykule opisano szczegółowo zmiany, które należy wprowadzić podczas korzystania z tej najnowszej wersji.

Aktualizacja ze stycznia 2021 r. będzie dostępna tylko dla urządzeń Azure Stack Edge Pro — GPU, Azure Stack Edge Pro R i Azure Stack Edge Mini R. Informacje zawarte w tym artykule dotyczą tylko tych urządzeń.

Uwaga

Nie jest wymagane uaktualnienie do wersji ze stycznia 2021 r. Jeśli zdecydujesz się kontynuować korzystanie z bieżącej wersji, nie ma to wpływu na zarządzanie rolami IoT Edge. Jednak aby skorzystać z nowych funkcji i zmniejszyć ryzyko związane z bezpieczeństwem, zalecamy zainstalowanie nowszej wersji.

IoT Edge zmiany zarządzania rolami

Po zainstalowaniu opcjonalnej aktualizacji ze stycznia 2021 r. na urządzeniu Azure Stack Edge należy użyć najnowszej wersji poleceń cmdlet interfejsu API, zestawu SDK i programu PowerShell na potrzeby zarządzania rolami IoT Edge.

Następujące zmiany są wymagane tylko w przypadku zastosowania aktualizacji ze stycznia 2021 r.:

  • Jeśli obecnie używasz interfejsu API zarządzania rolami w wersji 2019-08-01, przeprowadź uaktualnienie do wersji interfejsu API, która zostanie wydana w styczniu 2021 r.
  • Jeśli obecnie używasz zarządzania rolami za pośrednictwem zestawu SDK w wersji 1.0.0, przeprowadź uaktualnienie do wersji, która zostanie wydana w styczniu 2021 r.
  • Jeśli używasz zarządzania rolami z poleceniami cmdlet Azure PowerShell (wersja zapoznawcza), takimi jak Get-AzStackEdgeRole, New-AzStackEdgeRole, Set-AzStackEdgeRolelub Remove-AzStackEdgeRole, poczekaj na wydanie nowych poleceń cmdlet w lutym 2021 r.

Użycie interfejsu API

Jeśli obecnie wykonujesz IoT Edge zarządzanie rolami za pośrednictwem interfejsu API, należy użyć nowego interfejsu API w wersji 2020-12-01, która zostanie opublikowana później. Jeśli używasz bieżącego interfejsu API roli, po zainstalowaniu nadchodzącej wersji oprogramowania urządzenia musisz przejść do roli PUT, GET lub DELETE kubernetes, a następnie interfejsu API dodatku PUT IoT.

Dla metody PUT

Bieżące żądanie HTTP

  • Wywołania interfejsu API są wykonywane przy użyciu tego identyfikatora URI: "https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/IoTRole1?api-version=2019-08-01"

  • Treść żądania wygląda następująco:

    {
        "kind": "IOT",
        "properties": {
            "hostPlatform": "Linux",
            "ioTDeviceDetails": {
                "deviceId": "iotdevice",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {
                        "connectionString": {
                            "value": "Encrypted<<HostName=iothub.azure-devices.net;DeviceId=iotDevice;SharedAccessKey=2C750FscEas3JmQ8Bnui5yQWZPyml0/UiRt1bQwd8=>>",
                            "encryptionCertThumbprint": "348586569999244",
                            "encryptionAlgorithm": "AES256"
                        }
                    }
                }
            },
            "ioTEdgeDeviceDetails": {
                "deviceId": "iotEdge",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {
                        "connectionString": {
                            "value": "Encrypted<<HostName=iothub.azure-devices.net;DeviceId=iotEdge;SharedAccessKey=2C750FscEas3JmQ8Bnui5yQWZPyml0/UiRt1bQwd8=>>",
                            "encryptionCertThumbprint": "1245475856069999244",
                            "encryptionAlgorithm": "AES256"
                        }
                    }
                }
            },
            "shareMappings": [],
            "roleStatus": "Enabled"
        }
    }
    

Nadchodzące żądanie HTTP

  • Wywołania interfejsu API dla roli Kubernetes są wykonywane przy użyciu następującego identyfikatora URI:

    'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/KubernetesRole1?api-version=2020-12-01'

    Treść żądania będzie wyglądać następująco:

    {
        "kind": "Kubernetes",
        "properties": {
            "hostPlatform": "Linux",
            "kubernetesClusterInfo": {
                "version": "v1.17.3"
            },
            "kubernetesRoleResources": {
                "storage": {
                    "endpoints": []
                },
                "compute": {
                    "vmProfile": "DS1_v2"
                }
            }
        }
    }
    
  • Wywołania interfejsu API dla dodatku IoT Edge są wykonywane przy użyciu następującego identyfikatora URI:

    'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/KubernetesRole1/addons/iotaddon?api-version=2020-12-01'

    Treść żądania będzie wyglądać następująco:

    {
        "kind": "IoT",
        "properties": {
            "ioTDeviceDetails": {
                "deviceId": "iotdevice",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {
                        "connectionString": {
                            "value": "Encrypted<<HostName=iothub.azure-devices.net;DeviceId=iotDevice;SharedAccessKey=2C750FscEas3JmQ8Bnui5yQWZPyml0/UiRt1bQwd8=>>",
                            "encryptionCertThumbprint": "348586569999244",
                            "encryptionAlgorithm": "AES256"
                        }
                    }
                }
            },
            "ioTEdgeDeviceDetails": {
                "deviceId": "iotEdge",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {
                        "connectionString": {
                            "value": "Encrypted<<HostName=iothub.azure-devices.net;DeviceId=iotEdge;SharedAccessKey=2C750FscEas3JmQ8Bnui5yQWZPyml0/UiRt1bQwd8=>>",
                            "encryptionCertThumbprint": "1245475856069999244",
                            "encryptionAlgorithm": "AES256"
                        }
                    }
                }
            }
        }
    }
    

Dla metody GET

Bieżąca odpowiedź HTTP

  • Wywołania interfejsu API są wykonywane przy użyciu następującego identyfikatora URI:

    'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/IoTRole1?api-version=2019-08-01'

  • Treść odpowiedzi wygląda następująco:

        "kind": "IOT",
        "properties": {
            "hostPlatform": "Linux",
            "ioTDeviceDetails": {
                "deviceId": "iotdevice",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {}
                }
            },
            "ioTEdgeDeviceDetails": {
                "deviceId": "iotEdge",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {}
                }
            },
            "shareMappings": [],
            "roleStatus": "Enabled"
        },
        "id": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/IoTRole1",
        "name": "IoTRole1",
        "type": "dataBoxEdgeDevices/roles"
    }    
    

Nadchodząca odpowiedź HTTP

  • Wywołania interfejsu API są wykonywane przy użyciu następującego identyfikatora URI:

    'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/KubernetesRole1/addons/iotaddon?api-version=2020-12-01'

  • Treść odpowiedzi wygląda następująco:

    {
        "kind": "IoT",
        "properties": {
            "provisioningState": "Creating",
            "ioTDeviceDetails": {
                "deviceId": "iotdevice",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {}
                }
            },
            "ioTEdgeDeviceDetails": {
                "deviceId": "iotEdge",
                "ioTHostHub": "iothub.azure-devices.net",
                "ioTHostHubId": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/Microsoft.Devices/IotHubs/testrxiothub",
                "authentication": {
                    "symmetricKey": {}
                }
            },
            "version": "0.1.0-beta10"
        },
        "id": "/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/res1/roles/kubernetesRole/addons/iotName",
        "name": " iotName",
        "type": "Microsoft.DataBoxEdge/dataBoxEdgeDevices/roles/addon",
    }
    

Dla metody DELETE

Bieżące wywołania interfejsu API

Wywołania interfejsu API są wykonywane przy użyciu następującego identyfikatora URI:

'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/IoTRole1?api-version=2019-08-01'

Nadchodzące wywołania interfejsu API

Wywołania interfejsu API są wykonywane przy użyciu następującego identyfikatora URI:

'https://management.azure.com/subscriptions/4385cf00-2d3a-425a-832f-f4285b1c9dce/resourceGroups/GroupForEdgeAutomation/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/testedgedevice/roles/KubernetesRole1/addons/iotaddon?api-version=2020-12-01'

SDK usage (Użycie zestawu SDK)

Jeśli używasz zestawu SDK, po zainstalowaniu aktualizacji ze stycznia 2021 r. musisz zmienić sposób konfigurowania roli IoT Edge, jak pokazano w poniższym przykładzie. Następnie pobierzesz i zainstalujesz nadchodzący pakiet NuGet, aby przejść do nowego zestawu SDK, jak pokazano tutaj.

Bieżący przykład zestawu SDK

var iotRoleStatus = "Enabled";
var iotHostPlatform = "Linux";
var id = $@"/subscriptions/546ec571-2d7f-426f-9cd8-0d695fa7edba/resourceGroups/resourceGroup/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/deviceName/roles/iotrole"; 
var name = "iotrole";
var type = "Microsoft.DataBoxEdge/dataBoxEdgeDevices/role";
var iotRoleName = "iotrole";
var ioTDeviceDetails = new IoTDeviceInfo(...);
var ioTEdgeDeviceDetails = new IoTDeviceInfo(...);
var ioTEdgeAgentInfo = new IoTEdgeAgentInfo(...);
var shareMappings = new List<MountPointMap>(...);

var role = new IoTRole(roleStatus, 
    hostPlatform, 
    shareMappings, 
    ioTDeviceDetails, 
    ioTEdgeDeviceDetails, 
    ioTEdgeAgentInfo, 
    id, 
    name, 
    type);

DataBoxEdgeManagementClient.Roles.CreateOrUpdate(deviceName, iotRoleName, role, resourceGroup);

Nowy przykład zestawu SDK

var k8sRoleStatus = "Enabled";
var k8sHostPlatform = "Linux";
var k8sId = $@"/subscriptions/546ec571-2d7f-426f-9cd8-0d695fa7edba/resourceGroups/resourceGroup/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/deviceName/roles/KubernetesRole"; 
var k8sRoleName = "KubernetesRole";
var k8sClusterVersion = "v1.17.3"; //Final values will be updated here around January 2021
var k8sVmProfile = "DS1_v2"; //Final values will be updated here around January 2021
var type = "Microsoft.DataBoxEdge/dataBoxEdgeDevices/role";
var k8sRole = new KubernetesRole(
    roleStatus,
    hostPlatform,
    shareMappings,
    k8sClusterVersion,
    k8sVmProfile,
    k8sId,
    k8sRoleName,
    type
);
DataBoxEdgeManagementClient.Roles.CreateOrUpdate(deviceName, k8sRoleName, k8sRole, resourceGroup); //Final usage will be updated here around January 2021

var ioTId = $@"/subscriptions/546ec571-2d7f-426f-9cd8-0d695fa7edba/resourceGroups/resourceGroup/providers/Microsoft.DataBoxEdge/dataBoxEdgeDevices/deviceName/roles/KubernetesRole/addons/iotaddon";
var ioTAddonName = "iotaddon";
var ioTAddonType = "Microsoft.DataBoxEdge/dataBoxEdgeDevices/roles/addons";
var addon = new IoTAddon(
    ioTDeviceDetails, 
    ioTEdgeDeviceDetails, 
    ioTEdgeAgentInfo, 
    ioTId, 
    ioTAddonName, 
    ioTAddonType);
DataBoxEdgeManagementClient.AddOns.CreateOrUpdate(deviceName, k8sRoleName, addonName, addon, resourceGroup); //Final usage will be updated here around January 2021

Użycie polecenia cmdlet

Jeśli obecnie używasz Get-AzStackEdgeRolepolecenia cmdlet , New-AzStackEdgeRole, Set-AzStackEdgeRolelub Remove-AzStackEdgeRole , musisz poczekać na nową wersję zaplanowaną na wydanie z lutego 2021 r.

Często zadawane pytania

Używam usługi Azure Stack Edge Pro — FPGA. Czy aktualizacja ze stycznia 2021 r. ma wpływ na model FPGA?

Nie. Aktualizacja ze stycznia 2021 r. dotyczy tylko urządzeń Azure Stack Edge Pro — FPGA, Azure Stack Edge Pro R i Azure Stack Edge Mini R. Usługa Azure Stack Edge Pro — układ FPGA nie ma wpływu na tę aktualizację i nie wymaga żadnych zmian w zarządzaniu rolami IoT Edge.

Czy po zaktualizowaniu usługi Azure Stack Edge Pro — procesor GPU do nowego oprogramowania urządzenia w styczniu 2021 r. ma to wpływ na dowolne istniejące usługi?

Nie. Skonfigurowane usługi nie będą miały wpływu po zainstalowaniu aktualizacji urządzenia ze stycznia 2021 r.

Jakie są ogólne zmiany interfejsu API zarządzania IoT Edge, zestawu SDK lub polecenia cmdlet?

IoT Edge jest dodatkiem w ramach roli Kubernetes, co oznacza, że najpierw musisz upewnić się, że platforma Kubernetes jest skonfigurowana, a następnie wykonać konfigurację IoT Edge.

Następne kroki