Bersiaplah untuk menyebarkan solusi IoT Edge Anda dalam produksi

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Jika Anda siap untuk mengambil solusi IoT Edge Anda dari pengembangan ke produksi, pastikan solusi terkonfigurasi untuk performa yang sedang berlangsung.

Informasi yang diberikan dalam artikel ini tidak semuanya sama. Untuk membantu Anda memprioritaskan, setiap bagian dimulai dengan daftar yang membagi pekerjaan menjadi dua bagian: penting untuk diselesaikan sebelum melanjutkan ke produksi, bermanfaat, yang mana perlu Anda ketahui.

Konfigurasi perangkat

Perangkat IoT Edge dapat berupa apa saja mulai dari Raspberry Pi hingga laptop hingga komputer virtual yang berjalan di server. Anda mungkin memiliki akses ke perangkat baik secara fisik atau melalui koneksi virtual, atau mungkin diisolasi untuk jangka waktu yang lama. Bagaimanapun, Anda perlu memastikan bahwa ini telah dikonfigurasi agar berfungsi dengan tepat.

  • Penting

    • Menginstal sertifikat produksi
    • Memiliki rencana manajemen perangkat
    • Gunakan Moby sebagai mesin kontainer
  • Bermanfaat

    • Pilih protokol upstram

Menginstal sertifikat produksi

Setiap perangkat IoT Edge dalam produksi membutuhkan sertifikat otoritas sertifikat (CA) perangkat yang terpasang padanya. Sertifikat CA tersebut kemudian dideklarasikan ke runtime bahasa umum IoT Edge dalam file konfigurasi. Untuk skenario pengembangan dan pengujian, runtime bahasa umum IoT Edge membuat sertifikat sementara jika tidak ada sertifikat yang dideklarasikan dalam file konfigurasi. Namun, sertifikat sementara ini akan kedaluwarsa setelah tiga bulan dan tidak aman untuk skenario produksi. Untuk skenario produksi, Anda harus menyediakan sertifikat CA perangkat Anda sendiri, baik dari otoritas sertifikat yang ditandatangani sendiri atau dibeli dari otoritas sertifikat komersial.

Untuk memahami peran sertifikat CA perangkat, lihat Cara Azure IoT Edge menggunakan sertifikat.

Untuk informasi selengkapnya tentang cara memasang sertifikat di perangkat IoT Edge dan mereferensikannya dari file konfigurasi, lihat Kelola sertifikat pada perangkat IoT Edge.

Memiliki rencana manajemen perangkat

Sebelum menyertakan perangkat apa pun dalam produksi, Anda harus tahu cara Anda akan mengelola pembaruan di masa mendatang. Untuk perangkat IoT Edge, daftar komponen yang akan diperbarui meliputi:

  • Firmware perangkat
  • Pustaka sistem operasi
  • Mesin kontainer, seperti Moby
  • IoT Edge
  • Sertifikat CA

Device Update for IoT Hub adalah layanan yang memungkinkan Anda menyebarkan pembaruan over-the-air (OTA) untuk perangkat IoT Edge Anda.

Metode alternatif untuk memperbarui IoT Edge memerlukan akses fisik atau SSH ke perangkat IoT Edge. Untuk informasi selengkapnya, lihat Perbarui runtime bahasa umum IoT Edge. Untuk memperbarui beberapa perangkat, pertimbangkan untuk menambahkan langkah-langkah pembaruan ke skrip atau menggunakan alat otomatisasi seperti Ansible.

Gunakan Moby sebagai mesin kontainer

Mesin kontainer adalah prasyarat untuk perangkat IoT Edge apa pun. Hanya mesin moby yang didukung dalam produksi. Mesin kontainer lainnya, seperti Docker, berfungsi dengan IoT Edge dan tidak masalah untuk menggunakan mesin ini dalam pengembangan. Mesin moby dapat didistribusikan kembali saat digunakan dengan Azure IoT Edge, dan Microsoft menyediakan layanan untuk mesin ini.

Pilih protokol upstram

Anda dapat mengonfigurasi protokol (yang menentukan port yang digunakan) untuk komunikasi upstram ke IoT Hub untuk agen IoT Edge dan hub IoT Edge. Protokol defaultnya adalah AMQP, tetapi Anda mungkin ingin mengubahnya tergantung pada pengaturan jaringan.

