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.
Penting
Halaman ini mencakup instruksi untuk mengelola komponen Azure IoT Operations menggunakan manifes penyebaran Kubernetes, yang masih dalam tahap pratinjau. Fitur ini disediakan dengan beberapa batasan, dan tidak boleh digunakan untuk beban kerja produksi.
Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku untuk fitur Azure yang dalam versi beta, pratinjau, atau belum dirilis ke ketersediaan umum.
Sumber daya BrokerListener sesuai dengan titik akhir jaringan yang mengekspos broker ke klien melalui jaringan. Anda dapat memiliki satu atau beberapa sumber daya BrokerListener untuk setiap broker, dengan beberapa port dan kontrol akses yang berbeda pada masing-masing.
Setiap port BrokerListener dapat memiliki aturan autentikasi dan otorisasinya sendiri yang menentukan siapa yang dapat terhubung pada port pendengar tersebut dan tindakan apa yang dapat mereka lakukan pada broker. Anda dapat menggunakan sumber daya BrokerAuthentication dan BrokerAuthorization untuk menentukan kebijakan kontrol akses untuk setiap port pendengar. Fleksibilitas ini memungkinkan Anda menyempurnakan izin dan peran untuk klien MQTT Anda berdasarkan kebutuhan dan kasus penggunaan mereka.
Petunjuk / Saran
Penyebaran broker MQTT default adalah layanan IP kluster yang mengharuskan klien untuk terhubung dengan protokol Keamanan Lapisan Transportasi (TLS) dan mengautentikasi dengan token akun layanan. Klien yang terhubung dari luar kluster memerlukan konfigurasi tambahan sebelum dapat terhubung.
Pendengar broker memiliki karakteristik berikut:
- Nama: Nama pendengar. Nama ini juga merupakan nama layanan Kubernetes kecuali digantikan.
-
Jenis layanan: Anda dapat memiliki hingga tiga pendengar, satu per jenis layanan. Pendengar default adalah jenis
ClusterIp
layanan . - Port: Setiap listener mendukung beberapa port. Port tidak dapat berkonflik dengan pendengar yang berbeda.
- Referensi Autentikasi dan Otorisasi: BrokerAuthentication dan BrokerAuthorization dikonfigurasi per port.
- TLS: Konfigurasi TLS manual atau otomatis diterapkan per port.
- Protokol: MQTT melalui WebSocket dapat diaktifkan per port.
Untuk daftar semua pengaturan yang tersedia, lihat referensi Broker Listener API.
Default BrokerListener
Saat Anda menyebarkan Azure IoT Operations, penyebaran membuat sumber daya BrokerListener bernama default. Pendengar ini digunakan untuk komunikasi internal terenkripsi antara komponen Operasi IoT. Pendengar bawaan adalah bagian dari broker bawaan.
- Ini mengekspos layanan ClusterIp pada port 18883.
- Ini mengharuskan klien untuk menggunakan autentikasi akun layanan Kubernetes.
- Ini memiliki sertifikat TLS yang dikelola secara otomatis .
- Ini tidak mengonfigurasi kebijakan otorisasi klien apa pun.
Perhatian
Untuk menghindari gangguan komunikasi Operasi IoT internal, jaga agar pendengar default tidak berubah dan didedikasikan untuk penggunaan internal. Untuk komunikasi eksternal, buat pendengar baru. Jika Anda perlu menggunakan ClusterIp
layanan, tambahkan lebih banyak port ke pendengar default tanpa mengubah pengaturan yang ada.
Untuk melihat atau mengedit pendengar default, ikuti langkah-langkah ini.
Di portal Azure, buka instans Operasi IoT Anda.
Di bawah Komponen, pilih MQTT Broker.
Dari daftar listener broker, pilih listener default.
Tinjau pengaturan pendengar, tetapi hindari memodifikasi salah satu pengaturan yang ada. Sebagai gantinya, buat port baru dan konfigurasikan sesuai kebutuhan.
Hindari memodifikasi pendengar broker default
Untuk mencegah gangguan komunikasi Operasi IoT internal, jaga agar pendengar default tidak berubah dan didedikasikan untuk penggunaan internal. Untuk komunikasi eksternal, buat pendengar baru.
Karena pendengar broker default menggunakan jenis ClusterIp
layanan , dan Anda hanya dapat memiliki satu pendengar per jenis layanan, tambahkan lebih banyak port ke pendengar default tanpa mengubah salah satu pengaturan yang ada jika Anda perlu menggunakan ClusterIp
layanan.
Membuat pendengar broker baru
Untuk membuat pendengar baru, tentukan pengaturan berikut:
- Nama: Nama pendengar. Nama ini juga merupakan nama layanan Kubernetes kecuali digantikan.
- Jenis layanan: Jenis layanan Kubernetes. Lihat Jenis layanan.
- Port: Daftar port untuk didengarkan. Lihat Port.
- Nama layanan (opsional): Ambil alih nama layanan Kubernetes. Lihat Nama layanan.
Contoh: Membuat pendengar baru dengan dua port
Contoh ini menunjukkan cara membuat pendengar baru dengan LoadBalancer
jenis layanan. Sumber daya BrokerListener mendefinisikan dua port yang menerima koneksi MQTT dari klien.
- Port pertama mendengarkan port 1883 tanpa TLS dan autentikasi. Penyiapan ini hanya cocok untuk pengujian. Jangan gunakan konfigurasi ini dalam produksi.
- Port kedua mendengarkan port 8883 dengan TLS dan autentikasi diaktifkan. Hanya klien terautentikasi dengan token akun layanan Kubernetes yang dapat terhubung. TLS diatur ke mode otomatis, menggunakan cert-manager untuk mengelola sertifikat server dari penerbit default. Penyiapan ini lebih dekat ke konfigurasi produksi.
Di portal Azure, buka instans Operasi IoT Anda.
Di bawah Komponen, pilih MQTT Broker.
Pilih pendengar broker MQTT untuk LoadBalancer>Create.
Masukkan pengaturan berikut:
Pengaturan Deskripsi Nama Nama sumber daya BrokerListener. Nama layanan Nama layanan Kubernetes. Biarkan kosong untuk menggunakan nama pendengar sebagai nama layanan. Jenis layanan LoadBalancer sudah dipilih. Di bawah Port, masukkan pengaturan berikut untuk port pertama:
Pengaturan Deskripsi Pelabuhan Masukkan 1883. Autentikasi Pilih Tidak Ada. Otorisasi Pilih Tidak Ada. Protokol Pilih MQTT. TLS Jangan tambahkan. Pilih Tambahkan entri port untuk menambahkan port kedua dan masukkan pengaturan berikut:
Pengaturan Deskripsi Pelabuhan Masukkan 8883. Autentikasi Pilih default. Otorisasi Pilih Tidak Ada. Protokol Pilih MQTT. TLS Pilih Tambahkan. Pada panel konfigurasi TLS , masukkan pengaturan berikut:
Pengaturan Deskripsi Mode TLS Pilih Otomatis. Nama pengeluar sertifikat Memasuki azure-iot-operations-aio-certificate-issuer
.Jenis pengeluar sertifikat Pilih ClusterIssuer. Biarkan pengaturan lain sebagai default, dan pilih Terapkan.
Pilih Buat pendengar.
Jenis layanan
Setiap sumber daya BrokerListener tersebut memetakan ke layanan Kubernetes. Jenis layanan menentukan bagaimana broker diekspos ke jaringan. Jenis layanan yang didukung adalah:
- ClusterIp: Mengekspos broker pada IP kluster-internal. Klien dapat terhubung ke broker dari dalam kluster. Jenis layanan default ini adalah untuk pendengar default.
- NodePort: Mengekspos broker pada IP setiap node di port statis. Klien dapat terhubung ke broker dari luar kluster. Jenis layanan ini berguna untuk pengembangan dan pengujian.
- LoadBalancer: Mengekspos broker secara eksternal. Layanan ini diberi alamat IP eksternal yang dapat digunakan klien untuk terhubung ke broker. Jenis layanan ini adalah yang paling umum untuk penyebaran produksi.
Hanya satu pendengar per jenis layanan
Hanya satu pendengar per jenis layanan yang diizinkan. Jika Anda memerlukan lebih banyak konektivitas dari jenis layanan yang sama, tambahkan lebih banyak port ke pendengar yang ada dari jenis layanan tersebut.
Nama layanan
Nama layanan adalah nama layanan Kubernetes yang terkait dengan broker. Jika tidak ditentukan, nama pendengar broker digunakan sebagai nama layanan. Nama layanan harus unik dalam namespace layanan.
Petunjuk / Saran
Untuk mencegah overhead manajemen, kami sarankan Anda membiarkan nama layanan kosong. Nama pendengar unik, dan Anda dapat menggunakannya untuk mengidentifikasi layanan. Gunakan nama layanan sebagai penimpaan hanya saat Anda tidak dapat memberi nama layanan setelah pendengar.
Port
Setiap pendengar dapat memiliki beberapa port, dan setiap port dapat memiliki pengaturannya sendiri untuk autentikasi, otorisasi, protokol, dan TLS.
Untuk menggunakan pengaturan autentikasi atau otorisasi Anda sendiri untuk port, Anda harus membuat sumber daya yang sesuai sebelum menggunakannya dengan pendengar. Untuk informasi selengkapnya, lihat Mengonfigurasi autentikasi broker MQTT dan Mengonfigurasi otorisasi broker MQTT.
Untuk menggunakan TLS, lihat bagian Mengonfigurasi TLS dengan manajemen sertifikat otomatis atau Mengonfigurasi TLS dengan manajemen sertifikat manual .
Menggunakan port yang sama di seluruh listener
Menggunakan nomor port yang sama di pendengar yang berbeda tidak didukung. Setiap nomor port harus unik dalam broker IoT Operations MQTT.
Misalnya, jika Anda memiliki pendengar menggunakan port 1883, Anda tidak dapat membuat pendengar lain dengan port 1883. Demikian pula, pendengar default menggunakan port 18883, sehingga Anda tidak dapat membuat pendengar lain dengan port 18883.
Dukungan WebSockets
Broker MQTT Operasi IoT mendukung MQTT melalui WebSocket. Untuk mengaktifkan WebSockets, atur protokol ke WebSockets
untuk port.
Mengonfigurasi TLS dengan manajemen sertifikat otomatis
Untuk mengaktifkan TLS dengan manajemen sertifikat otomatis, tentukan pengaturan TLS pada port pendengar.
Memverifikasi penginstalan cert-manager
Dengan manajemen sertifikat otomatis, Anda menggunakan cert-manager untuk mengelola sertifikat server TLS. Secara default, cert-manager sudah diinstal bersama Operasi IoT di cert-manager
namespace layanan. Verifikasi penginstalan sebelum Anda melanjutkan.
Gunakan kubectl untuk memeriksa pod yang cocok dengan label aplikasi cert-manager.
kubectl get pods --namespace cert-manager -l 'app in (cert-manager,cainjector,webhook)'
NAME READY STATUS RESTARTS AGE aio-cert-manager-64f9548744-5fwdd 1/1 Running 4 (145m ago) 4d20h aio-cert-manager-cainjector-6c7c546578-p6vgv 1/1 Running 4 (145m ago) 4d20h aio-cert-manager-webhook-7f676965dd-8xs28 1/1 Running 4 (145m ago) 4d20h
Jika Anda melihat pod yang ditampilkan sebagai siap dan berjalan, cert-manager diinstal dan siap digunakan.
Petunjuk / Saran
Untuk memverifikasi penginstalan lebih lanjut, periksa dokumentasi cert-manager untuk memverifikasi penginstalan. Ingatlah untuk menggunakan cert-manager
namespace layanan.
Membuat penerbit untuk sertifikat server TLS
Sumber daya penerbit cert-manager menentukan bagaimana sertifikat dikeluarkan secara otomatis. Cert-manager mendukung beberapa jenis pengeluar sertifikat secara asli. Ini juga mendukung jenis eksternalissuer
untuk memperluas fungsionalitas di luar penerbit yang didukung secara asli. Anda dapat menggunakan broker MQTT dengan semua jenis penerbit cert-manager.
Penting
Selama penyebaran awal, Operasi IoT diinstal dengan penerbit default untuk sertifikat server TLS. Anda dapat menggunakan penerbit ini untuk pengembangan dan pengujian. Untuk informasi selengkapnya, lihat Otoritas Sertifikat (CA) Root Default dan Penerbit dengan Operasi Azure IoT. Langkah-langkah berikut diperlukan hanya jika Anda ingin menggunakan penerbit yang berbeda.
Pendekatan untuk membuat penerbit berbeda tergantung pada skenario Anda. Bagian berikut mencantumkan contoh untuk membantu Anda memulai.
- Pengembangan atau pengujian
-
Produksi
Penerbit CA berguna untuk pengembangan dan pengujian. Ini harus dikonfigurasi dengan sertifikat dan kunci privat yang disimpan dalam rahasia Kubernetes.
Menyiapkan sertifikat akar sebagai rahasia Kubernetes
Jika Anda memiliki sertifikat CA yang ada, buat rahasia Kubernetes dengan sertifikat CA dan file PEM kunci privat CA. Jalankan perintah berikut untuk mengimpor sertifikat CA sebagai rahasia Kubernetes dan lewati bagian berikutnya.
kubectl create secret tls test-ca --cert tls.crt --key tls.key -n azure-iot-operations
Jika Anda tidak memiliki sertifikat CA, cert-manager dapat menghasilkan sertifikat CA untuk Anda. Menggunakan cert-manager untuk menghasilkan sertifikat CA dikenal sebagai bootstrapping penerbit CA dengan sertifikat yang ditandatangani sendiri.
Mulailah dengan membuat
ca.yaml
:apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: selfsigned-ca-issuer namespace: azure-iot-operations spec: selfSigned: {} --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: selfsigned-ca-cert namespace: azure-iot-operations spec: isCA: true commonName: test-ca secretName: test-ca issuerRef: # Must match Issuer name above name: selfsigned-ca-issuer # Must match Issuer kind above kind: Issuer group: cert-manager.io # Override default private key config to use an EC key privateKey: rotationPolicy: Always algorithm: ECDSA size: 256
Buat sertifikat CA yang ditandatangani sendiri dengan perintah berikut:
kubectl apply -f ca.yaml
Cert-manager membuat sertifikat CA dengan menggunakan defaultnya. Anda dapat mengubah properti sertifikat ini dengan memodifikasi spesifikasi Sertifikat. Untuk daftar opsi yang valid, lihat dokumentasi cert-manager.
Mendistribusikan sertifikat akar
Contoh sebelumnya menyimpan sertifikat CA dalam rahasia Kubernetes yang disebut test-ca
. Anda dapat mengambil sertifikat dalam format PEM dari rahasia dan menyimpannya dalam file ca.crt
dengan perintah berikut:
kubectl get secret test-ca -n azure-iot-operations -o json | jq -r '.data["tls.crt"]' | base64 -d > ca.crt
Sertifikat ini harus didistribusikan dan dipercaya oleh semua klien. Misalnya, gunakan --cafile
bendera untuk klien Mosquitto.
Membuat penerbit berdasarkan sertifikat CA
Cert-manager memerlukan penerbit berdasarkan sertifikat CA yang dihasilkan atau diimpor pada langkah sebelumnya. Buat file berikut sebagai issuer-ca.yaml
:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: my-issuer
namespace: azure-iot-operations
spec:
ca:
# Must match secretName of generated or imported CA cert
secretName: test-ca
Buat pengeluar sertifikat dengan perintah berikut:
kubectl apply -f issuer-ca.yaml
Perintah sebelumnya membuat penerbit untuk mengeluarkan sertifikat server TLS. Perhatikan nama dan jenis penerbit. Dalam contoh, nama adalah my-issuer
dan jenisnya adalah Issuer
. Nilai-nilai ini diatur dalam sumber daya BrokerListener nanti.
Mengaktifkan manajemen sertifikat otomatis TLS untuk port
Contoh berikut adalah sumber daya BrokerListener yang memungkinkan TLS pada port 8884 dengan manajemen sertifikat otomatis.
Di portal Azure, buka instans Operasi IoT Anda.
Di bawah Komponen, pilih MQTT Broker.
Pilih atau buat listener. Anda hanya dapat membuat satu listener per jenis layanan. Jika Anda sudah memiliki pendengar dengan jenis layanan yang sama, Anda dapat menambahkan lebih banyak port ke pendengar yang ada.
Anda dapat menambahkan pengaturan TLS ke pendengar dengan memilih TLS pada port yang ada atau dengan menambahkan port baru.
Masukkan pengaturan berikut:
Pengaturan Deskripsi Nama Nama sumber daya BrokerListener. Memasuki aio-broker-loadbalancer-tls
.Pelabuhan Nomor port tempat BrokerListener mendengarkan koneksi MQTT. Masukkan 8884. Autentikasi Referensi sumber daya autentikasi. Otorisasi Referensi sumber daya otorisasi. TLS Pilih tombol Tambahkan . Nama pengeluar sertifikat Nama penerbit cert-manager. Harus diisi. Jenis pengeluar sertifikat Jenis penerbit cert-manager. Harus diisi. Grup pengeluar sertifikat Grup penerbit cert-manager. Harus diisi. Algoritma kunci privat Algoritma untuk kunci privat. Kebijakan rotasi kunci privat Kebijakan untuk memutar kunci privat. Nama DNS Nama alternatif subjek DNS untuk sertifikat. Alamat IP Alamat IP nama alternatif subjek untuk sertifikat. Nama rahasia Rahasia Kubernetes yang berisi sertifikat klien X.509. Durasi Total masa pakai sertifikat server TLS default menjadi 90 hari. Perpanjang sebelum Kapan harus mulai memperbarui sertifikat. Pilih Terapkan untuk menyimpan pengaturan TLS.
Setelah sumber daya BrokerListener dikonfigurasi, broker MQTT secara otomatis membuat layanan baru dengan port dan TLS yang ditentukan diaktifkan.
Opsional: Mengonfigurasi parameter sertifikat server
Satu-satunya parameter yang diperlukan adalah Issuer
nama dan Issuer
jenis. Semua properti lain dari sertifikat server TLS yang dihasilkan dipilih secara otomatis. Namun, broker MQTT memungkinkan properti tertentu untuk disesuaikan mengikuti sintaks yang sama dengan sertifikat cert-manager. Misalnya, Anda dapat menentukan algoritma kunci privat dan kebijakan rotasi. Pengaturan ini berada di bawah tls.certManagerCertificateSpec
atau di panel konfigurasi TLS di portal Microsoft Azure.
Untuk daftar lengkap pengaturan ini, lihat Referensi API Broker Listener CertManagerCertificateSpec.
Verifikasi penyebaran
Gunakan kubectl untuk memeriksa apakah layanan yang terkait dengan sumber daya BrokerListener sedang berjalan. Dari contoh sebelumnya, nama layanan adalah aio-broker-loadbalancer-tls
dan namespace adalah azure-iot-operations
. Perintah berikut memeriksa status layanan:
$ kubectl get service my-new-tls-listener -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
aio-broker-loadbalancer-tls LoadBalancer 10.X.X.X 172.X.X.X 8884:32457/TCP 33s
Menyambungkan ke broker dengan TLS
Setelah sertifikat server dikonfigurasi, TLS diaktifkan. Untuk menguji dengan Mosquitto:
mosquitto_pub -h $HOST -p 8884 -V mqttv5 -i "test" -t "test" -m "test" --cafile ca.crt
Argumen memungkinkan --cafile
TLS pada klien Mosquitto dan menentukan bahwa klien harus mempercayai semua sertifikat server yang dikeluarkan oleh file tertentu. Anda harus menentukan file yang berisi penerbit sertifikat server TLS yang dikonfigurasi.
Ganti $HOST
dengan host yang sesuai:
- Jika Anda terhubung dari dalam kluster yang sama, ganti dengan nama layanan yang diberikan (
my-new-tls-listener
misalnya) atau layananCLUSTER-IP
. - Jika Anda terhubung dari luar kluster, gunakan layanan
EXTERNAL-IP
.
Ingatlah untuk menentukan metode autentikasi jika diperlukan.
CA akar default dan pengeluar sertifikat
Untuk membantu Anda memulai, Operasi IoT disebarkan dengan sertifikat CA "mulai cepat" default dan penerbit untuk sertifikat server TLS. Anda dapat menggunakan penerbit ini untuk pengembangan dan pengujian. Untuk informasi selengkapnya, lihat CA akar default dan penerbit untuk sertifikat server TLS.
Untuk produksi, Anda harus mengonfigurasi penerbit CA dengan sertifikat dari CA tepercaya, seperti yang dijelaskan di bagian sebelumnya.
Mengonfigurasi TLS dengan manajemen sertifikat manual
Untuk mengonfigurasi broker MQTT secara manual untuk menggunakan sertifikat TLS tertentu, tentukan di sumber daya BrokerListener dengan referensi ke rahasia Kubernetes dan sebarkan menggunakan kubectl. Artikel ini memperlihatkan contoh yang mengonfigurasi TLS dengan sertifikat yang ditandatangani sendiri untuk pengujian.
Membuat otoritas sertifikat dengan Langkah CLI
Step adalah manajer sertifikat yang dapat dengan cepat mengaktifkan dan menjalankan Anda ketika Anda membuat dan mengelola CA pribadi milik Anda sendiri.
Pasang Step CLI dan buat sertifikat dan kunci CA root.
step certificate create --profile root-ca "Example Root CA" root_ca.crt root_ca.key
Buat sertifikat CA perantara dan kunci yang ditandatangani oleh CA akar.
step certificate create --profile intermediate-ca "Example Intermediate CA" intermediate_ca.crt intermediate_ca.key \ --ca root_ca.crt --ca-key root_ca.key
Buat sertifikat server
Gunakan Langkah CLI untuk membuat sertifikat server dari sertifikat dan kunci OS perantara.
step certificate create mqtts-endpoint mqtts-endpoint.crt mqtts-endpoint.key \
--profile leaf \
--not-after 8760h \
--san mqtts-endpoint \
--san localhost \
--ca intermediate_ca.crt --ca-key intermediate_ca.key \
--no-password --insecure
Di sini, mqtts-endpoint
dan localhost
adalah Subject Alternative Names (SAN) untuk frontend broker MQTT di Kubernetes dan klien lokal, masing-masing. Untuk terhubung melalui internet, tambahkan --san
dengan IP eksternal. Bendera --no-password --insecure
digunakan untuk pengujian untuk melewati permintaan kata sandi dan menonaktifkan perlindungan kata sandi untuk kunci privat karena disimpan dalam rahasia Kubernetes. Untuk produksi, gunakan kata sandi dan simpan kunci privat di lokasi yang aman seperti Azure Key Vault.
Persyaratan algoritma kunci sertifikat
Kunci EC dan RSA didukung, tetapi semua sertifikat dalam rantai harus menggunakan algoritma kunci yang sama. Jika Anda mengimpor sertifikat CA Anda sendiri, pastikan bahwa sertifikat server menggunakan algoritma kunci yang sama dengan CA.
Mengimpor rantai sertifikat server sebagai rahasia Kubernetes
Buat rantai sertifikat server lengkap, di mana urutan sertifikat penting. Sertifikat server adalah yang pertama dalam file, dan perantara adalah yang kedua.
cat mqtts-endpoint.crt intermediate_ca.crt > server_chain.crt
Buat rahasia Kubernetes dengan rantai sertifikat server dan kunci server dengan menggunakan kubectl.
kubectl create secret tls server-cert-secret -n azure-iot-operations \ --cert server_chain.crt \ --key mqtts-endpoint.key
Mengaktifkan manajemen sertifikat manual TLS untuk port
Contoh berikut menunjukkan sumber daya BrokerListener yang memungkinkan TLS pada port 8884 dengan manajemen sertifikat manual.
Di portal Azure, buka instans Operasi IoT Anda.
Di bawah Komponen, pilih MQTT Broker.
Pilih atau buat listener. Anda hanya dapat membuat satu listener per jenis layanan. Jika Anda sudah memiliki pendengar dengan jenis layanan yang sama, Anda dapat menambahkan lebih banyak port ke pendengar yang ada. Untuk mengikuti contoh, tentukan nama layanan pendengar sebagai
mqtts-endpoint
.Anda dapat menambahkan pengaturan TLS ke pendengar dengan memilih TLS pada port yang ada atau dengan menambahkan port baru.
Masukkan pengaturan berikut:
Pengaturan Deskripsi Pelabuhan Nomor port tempat BrokerListener mendengarkan koneksi MQTT. Harus diisi. Autentikasi Referensi sumber daya autentikasi. Otorisasi Referensi sumber daya otorisasi. TLS Pilih tombol Tambahkan . Nama rahasia Rahasia Kubernetes yang berisi sertifikat klien X.509. Pilih Terapkan untuk menyimpan pengaturan TLS.
Menyambungkan ke broker dengan TLS
Untuk menguji koneksi TLS dengan klien Mosquitto, terbitkan pesan dan berikan sertifikat CA akar dalam parameter --cafile
.
mosquitto_pub -d -h localhost -p 8885 -i "my-client" -t "test-topic" -m "Hello" --cafile root_ca.crt
Ingatlah untuk menentukan item seperti nama pengguna dan kata sandi jika autentikasi broker MQTT diaktifkan.
Client my-client sending CONNECT
Client my-client received CONNACK (0)
Client my-client sending PUBLISH (d0, q0, r0, m1, 'test-topic', ... (5 bytes))
Client my-client sending DISCONNECT
Petunjuk / Saran
Untuk menggunakan localhost, port harus tersedia di komputer host. Contohnya kubectl port-forward svc/mqtts-endpoint 8885:8885 -n azure-iot-operations
. Dengan beberapa distribusi Kubernetes seperti K3d, Anda dapat menambahkan port yang diteruskan dengan k3d cluster edit $CLUSTER_NAME --port-add 8885:8885@loadbalancer
.
Untuk terhubung ke broker, Anda perlu mendistribusikan akar kepercayaan, juga dikenal sebagai bundel kepercayaan, ke semua klien. Dalam hal ini, akar kepercayaan adalah CA akar yang ditandatangani sendiri yang dibuat oleh Langkah CLI. Distribusi akar kepercayaan diperlukan bagi klien untuk memverifikasi rantai sertifikat server. Jika klien MQTT Anda adalah beban kerja pada kluster Kubernetes, Anda juga perlu membuat ConfigMap dengan CA akar dan memasangnya di pod Anda.
Menggunakan IP eksternal untuk sertifikat server
Untuk terhubung dengan TLS melalui internet, sertifikat server broker MQTT harus memiliki nama host eksternal atau alamat IP sebagai SAN. Dalam produksi, informasi ini biasanya merupakan nama DNS atau alamat IP terkenal. Selama dev/test, Anda mungkin tidak tahu nama host atau IP eksternal apa yang ditetapkan sebelum penyebaran. Untuk mengatasi masalah ini, sebarkan pendengar tanpa sertifikat server terlebih dahulu, buat sertifikat server dan rahasia dengan IP eksternal, dan impor rahasia ke pendengar.
Jika Anda mencoba menyebarkan contoh listener manual-tls-listener
TLS tetapi rahasia server-cert-secret
Kubernetes yang direferensikan tidak ada, layanan terkait akan dibuat, tetapi pod tidak dimulai. Layanan dibuat karena operator perlu memesan IP eksternal untuk pendengar.
kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mqtts-endpoint LoadBalancer 10.X.X.X 172.X.X.X 8885:30674/TCP 1m15s
Perilaku ini diharapkan saat kami mengimpor sertifikat server. Log manajer kesehatan menyebutkan bahwa broker MQTT sedang menunggu sertifikat server.
kubectl logs -l app=health-manager -n azure-iot-operations
...
<6>2023-11-06T21:36:13.634Z [INFO] [1] - Server certificate server-cert-secret not found. Awaiting creation of secret.
Catatan
Umumnya, dalam sistem terdistribusi, log pod tidak deterministik dan harus digunakan dengan hati-hati. Cara yang tepat untuk informasi seperti ini muncul adalah melalui peristiwa Kubernetes dan status sumber daya kustom, yang ada di backlog. Pertimbangkan langkah sebelumnya sebagai solusi sementara.
Meskipun pod frontend tidak aktif, IP eksternal sudah tersedia.
kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mqtts-endpoint LoadBalancer 10.X.X.X 172.X.X.X 8885:30674/TCP 1m15s
Dari sini, ikuti langkah-langkah yang sama seperti yang ditunjukkan sebelumnya untuk membuat sertifikat server dengan IP eksternal ini di --san
dan membuat rahasia Kubernetes dengan cara yang sama. Setelah rahasia dibuat, rahasia secara otomatis diimpor ke pendengar.