Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: IoT Edge 1.5
Penting
IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.
Saat Anda siap untuk mengambil solusi IoT Edge dari pengembangan ke produksi, pastikan solusi tersebut dikonfigurasi untuk performa yang sedang berlangsung.
Tidak semua informasi dalam artikel ini sama pentingnya. Untuk membantu Anda memprioritaskan, setiap bagian dimulai dengan daftar yang membagi pekerjaan menjadi dua grup: penting untuk diselesaikan sebelum pergi ke produksi, atau berguna untuk diketahui.
Konfigurasi perangkat
Perangkat IoT Edge bisa apa saja dari Raspberry Pi hingga laptop atau komputer virtual yang berjalan di server. Anda dapat mengakses perangkat secara fisik atau melalui koneksi virtual, atau dapat diisolasi untuk jangka waktu yang lama. Bagaimanapun, pastikan dikonfigurasi agar berfungsi dengan tepat.
Penting
- Menginstal sertifikat produksi
- Memiliki rencana manajemen perangkat
- Menggunakan Moby sebagai mesin kontainer. Jika Anda menggunakan snap Ubuntu Core, snap Docker dilayankan oleh Canonical dan didukung untuk skenario produksi.
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 dinyatakan ke runtime IoT Edge dalam file konfigurasi. Untuk pengembangan dan pengujian, runtime IoT Edge membuat sertifikat sementara jika tidak ada sertifikat yang dideklarasikan dalam file konfigurasi. Tetapi sertifikat sementara ini kedaluwarsa setelah tiga bulan dan tidak aman untuk skenario produksi. Untuk skenario produksi, berikan sertifikat CA Edge Anda sendiri, baik dari otoritas sertifikat yang ditandatangani sendiri atau yang dibeli dari otoritas sertifikat komersial.
Untuk memahami peran sertifikat CA Edge, lihat Cara Azure IoT Edge menggunakan sertifikat.
Untuk informasi selengkapnya tentang menginstal sertifikat pada perangkat IoT Edge dan merujuknya dari file konfigurasi, lihat Mengelola sertifikat pada perangkat IoT Edge.
Memiliki rencana manajemen perangkat
Sebelum Anda menempatkan perangkat apa pun dalam produksi, pertimbangkan bagaimana Anda akan mengelola pembaruan di masa mendatang. Untuk perangkat IoT Edge, daftar komponen yang akan diperbarui dapat mencakup:
- 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.
Cara lain 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.
Mesin kontainer
Mesin kontainer diperlukan untuk perangkat IoT Edge apa pun. Mesin moby didukung dalam produksi. Jika Anda menggunakan snap Ubuntu Core, snap Docker dilayankan oleh Canonical dan didukung untuk skenario produksi. Mesin kontainer lain, seperti Docker, bekerja dengan IoT Edge dan tidak apa-apa untuk menggunakan mesin ini untuk 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 default adalah AMQP, tetapi Anda mungkin ingin mengubahnya tergantung pada penyiapan jaringan Anda.
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) untuk membuat koneksi awal ke IoT Hub.
Setelah perangkat IoT Edge Anda tersambung, lanjutkan mengonfigurasi variabel UpstreamProtocol untuk kedua modul runtime dalam penyebaran di masa mendatang. Misalnya, lihat Mengonfigurasi 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 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
- PengaturanMQTT__diaktifkan
- 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:
- Gambar yang diperbarui diunduh
- Modul yang sedang berjalan dihentikan
- Instans modul baru dimulai
- 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 WaitForAllPulls
string . 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 mengenali tag yang dinaikkan sebagai versi baru dan 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 . Melakukannya mungkin diperlukan jika Anda memiliki batasan firewall yang 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.
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
Cantumkan semua gambar Docker Anda, temukan gambar edgeAgent dan edgeHub , lalu salin ID gambar mereka.
docker images
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
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
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.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
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"
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>"
Simpan perubahan Anda dan keluar dari editor teks Anda.
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.
Pengaturan | Deskripsi | Wajib diisi | Nilai default |
---|---|---|---|
enabled |
Mengaktifkan pengumpulan sampah gambar. Anda dapat memilih untuk menonaktifkan fitur dengan mengubah pengaturan ini ke false . |
Opsional | TRUE |
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 | 1 hari |
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 (Fully Qualified Domain Name) | 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.
/etc/docker
Di direktori di perangkat Anda, editdaemon.json
file. Buat file jika tidak tersedia.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. Gunakan alat journalctl
baris perintah untuk mengkueri log daemon.
Dimulai dari versi 1.2, IoT Edge mengandalkan beberapa daemon. Meskipun Anda dapat mengkueri setiap log daemon satu per satu dengan journalctl
, gunakan iotedge system
perintah untuk mengkueri 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 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. Misalnya, gunakan logspout-loganalytics, atau rancang sendiri.
Menyiapkan driver pengelogan default
Secara default, mesin kontainer Moby tidak mengatur batas ukuran log kontainer. Seiring waktu, ini dapat menyebabkan perangkat dipenuhi log dan kehabisan ruang penyimpanan. Atur mesin kontainer Anda untuk menggunakan driver pengeloganlocal
sebagai mekanisme pengelogan Anda. Driver local
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 menggunakan driver pencatatan log yang berbeda dan menetapkan batas ukuran yang berbeda sesuai kebutuhan Anda.
Opsi: Mengonfigurasi driver pengelogan default untuk semua modul kontainer
Atur mesin kontainer Anda untuk menggunakan penggerak log tertentu log driver
dengan mengatur nilai ke nama penggerak log dalam berkas 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 tambahkan informasi ini ke file bernama daemon.json
dan letakkan di lokasi berikut:
/etc/docker/
Mulai ulang mesin kontainer agar perubahan diterapkan.
Opsi: Sesuaikan pengaturan log untuk setiap modul kontainer
Atur opsi ini di createOptions dari 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
systemd
jurnal dengan mengaturjournald
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 penyebaran IoT Edge yang paling efisien, integrasikan penyebaran produksi Anda ke dalam pengujian dan alur 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 Anda menyebarkan modul ke perangkat IoT Edge produksi, pastikan Anda mengontrol akses ke registri kontainer sehingga orang luar tidak dapat mengakses atau mengubah gambar kontainer Anda. Gunakan registri kontainer privat untuk mengelola citra kontainer.
Dalam tutorial dan dokumentasi lainnya, kami memberi tahu Anda untuk menggunakan kredensial registri kontainer yang sama di perangkat IoT Edge Anda seperti pada komputer pengembangan Anda. Instruksi ini membantu Anda menyiapkan lingkungan pengujian dan pengembangan dengan lebih mudah dan bukan untuk penggunaan produksi.
Untuk akses yang lebih aman ke registri Anda, pilih dari beberapa opsi autentikasi. Menggunakan prinsipal layanan Active Directory adalah metode yang populer dan direkomendasikan bagi aplikasi atau layanan untuk mengambil gambar kontainer secara otomatis dan tanpa pengawasan, misalnya pada perangkat IoT Edge. Anda juga dapat menggunakan token dengan cakupan repositori, yang memungkinkan Anda membuat identitas yang berumur panjang atau pendek yang hanya ada di Azure Container Registry tempat Anda membuatnya dan membatasi akses pada tingkat repositori.
Untuk membuat perwakilan layanan, jalankan dua skrip yang dijelaskan dalam membuat perwakilan layanan. Skrip ini melakukan hal berikut:
Skrip pertama membuat perwakilan layanan. Ini menunjukkan 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. Jalankan selanjutnya jika diperlukan. Gunakan peran pengguna acrPull untuk
role
parameter . Untuk daftar peran, lihat Peran dan izin Azure Container Registry.
Untuk mengautentikasi menggunakan prinsipal layanan, berikan ID prinsipal layanan dan kredensial kata sandi dari skrip pertama dalam manifest 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 kredensial kata sandi yang Anda dapatkan setelah membuat token cakupan repositori Anda 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 dan kata sandi default tidak tersedia. Anda dapat menemukan pengaturan untuk registri kontainer Anda di portal Microsoft Azure, di bawah Pengaturan, pilih Kunci Akses.
Membatasi akses kontainer ke sumber daya host
Untuk menyeimbangkan sumber daya host bersama di seluruh modul, tetapkan batasan penggunaan sumber daya untuk setiap modul. Batas ini memastikan satu modul tidak dapat menggunakan terlalu banyak memori atau CPU dan mencegah proses lain berjalan di perangkat. Secara default, platform IoT Edge tidak membatasi sumber daya untuk modul karena Anda perlu menguji untuk mengetahui berapa banyak sumber daya yang perlu dijalankan modul dengan baik.
Docker memungkinkan Anda membatasi sumber daya seperti memori dan penggunaan CPU. Untuk informasi selengkapnya, lihat Opsi runtime dengan memori, CPU, dan GPU.
Anda dapat menerapkan batasan ini ke modul individual dengan menggunakan opsi buat dalam manifes penyebaran. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.
Langkah berikutnya
- Pelajari selengkapnya tentang penyebaran otomatis IoT Edge.
- Lihat bagaimana IoT Edge mendukung integrasi berkelanjutan dan penyebaran berkelanjutan.