Pahami penyebaran otomatis IoT Edge untuk satu perangkat atau dalam skala besar

Berlaku untuk:IoT Edge 1.4 checkmark IoT Edge 1.4

Penting

IoT Edge 1.4 adalah rilis yang didukung Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Penyebaran otomatis dan penyebaran berlapis membantu Anda mengelola dan mengonfigurasi modul di banyak perangkat IoT Edge.

Azure IoT Edge memberikan dua cara untuk mengonfigurasi modul yang akan dijalankan pada perangkat IoT Edge. Metode pertama adalah menyebarkan modul berdasarkan per perangkat. Anda membuat manifes penyebaran lalu menerapkannya ke perangkat tertentu berdasarkan nama. Metode kedua adalah menyebarkan modul secara otomatis ke perangkat apa pun yang terdaftar yang memenuhi ketentuan tertentu. Anda membuat manifes penyebaran lalu menentukan perangkat mana yang diterapkannya berdasarkan tag di perangkat kembar.

Anda tidak dapat menggabungkan penyebaran per perangkat dan otomatis. Setelah Anda mulai menargetkan perangkat IoT Edge dengan penyebaran otomatis (dengan atau tanpa penyebaran berlapis), penyebaran per perangkat tidak lagi didukung.

Artikel ini berfokus pada konfigurasi dan pemantauan armada perangkat, yang secara kolektif disebut sebagai penyebaran otomatis IoT Edge.

Berikut langkah-langkah penyebaran dasar:

  1. Operator menentukan manifes penyebaran yang menjelaskan sekumpulan modul dan perangkat target.
  2. Akibatnya, layanan IoT Hub berkomunikasi dengan semua perangkat yang ditargetkan untuk mengonfigurasinya dengan modul yang dideklarasikan.
  3. Layanan Azure IoT Hub mengambil status dari perangkat IoT Edge dan menyediakannya untuk operator. Misalnya, operator dapat melihat kapan perangkat Azure Stack Edge gagal dikonfigurasi atau jika modul gagal selama runtime.
  4. Kapan saja, ketika perangkat IoT Edge yang baru ditargetkan online dan terhubung dengan IoT Hub, perangkat tersebut dikonfigurasi untuk penyebaran.

Artikel ini menjelaskan setiap komponen yang terlibat dalam proses konfigurasi dan pemantauan penyebaran. Untuk panduan tentang cara membuat dan memperbarui penyebaran, lihat Menerapkan dan memantau modul IoT Edge dalam skala besar.

Penyebaran

Penyebaran otomatis IoT Edge menetapkan gambar modul IoT Edge untuk dijalankan sebagai instans pada serangkaian perangkat IoT Edge yang ditargetkan. Penyebaran otomatis mengonfigurasi manifes penyebaran IoT Edge untuk menyertakan daftar modul dengan parameter inisialisasi yang sesuai. Penyebaran dapat ditetapkan ke satu perangkat (berdasarkan ID Perangkat) atau ke sekelompok perangkat (berdasarkan tag). Setelah perangkat IoT Edge menerima manifes penyebaran, perangkat ini mengunduh dan menginstal gambar kontainer dari repositori kontainer masing-masing, dan mengonfigurasinya dengan benar. Setelah penyebaran dibuat, operator dapat memantau status penyebaran untuk melihat apakah perangkat yang ditargetkan dikonfigurasi dengan benar.

Hanya perangkat IoT Edge yang dapat dikonfigurasi dengan penyebaran. Prasyarat berikut harus ada di perangkat sebelum dapat menerima penyebaran:

  • Sistem operasi dasar
  • Sistem manajemen kontainer, seperti Moby atau Docker
  • Penyediaan runtime IoT Edge

Manifes penyebaran

Manifes penyebaran adalah dokumen JSON yang menjelaskan modul yang akan dikonfigurasi pada perangkat IoT Edge yang ditargetkan. Manifest ini berisi metadata konfigurasi untuk semua modul, termasuk modul sistem yang diperlukan (khususnya agen IoT Edge dan hub IoT Edge).

Metadata konfigurasi untuk setiap modul meliputi:

  • Versi
  • Jenis
  • Status (misalnya, Berjalan atau Dihentikan)
  • Memulai ulang kebijakan
  • Registri gambar dan kontainer
  • Rute untuk input dan output data

Jika gambar modul disimpan dalam registri kontainer pribadi, agen IoT Edge memegang info masuk registri.

Kondisi target

Kondisi perangkat target terus dievaluasi sepanjang masa pakai penyebaran. Perangkat baru apa pun yang memenuhi persyaratan disertakan, dan perangkat yang ada yang tidak lagi memenuhi persyaratan akan dihapus. Penyebaran diaktifkan kembali jika layanan mendeteksi adanya perubahan kondisi target.