Kedua modul runtime bahasa umum memiliki variabel lingkungan UpstreamProtocol. Nilai yang valid untuk variabel adalah:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Konfigurasikan variabel UpstreamProtocol untuk agen IoT Edge dalam file konfigurasi pada perangkat itu sendiri. Misalnya, jika perangkat IoT Edge Anda berada di belakang server proksi yang memblokir port AMQP, Anda mungkin perlu mengonfigurasi agen IoT Edge untuk menggunakan AMQP melalui WebSocket (AMQPWS) agar dapat membangun koneksi awal ke IoT Hub.

Setelah perangkat IoT Edge Anda tersambung, pastikan untuk terus mengonfigurasi variabel UpstreamProtocol untuk kedua modul runtime bahasa umum dalam penyebaran di masa mendatang. Contoh proses ini tersedia dalam Konfigurasikan perangkat IoT Edge untuk berkomunikasi melalui server proksi.

Penyebaran

  • Bermanfaat
    • Konsisten dengan protokol upstram
    • Siapkan penyimpanan host untuk modul sistem
    • Kurangi ruang memori yang digunakan oleh hub IoT Edge
    • Gunakan gambar modul yang benar dalam manifes penyebaran
    • Perhatikan batas ukuran kembar saat menggunakan modul kustom
    • Mengonfigurasi cara pembaruan modul diterapkan

Konsisten dengan protokol upstram

Jika Anda mengonfigurasi agen IoT Edge pada perangkat IoT Edge Anda untuk menggunakan protokol lain dari AMQP default, maka Anda harus mendeklarasikan protokol yang sama di semua penyebaran di masa mendatang. Misalnya, jika perangkat IoT Edge Anda berada di belakang server proksi yang memblokir port AMQP, Anda mungkin mengonfigurasi perangkat agar terhubung melalui AMQP melalui WebSocket (AMQPWS). Saat Anda menyebarkan modul ke perangkat, konfigurasikan protokol AMQPWS yang sama untuk agen IoT Edge dan hub IoT Edge, atau AMQP default akan mengambil alih pengaturan dan mencegah Anda tersambung lagi.

Anda hanya perlu mengonfigurasi variabel lingkungan UpstreamProtocol untuk agen IoT Edge dan modul hub IoT Edge. Setiap modul tambahan mengadopsi protokol mana pun yang diatur dalam modul runtime bahasa umum.

Contoh proses ini tersedia dalam Konfigurasikan perangkat IoT Edge untuk berkomunikasi melalui server proksi.

Siapkan penyimpanan host untuk modul sistem

Modul agen dan hub IoT Edge menggunakan penyimpanan lokal untuk menjaga status dan mengaktifkan pesan antara modul, perangkat, dan cloud. Demi keandalan dan performa yang lebih baik, konfigurasikan modul sistem untuk menggunakan penyimpanan pada sistem file host.

Untuk informasi selengkapnya, lihat Penyimpanan host untuk modul sistem.

Kurangi ruang memori yang digunakan oleh hub IoT Edge

Jika Anda menyebarkan perangkat yang dibatasi dengan memori terbatas yang tersedia, Anda dapat mengonfigurasi hub IoT Edge agar berjalan dalam kapasitas yang lebih efisien dan menggunakan lebih sedikit ruang disk. Konfigurasi ini membatasi performa hub IoT Edge, jadi temukan keseimbangan yang tepat yang berfungsi untuk solusi Anda.

Jangan optimalkan untuk performa pada perangkat yang dibatasi

Hub IoT Edge dioptimalkan untuk performa secara default, sehingga hub berupaya mengalokasikan potongan memori yang besar. Konfigurasi ini dapat menyebabkan masalah stabilitas pada perangkat yang lebih kecil seperti Raspberry Pi. Jika Anda menyebarkan perangkat dengan sumber daya yang dibatasi, Anda mungkin perlu mengatur variabel lingkungan OptimizeForPerformance menjadi salah pada hub IoT Edge.

Jika OptimizeForPerformance diatur ke benar, kepala protokol MQTT menggunakan PooledByteBufferAllocator, yang memiliki performa lebih baik namun mengalokasikan lebih banyak memori. Pengalokasi tersebut tidak berfungsi dengan baik pada sistem operasi 32-bit atau pada perangkat dengan memori rendah. Selain itu, jika dioptimalkan untuk performa, RocksDb mengalokasikan lebih banyak memori untuk perannya sebagai penyedia penyimpanan lokal.

Untuk informasi selengkapnya, lihat Masalah stabilitas pada perangkat yang lebih kecil.

Nonaktifkan protokol yang tidak digunakan

Cara lain untuk mengoptimalkan performa hub IoT Edge dan mengurangi penggunaan memorinya adalah dengan menonaktifkan kepala protokol untuk setiap protokol yang tidak Anda gunakan dalam solusi.

Kepala protokol dikonfigurasi dengan mengatur variabel lingkungan boolean untuk modul hub IoT Edge dalam manifes penyebaran Anda. Tiga variabel tersebut adalah:

  • amqpSettings__enabled
  • mqttSettings__enabled
  • httpSettings__enabled

Ketiga variabel memiliki dua garis bawah dan dapat diatur ke benar atau salah.

Kurangi waktu penyimpanan untuk pesan

Modul hub IoT Edge menyimpan pesan untuk sementara jika tidak dapat dikirim ke IoT Hub karena alasan apa pun. Anda dapat mengonfigurasi durasi hub IoT Edge menyimpan pesan yang tidak terkirim sebelum membiarkannya kedaluwarsa. Jika Anda memiliki masalah memori di perangkat, Anda dapat menurunkan nilai timeToLiveSecs di kembaran modul hub IoT Edge.

Nilai default parameter timeToLiveSecs adalah 7200 detik, yaitu dua jam.

Gunakan gambar modul yang benar dalam manifes penyebaran

Jika gambar modul kosong atau salah digunakan, agen Edge mencoba kembali memuat gambar, yang menyebabkan lalu lintas tambahan dihasilkan. Tambahkan gambar yang benar ke manifes penyebaran untuk menghindari menghasilkan lalu lintas yang tidak perlu.

Jangan gunakan versi debug gambar modul

Saat berpindah dari skenario pengujian ke skenario produksi, ingatlah untuk menghapus konfigurasi debug dari manifes penyebaran. Periksa apakah tidak ada gambar modul dalam manifes penyebaran yang memiliki akhiran .debug . Jika Anda menambahkan opsi pembuatan untuk mengekspos port dalam modul untuk debugging, hapus opsi pembuatan tersebut juga.

Perhatikan batas ukuran kembar saat menggunakan modul kustom

Manifes penyebaran yang berisi modul kustom adalah bagian dari kembar EdgeAgent. Tinjau batasan pada ukuran kembar modul.

Jika Anda menyebarkan sejumlah besar modul, Anda mungkin menghabiskan batas ukuran kembar ini. Pertimbangkan beberapa mitigasi umum untuk batas keras ini:

  • Simpan konfigurasi apa pun di kembar modul kustom, yang memiliki batasnya sendiri.
  • Simpan beberapa konfigurasi yang menunjuk ke lokasi yang tidak terbatas ruang (yaitu, ke penyimpanan blob).

Mengonfigurasi cara pembaruan modul diterapkan

Saat penyebaran diperbarui, Edge Agent menerima konfigurasi baru sebagai pembaruan kembar. Jika konfigurasi baru memiliki gambar modul baru atau yang diperbarui, secara default, Agen Edge secara berurutan memproses setiap modul:

  1. Gambar yang diperbarui diunduh
  2. Modul yang sedang berjalan dihentikan
  3. Instans modul baru dimulai
  4. Pembaruan modul berikutnya diproses

Dalam beberapa kasus, misalnya ketika dependensi ada di antara modul, mungkin diinginkan untuk terlebih dahulu mengunduh semua gambar modul yang diperbarui sebelum memulai ulang modul yang sedang berjalan. Perilaku pembaruan modul ini dapat dikonfigurasi dengan mengatur variabel ModuleUpdateMode lingkungan Agen IoT Edge ke nilai WaitForAllPullsstring . Untuk informasi selengkapnya, lihat Variabel Lingkungan IoT Edge.