Misalnya, Anda memiliki penyebaran dengan kondisi tags.environment = 'prod'target . Saat Anda memulai penyebaran, ada 10 perangkat produksi. Modul berhasil diinstal di 10 perangkat ini. Status agen IoT Edge menunjukkan total 10 perangkat, 10 respons keberhasilan, 0 respons kegagalan, dan 0 respons tertunda. Sekarang Anda menambahkan lima perangkat lagi dengan tags.environment = 'prod'. Layanan mendeteksi perubahan dan status agen IoT Edge sekarang menunjukkan 15 total perangkat, 10 respons yang berhasil, 0 respons kegagalan, dan 5 respons tertunda saat disebarkan ke lima perangkat baru.

Jika penyebaran tidak memiliki kondisi target, penyebaran diterapkan ke perangkat apa pun.

Gunakan kondisi Boolean pada tag kembar perangkat, properti yang dilaporkan perangkat kembar, atau deviceld untuk memilih perangkat target. Jika Anda ingin menggunakan kondisi dengan tag, Anda perlu menambahkan "tags":{} bagian di perangkat kembar di bawah tingkat yang sama dengan properti. Untuk informasi selengkapnya tentang tag di perangkat kembar, lihat Memahami dan menggunakan perangkat kembar di IoT Hub. Untuk informasi selengkapnya tentang operasi kueri, lihat Operator bahasa kueri IoT Hub dan fungsi IS_DEFINED.

Contoh kondisi target:

  • deviceId ='linuxprod1'
  • tags.environment ='prod'
  • tags.environment = 'prod' AND tags.location = 'westus'
  • tags.environment = 'prod' OR tags.location = 'westus'
  • tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
  • properties.reported.devicemodel = '4000x'
  • IS_DEFINED(tags.remote)
  • NOT IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [tidak ada]

Pertimbangkan batasan ini saat Anda membangun kondisi target:

  • Di perangkat kembar, Anda hanya dapat membuat kondisi target menggunakan tag, properti yang dilaporkan, atau deviceId.
  • Kuotasi ganda tidak diperbolehkan di bagian mana pun pada kondisi target. Gunakan kuotasi tunggal.
  • Kuotasi tunggal menunjukkan nilai kondisi target. Oleh karena itu, Anda harus menghindari kuotasi tunggal dengan kuotasi tunggal lainnya jika bagian itu adalah bagian dari nama perangkat. Misalnya, untuk menargetkan perangkat yang disebut operator'sDevice, tulis deviceId='operator''sDevice'.
  • Angka, huruf, dan karakter berikut diperbolehkan dalam nilai kondisi target: "()<>@,;:\\"/?={} \t\n\r.
  • Karakter berikut tidak diizinkan dalam kunci kondisi target:/;.

Prioritas

Prioritas menentukan apakah penyebaran harus diterapkan ke perangkat yang ditargetkan relatif terhadap penyebaran lain. Prioritas penyebaran adalah bilangan bulat positif dalam rentang 0 hingga 2.147.483.647. Angka yang lebih besar menunjukkan prioritas yang lebih tinggi. Jika perangkat IoT Edge ditargetkan oleh lebih dari satu penyebaran, penyebaran dengan prioritas tertinggi berlaku. Penyebaran dengan prioritas yang lebih rendah tidak diterapkan, juga tidak digabungkan. Jika perangkat ditargetkan dengan dua penyebaran atau lebih dengan prioritas yang sama, penerapan yang terakhir dibuat (ditentukan berdasarkan tanda waktu pembuatan) berlaku.

Label

Label adalah pasangan kunci/nilai string yang dapat Anda gunakan untuk memfilter dan mengelompokkan penyebaran. Penyebaran mungkin memiliki beberapa label. Label bersifat opsional dan tidak memengaruhi konfigurasi perangkat IoT Edge.

Metrik

Secara default, semua penyebaran melaporkan empat metrik:

  • Ditargetkan menampilkan perangkat IoT Edge yang cocok dengan kondisi penargetan Penyebaran.
  • Diterapkan menunjukkan perangkat IoT Edge yang ditargetkan yang tidak ditargetkan oleh penyebaran lain dengan prioritas yang lebih tinggi.
  • Keberhasilan Pelaporan menunjukkan perangkat IoT Edge yang melaporkan modulnya sebagai berhasil disebarkan.
  • Kegagalan Pelaporan menunjukkan perangkat IoT Edge yang melaporkan satu atau beberapa modul seperti yang disebarkan tidak berhasil. Untuk menyelidiki kesalahan lebih lanjut, sambungkan ke perangkat tersebut dari jarak jauh dan lihat file log.

Selain itu, Anda dapat menentukan metrik kustom Anda sendiri untuk membantu memantau dan mengelola penyebaran.