"modulesContent": {
    "$edgeAgent": {
        "properties.desired": {
            ...
            "systemModules": {
                "edgeAgent": {
                    "env": {
                        "ModuleUpdateMode": {
                            "value": "WaitForAllPulls"
                        }
                    ...

Pengelolaan kontainer

  • Penting
    • gunakan tag untuk mengelola versi
    • Kelola volume
  • Bermanfaat
    • simpan kontainer runtime bahasa umum dalam registri privat Anda
    • Mengonfigurasi pengumpulan sampah gambar

gunakan tag untuk mengelola versi

Tag adalah konsep docker yang dapat Anda gunakan untuk membedakan antara versi kontainer docker. Tag adalah akhiran seperti 1,5 yang berada di akhir repositori kontainer. Misalnya, mcr.microsoft.com/azureiotedge-agent:1.5. Tag dapat diubah dan dapat diganti agar mengarah ke kontainer lain kapan pun, sehingga tim Anda perlu menyetujui konvensi untuk diikuti saat Anda memperbarui gambar modul Anda.

Tag juga membantu Anda memberlakukan pembaruan pada perangkat IoT Edge Anda. Saat Anda mendorong versi modul yang diperbarui ke registri kontainer Anda, buat tahapan tag. Kemudian, dorong penyebaran baru ke perangkat Anda dengan tag yang bertahap. Mesin kontainer akan mengenali tag yang bertahap sebagai versi baru dan akan menarik versi modul terbaru ke perangkat Anda.

Tag untuk runtime bahasa umum{i>

Gambar hub IoT Edge dan agen IoT Edge ditandai dengan versi IoT Edge yang terkait dengannya. Ada dua cara berbeda untuk menggunakan tag dengan gambar runtime bahasa umum:

  • Tag bergulir - Gunakan hanya dua nilai pertama dari nomor versi untuk mendapatkan gambar terbaru yang cocok dengan digit tersebut. Misalnya, 1.5 diperbarui setiap kali ada rilis baru untuk menunjuk ke versi 1.5.x terbaru. Jika runtime bahasa umum kontainer pada perangkat IoT Edge Anda menarik gambar lagi, modul runtime bahasa umum diperbarui ke versi terbaru. Penyebaran dari portal Microsoft Azure default ke tag bergulir. Pendekatan ini disarankan untuk tujuan pengembangan.

  • Tag tertentu - Gunakan ketiga nilai nomor versi untuk mengatur versi gambar secara eksplisit. Misalnya, 1.5.0 tidak akan berubah setelah rilis awal. Anda dapat mendeklarasikan nomor versi baru dalam manifes penyebaran saat Anda siap untuk memperbarui. Pendekatan ini disarankan untuk keperluan produksi.

Kelola volume

IoT Edge tidak menghapus volume yang terpasang pada kontainer modul. Perilaku ini adalah bagian rencana, karena memungkinkan mempertahankan data di seluruh instans kontainer seperti skenario peningkatan. Namun, jika volume ini dibiarkan tidak digunakan, maka dapat menyebabkan kelelahan ruang disk dan kesalahan sistem berikutnya. Jika Anda menggunakan volume docker dalam skenario Anda, maka kami mendorong Anda untuk menggunakan alat docker seperti pangkas volume docker dan rm volume docker untuk menghapus volume yang tidak digunakan, terutama untuk skenario produksi.

simpan kontainer runtime bahasa umum dalam registri privat Anda

Anda tahu cara menyimpan gambar kontainer untuk modul kode kustom di registri Azure privat Anda, tetapi Anda juga dapat menggunakannya untuk menyimpan gambar kontainer publik seperti modul runtime edgeAgent dan edgeHub . Hal ini mungkin diperlukan jika Anda memiliki batasan firewall yang sangat ketat karena kontainer runtime ini disimpan di Microsoft Container Registry (MCR).

Langkah-langkah berikut mengilustrasikan cara menarik gambar Docker edgeAgent dan edgeHub ke komputer lokal Anda, memasukkannya kembali, mendorongnya ke registri privat Anda, lalu memperbarui file konfigurasi Anda sehingga perangkat Anda tahu untuk menarik gambar dari registri privat Anda.

  1. Tarik gambar EdgeAgent Docker dari registri Microsoft. Perbarui nomor versi jika diperlukan.

    # Pull edgeAgent image
    docker pull mcr.microsoft.com/azureiotedge-agent:1.5
    
    # Pull edgeHub image
    docker pull mcr.microsoft.com/azureiotedge-hub:1.5
    
  2. Cantumkan semua gambar Docker Anda, temukan gambar edgeAgent dan edgeHub , lalu salin ID gambar mereka.

    docker images
    
  3. Masukkan kembali gambar edgeAgent dan edgeHub Anda. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    # Retag your edgeAgent image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-agent:1.5
    
    # Retag your edgeHub image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.5
    
  4. Dorong gambar edgeAgent dan edgeHub Anda ke registri privat Anda. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    # Push your edgeAgent image to your private registry
    docker push <registry-name/server>/azureiotedge-agent:1.5
    
    # Push your edgeHub image to your private registry
    docker push <registry-name/server>/azureiotedge-hub:1.5
    
  5. Perbarui referensi gambar dalam file deployment.template.json untuk modul sistem edgeAgent dan edgeHub , dengan mengganti mcr.microsoft.com dengan "registry-name/server" Anda sendiri untuk kedua modul.

  6. Buka editor teks di perangkat IoT Edge Anda untuk mengubah file konfigurasi sehingga tahu tentang gambar registri privat Anda.

    sudo nano /etc/aziot/config.toml
    
  7. Di editor teks, ubah nilai gambar Anda di bawah [agent.config]. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.5"
    
  8. Jika registri privat Anda memerlukan autentikasi, atur parameter autentikasi di [agent.config.auth].

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. Simpan perubahan Anda dan keluar dari editor teks Anda.

  10. Terapkan perubahan konfigurasi IoT Edge.

    sudo iotedge config apply
    

    Runtime IoT Edge Anda dimulai ulang.

Untuk informasi selengkapnya, lihat:

Mengonfigurasi pengumpulan sampah gambar

Pengumpulan sampah gambar adalah fitur di IoT Edge v1.4 dan yang lebih baru untuk membersihkan gambar Docker secara otomatis yang tidak lagi digunakan oleh modul IoT Edge. Ini hanya menghapus gambar Docker yang ditarik oleh runtime IoT Edge sebagai bagian dari penyebaran. Menghapus gambar Docker yang tidak digunakan membantu menghemat ruang disk.

Fitur ini diimplementasikan dalam komponen host IoT Edge, aziot-edged layanan dan diaktifkan secara default. Pembersihan dilakukan setiap hari pada tengah malam (waktu lokal perangkat) dan menghapus gambar Docker yang tidak digunakan yang terakhir digunakan tujuh hari yang lalu. Parameter untuk mengontrol perilaku pembersihan diatur di config.toml dan dijelaskan nanti di bagian ini. Jika parameter tidak ditentukan dalam file konfigurasi, nilai default akan diterapkan.

Misalnya, berikut ini adalah config.toml bagian pengumpulan sampah gambar menggunakan nilai default:

[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d" 
cleanup_time = "00:00"

Tabel berikut menjelaskan parameter pengumpulan sampah gambar. Semua parameter bersifat opsional dan dapat diatur satu per satu untuk mengubah pengaturan default.

Parameter Deskripsi Wajib diisi Nilai default
enabled Mengaktifkan pengumpulan sampah gambar. Anda dapat memilih untuk menonaktifkan fitur dengan mengubah pengaturan ini ke false. Opsional benar
cleanup_recurrence Mengontrol frekuensi pengulangan tugas pembersihan. Harus ditentukan sebagai beberapa hari dan tidak boleh kurang dari satu hari.

Misalnya: 1d, 2d, 6d, dll.
Opsional 1d
image_age_cleanup_threshold Menentukan ambang batas usia minimum gambar yang tidak digunakan sebelum mempertimbangkan untuk pembersihan dan harus ditentukan dalam hari. Anda dapat menentukan sebagai 0d untuk membersihkan gambar segera setelah dihapus dari penyebaran.

Gambar dianggap tidak digunakan setelah dihapus dari penyebaran.
Opsional 7h terakhir
cleanup_time Waktu hari, di waktu lokal perangkat, saat tugas pembersihan berjalan. Harus dalam format HH:MM 24 jam. Opsional 00:00

Jaringan

  • Bermanfaat
    • Tinjau konfigurasi keluar/masuk
    • Izinkan koneksi dari perangkat IoT Edge
    • Konfigurasikan komunikasi melalui proksi
    • Mengatur server DNS dalam pengaturan mesin kontainer

Tinjau konfigurasi keluar/masuk

Saluran komunikasi antara Azure IoT Hub dan IoT Edge selalu dikonfigurasi untuk keluar. Untuk sebagian besar skenario IoT Edge, hanya tiga koneksi yang diperlukan. Mesin kontainer perlu tersambung dengan registri kontainer (atau registri) yang menyimpan gambar modul. Runtime bahasa umum IoT Edge perlu tersambung dengan IoT Hub untuk mengambil informasi konfigurasi perangkat, serta untuk mengirim pesan dan telemetri. Dan jika Anda menggunakan provisi otomatis, IoT Edge perlu tersambung ke Layanan Provisi Perangkat. Untuk informasi selengkapnya, lihat Firewall dan aturan konfigurasi port.

Izinkan koneksi dari perangkat IoT Edge

Jika penyiapan jaringan mewajibkan agar Anda secara eksplisit mengizinkan koneksi yang dibuat dari perangkat IoT Edge, tinjau daftar komponen IoT Edge berikut ini:

  • Agen IoT Edge membuka koneksi AMQP / MQTT persisten ke IoT Hub, kemungkinan melalui WebSockets.
  • Hub IoT Edge membuka satu koneksi AMQP persisten atau beberapa koneksi MQTT ke IoT Hub, kemungkinan melalui WebSocket.
  • Layanan IoT Edge melakukan panggilan HTTPS terputus-terputus ke IoT Hub.

Dalam ketiga kasus, nama domain yang sepenuhnya memenuhi syarat (FQDN) akan cocok dengan pola \*.azure-devices.net.

Registri kontainer

Mesin Kontainer melakukan panggilan ke registri kontainer melalui HTTPS. Untuk mengambil gambar kontainer runtime IoT Edge, FQDN adalah mcr.microsoft.com. Mesin kontainer tersambung ke registri lain seperti yang dikonfigurasi dalam penyebaran.

Daftar periksa ini adalah titik awal untuk aturan firewall:

FQDN (* = kartubebas) Port TCP Keluar Penggunaan
mcr.microsoft.com 443 Microsoft Container Registry
*.data.mcr.microsoft.com 443 Titik akhir data yang menyediakan pengiriman konten
*.cdn.azcr.io 443 Menyebarkan modul dari Marketplace ke perangkat
global.azure-devices-provisioning.net 443 Akses Device Provisioning Service (opsional)
*.azurecr.io 443 Registri kontainer pribadi dan pihak ketiga
*.blob.core.windows.net 443 Unduh delta gambar Azure Container Registry dari penyimpanan blob
*.azure-devices.net 5671, 8883, 4431 Akses IoT Hub
*.docker.io 443 Akses Hub Docker (opsional)

1Buka port 8883 untuk MQTT aman atau port 5671 untuk AMQP yang aman. Jika Anda hanya dapat membuat koneksi melalui port 443 maka salah satu protokol ini dapat dijalankan melalui terowongan WebSocket.

Karena alamat IP hub IoT dapat berubah tanpa pemberitahuan, selalu gunakan FQDN untuk mengizinkan konfigurasi. Untuk mempelajari lebih lanjut, lihat Memahami alamat IP IoT Hub Anda.

Beberapa aturan firewall ini diwarisi dari Azure Container Registry. Untuk informasi selengkapnya, lihat Konfigurasikan aturan untuk mengakses registri kontainer Azure di balik firewall.

Anda dapat mengaktifkan titik akhir data khusus di registri Azure Container Anda untuk menghindari daftar kartubebas yang diizinkan dari *.blob.core.windows.net FQDN. Untuk informasi selengkapnya, lihat Mengaktifkan titik akhir data khusus.

Catatan

Untuk menyediakan FQDN yang konsisten antara REST dan titik akhir data, mulai 15 Juni 2020 titik akhir data Microsoft Container Registry akan berubah dari *.cdn.mscr.io menjadi *.data.mcr.microsoft.com
Untuk informasi selengkapnya, lihat Konfigurasi aturan firewall klien Microsoft Container Registry

Jika Anda tidak ingin mengonfigurasi firewall Anda untuk mengizinkan akses ke registri kontainer publik, Anda dapat menyimpan gambar di registri kontainer privat Anda, seperti yang dijelaskan dalam Menyimpan kontainer runtime bahasa umum di registri privat Anda.

Azure IoT Identity Service

IoT Identity Service menyediakan provisi dan layanan kriptografi untuk perangkat Azure IoT. Layanan identitas memeriksa apakah versi yang diinstal adalah versi terbaru. Pemeriksaan menggunakan FQDN berikut untuk memverifikasi versi.

FQDN Port TCP Keluar Penggunaan
aka.ms 443 URL Vanity yang menyediakan pengalihan ke file versi
raw.githubusercontent.com 443 File versi layanan identitas yang dihosting di GitHub

Konfigurasikan komunikasi melalui proksi

Jika perangkat Anda akan digunakan pada jaringan yang menggunakan server proksi, perangkat ini harus dapat berkomunikasi melalui proksi untuk menjangkau IoT Hub dan registri kontainer. Untuk informasi selengkapnya, lihat Mengkonfigurasi perangkat Azure IoT Edge untuk berkomunikasi melalui server proksi.

Mengatur server DNS dalam pengaturan mesin kontainer

Tentukan server DNS untuk lingkungan Anda di pengaturan mesin kontainer. Pengaturan server DNS berlaku untuk semua modul kontainer yang dimulai oleh mesin.

  1. /etc/docker Di direktori di perangkat Anda, edit daemon.json file. Buat file jika tidak ada.

  2. Tambahkan kunci dns dan atur alamat server DNS ke layanan DNS yang dapat diakses publik. Jika perangkat edge Anda tidak dapat mengakses server DNS publik, gunakan alamat server DNS yang dapat diakses di jaringan Anda. Contohnya:

    {
        "dns": ["1.1.1.1"]
    }
    

Manajemen solusi

  • Bermanfaat
    • Siapkan log dan diagnostik
    • Menyiapkan driver pengelogan default
    • Pertimbangkan pengujian dan alur CI/CD

Siapkan log dan diagnostik

Di Linux, daemon IoT Edge menggunakan jurnal sebagai driver pencatatan log default. Anda dapat menggunakan alat baris perintah journalctl untuk melakukan kueri log daemon.

Dimulai dari versi 1.2, IoT Edge mengandalkan beberapa daemon. Meskipun setiap log daemon dapat dikueri secara individual dengan journalctl, perintah iotedge system menyediakan cara yang mudah untuk membuat kueri log gabungan.

  • Perintah iotedge konsolidasi:

    sudo iotedge system logs
    
  • Perintah journalctl yang setara:

    journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
    

Saat menguji penyebaran IoT Edge, Anda biasanya dapat mengakses perangkat untuk mengambil log dan memecahkan masalah. Dalam skenario penyebaran, Anda mungkin tidak memiliki opsi tersebut. Pertimbangkan bagaimana Anda akan mengumpulkan informasi tentang perangkat Anda dalam produksi. Salah satu opsinya adalah menggunakan modul pengelogan yang mengumpulkan informasi dari modul lain dan mengirimkannya ke cloud. Salah satu contoh modul pencatatan log adalah logspout-loganalytics, atau Anda dapat merancang sendiri.

Menyiapkan driver pengelogan default

Secara default, mesin kontainer Moby tidak mengatur batas ukuran log kontainer. Seiring waktu, hal ini dapat menyebabkan perangkat terisi dengan log dan kehabisan ruang disk. Konfigurasikan mesin kontainer Anda untuk menggunakan driver pengelogan local sebagai mekanisme pengelogan Anda. Local driver pengelogan menawarkan batas ukuran log default, melakukan rotasi log secara default, dan menggunakan format file yang lebih efisien yang membantu mencegah kelelahan ruang disk. Anda juga dapat memilih untuk menggunakan driver pengelogan yang berbeda dan menetapkan batas ukuran yang berbeda berdasarkan kebutuhan Anda.

Opsi: Mengonfigurasi driver pengelogan default untuk semua modul kontainer

Anda dapat mengonfigurasi mesin kontainer Anda untuk menggunakan driver pengelogan log driver tertentu dengan mengatur nilai ke nama driver log di daemon.json. Contoh berikut mengatur driver pengelogan default ke local driver log (disarankan).

{
    "log-driver": "local"
}

Anda juga dapat mengonfigurasi log-opts kunci untuk menggunakan nilai yang sesuai dalam daemon.json file. Contoh berikut mengatur driver log ke local dan mengatur max-size opsi dan max-file .

{
    "log-driver": "local",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}

Tambahkan (atau sertakan) informasi ini ke file bernama daemon.json dan letakkan di lokasi berikut:

  • /etc/docker/

Mesin kontainer harus dimulai ulang agar perubahan diterapkan.

Opsi: Sesuaikan pengaturan log untuk setiap modul kontainer

Anda dapat melakukannya di createOptions pada setiap modul. Contohnya:

"createOptions": {
    "HostConfig": {
        "LogConfig": {
            "Type": "local",
            "Config": {
                "max-size": "10m",
                "max-file": "3"
            }
        }
    }
}

Opsi tambahan pada sistem Linux

  • Konfigurasikan mesin kontainer untuk mengirim log ke systemdjurnal dengan mengatur journald sebagai driver pengelogan default.

  • Hapus log lama secara berkala dari perangkat Anda dengan memasang alat logrotate. Gunakan spesifikasi file berikut:

    /var/lib/docker/containers/*/*-json.log{
         copytruncate
         daily
         rotate7
         delaycompress
         compress
         notifempty
         missingok
    }
    

Pertimbangkan pengujian dan alur CI/CD

Untuk skenario penyebaran IoT Edge yang paling efisien, pertimbangkan untuk mengintegrasikan penyebaran produksi Anda ke dalam pengujian dan pipeline CI/CD Anda. Azure IoT Edge mendukung beberapa platform CI/CD, termasuk Azure DevOps. Untuk informasi selengkapnya, lihat Integrasi dan penyebaran berkelanjutan ke Azure IoT Edge.

Pertimbangan keamanan

  • Penting
    • Kelola akses ke registri kontainer Anda
    • Membatasi akses kontainer ke sumber daya host

Kelola akses ke registri kontainer Anda

Sebelum menerapkan modul untuk produksi perangkat IoT Edge, pastikan Anda mengontrol akses ke registri kontainer Anda sehingga orang luar tidak dapat mengakses atau melakukan perubahan pada gambar kontainer Anda. Gunakan registri kontainer privat untuk mengelola citra kontainer.

Dalam tutorial dan dokumentasi lainnya, kami menginstruksikan Anda untuk menggunakan informasi masuk registri kontainer yang sama pada perangkat IoT Edge Anda seperti yang Anda gunakan pada mesin pengembangan Anda. Instruksi ini hanya ditujukan untuk membantu Anda mengatur lingkungan pengujian dan pengembangan dengan lebih mudah, dan tidak boleh diikuti dalam skenario produksi.

Untuk akses yang lebih aman ke registri, Anda memiliki pilihan opsi autentikasi. Autentikasi yang populer dan direkomendasikan adalah menggunakan perwakilan layanan Direktori Aktif yang sangat cocok untuk aplikasi atau layanan untuk menarik gambar kontainer secara otomatis atau tanpa pengawasan (headless), seperti yang dilakukan perangkat IoT Edge. Pilihan lain adalah menggunakan token yang dicakup repositori, yang memungkinkan Anda membuat identitas panjang atau pendek yang hanya ada di Azure Container Registry tempat mereka diciptakan dan akses cakupan ke tingkat repositori.

Untuk membuat perwakilan layanan, jalankan dua skrip seperti yang dijelaskan dalam membuat perwakilan layanan. Skrip ini melakukan tugas berikut:

  • Skrip pertama membuat perwakilan layanan. Ini akan menghasilkan ID perwakilan layanan dan kata sandi Perwakilan layanan. Simpan nilai ini dengan aman dalam rekaman Anda.

  • Skrip kedua membuat penetapan peran untuk diberikan kepada perwakilan layanan, yang dapat dijalankan selanjutnya jika diperlukan. Sebaiknya terapkan peran pengguna acrPull untuk parameter role. Untuk daftar peran, lihat Peran dan izin Azure Container Registry.

Untuk mengautentikasi menggunakan perwakilan layanan, masukkan ID dan kata sandi perwakilan layanan yang Anda peroleh dari skrip pertama. Tentukan informasi masuk ini dalam manifes penyebaran.

  • Untuk nama pengguna atau ID klien, tentukan ID perwakilan layanan.

  • Untuk kata sandi atau rahasia klien, tentukan kata sandi perwakilan layanan.


Untuk membuat token yang dicakup repositori, ikuti membuat token yang dicakup repositori.

Untuk mengautentikasi menggunakan token yang dicakup repositori, berikan nama token dan kata sandi yang Anda peroleh setelah membuat token yang dicakup repositori Anda. Tentukan informasi masuk ini dalam manifes penyebaran.

  • Untuk nama pengguna, tentukan nama pengguna token.

  • Untuk kata sandi, tentukan salah satu kata sandi token.

Catatan

Setelah menerapkan autentikasi keamanan yang ditingkatkan, nonaktifkan pengaturan Pengguna admin sehingga akses nama pengguna/kata sandi default tidak lagi tersedia. Dalam registri kontainer Anda di portal Microsoft Azure, dari menu panel kiri pada Pengaturan, pilih Kunci Akses.

Membatasi akses kontainer ke sumber daya host

Untuk menyeimbangkan sumber daya host bersama di seluruh modul, kami sarankan untuk membatasi konsumsi sumber daya per modul. Batasan ini memastikan bahwa satu modul tidak dapat mengkonsumsi terlalu banyak memori atau penggunaan CPU dan mencegah proses lain berjalan pada perangkat. Platform IoT Edge tidak membatasi sumber daya untuk modul secara default, karena untuk mengetahui berapa banyak sumber daya yang dibutuhkan modul tertentu untuk berjalan secara optimal memerlukan pengujian.

Docker memberikan beberapa batasan yang dapat Anda gunakan untuk membatasi sumber daya seperti memori dan penggunaan CPU. Untuk informasi selengkapnya, lihat Opsi runtime dengan memori, CPU, dan GPU.

Batasan ini dapat diterapkan pada modul individu dengan menggunakan opsi buat dalam manifes penyebaran. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.

Langkah berikutnya