Metrik memberikan jumlah ringkasan dari berbagai status yang mungkin dilaporkan kembali oleh perangkat sebagai akibat dari penerapan konfigurasi penyebaran. Metrik dapat meminta properti model edgeHub modul yang dilaporkan kembar, seperti lastDesiredStatus atau lastConnectTime.

Contohnya:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

Menambahkan metrik Anda sendiri bersifat opsional, dan tidak memengaruhi konfigurasi aktual perangkat IoT Edge.

Penyebaran berlapis

Penyebaran berlapis adalah penyebaran otomatis yang dapat digabungkan bersama untuk mengurangi jumlah penyebaran unik yang perlu dibuat. Penyebaran berlapis berguna dalam skenario di mana modul yang sama digunakan kembali dalam kombinasi yang berbeda di banyak penyebaran otomatis.

Penyebaran berlapis memiliki komponen dasar yang sama dengan penyebaran otomatis apa pun. Perangkat menargetkan perangkat berdasarkan tag di perangkat kembar dan menyediakan fungsionalitas yang sama di sekitar label, metrik, dan pelaporan status. Penyebaran berlapis juga memiliki prioritas yang ditetapkan untuk mereka. Alih-alih menggunakan prioritas untuk menentukan penyebaran mana yang diterapkan ke perangkat, prioritas menentukan bagaimana beberapa penyebaran diberi peringkat pada perangkat. Misalnya, jika dua penyebaran berlapis memiliki modul atau rute dengan nama yang sama, penyebaran berlapis dengan prioritas yang lebih tinggi akan diterapkan saat prioritas yang lebih rendah ditimpa.

Modul runtime sistem, yang dikenal sebagai edgeAgent dan edgeHub, tidak dikonfigurasi sebagai bagian dari penyebaran berlapis. Setiap perangkat IoT Edge yang ditargetkan oleh penyebaran berlapis, pertama-tama perlu penyebaran otomatis standar yang diterapkan padanya. Penyebaran otomatis menyediakan dasar di mana penyebaran berlapis dapat ditambahkan.

Perangkat IoT Edge dapat menerapkan satu dan hanya satu penyebaran otomatis standar, tetapi dapat menerapkan beberapa penyebaran otomatis berlapis. Setiap penyebaran berlapis yang menargetkan perangkat harus memiliki prioritas yang lebih tinggi dibanding penyebaran otomatis untuk perangkat tersebut.

Misalnya, pertimbangkan skenario berikut dari perusahaan yang mengelola bangunan. Perusahaan mengembangkan modul IoT Edge untuk mengumpulkan data dari kamera keamanan, sensor gerakan, dan lift. Namun, tidak semua bangunan mereka dapat menggunakan ketiga modul itu. Dengan penyebaran otomatis standar, perusahaan perlu membuat satu penyebaran individual untuk masing-masing kombinasi modul yang dibutuhkan bangunan mereka.

Screenshot of showing that standard automatic deployments need to accommodate every module combination.

Namun, setelah perusahaan beralih ke penyebaran otomatis berlapis, mereka dapat membuat kombinasi modul yang sama untuk bangunan mereka dengan lebih sedikit penyebaran untuk dikelola. Setiap modul memiliki penyebaran berlapis, dan tag perangkat mengidentifikasi modul mana yang ditambahkan ke setiap bangunan.

Screenshot that shows how layered automatic deployments simplify scenarios where the same modules are combined in different ways.

Konfigurasi modul kembar

Saat Anda menggunakan penyebaran berlapis, Anda dapat, dengan sengaja atau tidak, memiliki dua penyebaran dengan modul yang sama yang menargetkan perangkat. Dalam hal ini, Anda dapat memutuskan apakah penerapan prioritas yang lebih tinggi harus menimpa modul kembar atau menambahkannya. Misalnya, Anda mungkin memiliki penyebaran yang menerapkan modul yang sama ke 100 perangkat yang berbeda. Namun, 10 perangkat tersebut berada di fasilitas yang aman dan membutuhkan konfigurasi tambahan untuk berkomunikasi melalui server proxy. Anda dapat menggunakan penyebaran berlapis untuk menambahkan properti modul kembar yang memungkinkan 10 perangkat tersebut berkomunikasi dengan aman tanpa menimpa informasi kembar modul yang ada dari penyebaran dasar.

Anda dapat menambahkan properti modul kembar yang diinginkan dalam manifes penyebaran. Dalam penyebaran standar, Anda akan menambahkan properti di bagian properties.desired dari modul kembar. Tetapi dalam penyebaran berlapis, Anda dapat mendeklarasikan subset baru properti yang diinginkan.

Misalnya, dalam penyebaran standar, Anda dapat menambahkan modul sensor suhu yang disimulasikan dengan properti yang diinginkan berikut yang memberitahukan untuk mengirim data dalam interval 5 detik:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

Dalam penyebaran berlapis yang menargetkan beberapa atau semua perangkat yang sama ini, Anda dapat menambahkan properti yang memberi tahu sensor simulasi untuk mengirim 1000 pesan lalu berhenti. Anda tidak ingin menimpa properti yang sudah ada, sehingga Anda membuat bagian baru di dalam properti yang diinginkan yang disebut layeredProperties, yang berisi properti baru:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Perangkat yang memiliki kedua penyebaran yang diterapkan akan mencerminkan properti berikut dalam modul kembar untuk sensor suhu yang disimulasikan:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Jika Anda mengatur bidang modul kembar properties.desired dalam penyebaran berlapis, properties.desired akan menimpa properti yang diinginkan untuk modul tersebut dalam penyebaran prioritas yang lebih rendah.

Peluncuran bertahap

Peluncuran bertahap adalah proses keseluruhan di mana operator menyebarkan perubahan pada serangkaian perangkat IoT Edge yang meluas. Tujuannya adalah untuk membuat perubahan secara bertahap untuk mengurangi risiko membuat perubahan pemutusan skala luas. Penyebaran otomatis membantu mengelola peluncuran bertahap di seluruh armada perangkat IoT Edge.

Peluncuran bertahap dijalankan melalui fase dan langkah-langkah berikut:

  1. Bangun lingkungan pengujian perangkat IoT Edge dengan menyediakannya dan mengatur tag kembar perangkat seperti tag.environment='test'. Lingkungan pengujian harus mencerminkan lingkungan produksi yang pada akhirnya akan ditargetkan oleh penyebaran.
  2. Buat penyebaran termasuk modul dan konfigurasi yang diinginkan. Kondisi penargetan harus menargetkan lingkungan perangkat IoT Edge pengujian.
  3. Validasi konfigurasi modul baru di lingkungan pengujian.
  4. Perbarui penyebaran untuk menyertakan subset perangkat IoT Edge produksi dengan menambahkan tag baru ke kondisi penargetan. Selain itu, pastikan bahwa prioritas penyebaran lebih tinggi daripada penyebaran lain yang saat ini ditargetkan ke perangkat tersebut.
  5. Verifikasi bahwa penyebaran berhasil pada perangkat IoT Edge yang ditargetkan dengan melihat status penyebaran.
  6. Perbarui penyebaran untuk menargetkan semua perangkat IoT Edge produksi yang tersisa.

Pemulihan

Penyebaran dapat diputar kembali jika Anda menemui kesalahan atau kesalahan konfigurasi. Karena penyebaran mendefinisikan konfigurasi modul absolut untuk perangkat IoT Edge, penyebaran tambahan juga harus ditargetkan ke perangkat yang sama dengan prioritas yang lebih rendah bahkan jika tujuannya adalah untuk menghapus semua modul.

Menghapus penyebaran bukan berarti Anda dapat menghapus modul dari perangkat yang ditargetkan. Harus ada penyebaran lain yang menentukan konfigurasi baru untuk perangkat, bahkan dapat dilakukan dengan penyebaran kosong.

Namun, menghapus penyebaran dapat menghapus modul dari perangkat yang ditargetkan jika itu adalah penyebaran berlapis. Penyebaran berlapis memperbarui penyebaran yang mendasar, berpotensi menambahkan modul. Menghapus penyebaran berlapis akan menghapus pembaruannya ke penyebaran yang mendasar, yang berpotensi menghapus modul.

Misalnya, perangkat memiliki penyebaran dasar A dan penyebaran berlapis O dan M yang diterapkan ke dalamnya (sehingga penyebaran A, O, dan M disebarkan ke perangkat). Jika penyebaran berlapis M kemudian dihapus, A dan O diterapkan ke perangkat, dan modul yang unik untuk penyebaran M akan dihapus.

Lakukan pemutaran kembali menggunakan langkah-langkah berikut:

  1. Pastikan bahwa penyebaran kedua juga ditargetkan pada set perangkat yang sama. Jika tujuan pemutaran kembali adalah untuk menghapus semua modul, penyebaran kedua tidak boleh menyertakan modul apa pun.
  2. Ubah atau hapus ekspresi kondisi target dari penyebaran yang ingin Anda putar kembali sehingga perangkat tidak lagi memenuhi kondisi penargetan.
  3. Verifikasi bahwa pembatalan berhasil dilakukan dengan melihat status penyebaran.
    • Penyebaran yang diputar kembali seharusnya tidak lagi menampilkan status untuk perangkat yang diputar kembali.
    • Penyebaran kedua sekarang harus mencakup status penyebaran untuk perangkat yang diputar kembali.

Langkah berikutnya