Sdílet prostřednictvím


Zabezpečení komunikace zprostředkovatele MQTT pomocí BrokerListener

Důležité

Tato stránka obsahuje pokyny ke správě komponent operací Azure IoT pomocí manifestů nasazení Kubernetes, které jsou ve verzi Preview. Tato funkce je poskytována s několika omezeními a neměla by se používat pro produkční úlohy.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

BrokerListener odpovídá koncovému bodu sítě, který zprostředkovatele zpřístupňuje klientům přes síť. Pro každého zprostředkovatele můžete mít jeden nebo více prostředků BrokerListener s více porty a jiným řízením přístupu.

Každý port BrokerListener může mít vlastní ověřovací a autorizační pravidla, která definují, kdo se může připojit na daném portu naslouchacího procesu a jaké akce můžou u zprostředkovatele provádět. Prostředky BrokerAuthentication a BrokerAuthorization můžete použít k určení zásad řízení přístupu pro každý port naslouchacího procesu. Tato flexibilita umožňuje jemně vyladit oprávnění a role pro klienty MQTT na základě jejich potřeb a případů použití.

Tip

Výchozí nasazení zprostředkovatele MQTT je služba IP clusteru, která vyžaduje, aby se klienti připojili pomocí protokolu TLS a ověřili pomocí tokenů účtu služby. Klienti, kteří se připojují mimo cluster , potřebují před připojením další konfiguraci .

Naslouchací procesy zprostředkovatele mají následující charakteristiky:

Seznam všech dostupných nastavení najdete v referenčních informacích k rozhraní API naslouchacího procesu zprostředkovatele.

Výchozí brokerListener

Když nasadíte operace Azure IoT, nasazení vytvoří prostředek BrokerListener s názvem default. Tento naslouchací proces se používá k šifrované interní komunikaci mezi komponentami operací Azure IoT. Výchozí naslouchací proces je součástí výchozího zprostředkovatele.

Upozornění

Aby nedošlo k narušení interní komunikace operací Azure IoT, ponechejte výchozí naslouchací proces beze změny a vyhrazený pro interní použití. Pro externí komunikaci vytvořte nový naslouchací proces. Pokud potřebujete použít službu ClusterIp, přidejte do výchozího naslouchacího procesu další porty beze změny jakéhokoli existujícího nastavení.

Zobrazení nebo úprava výchozího naslouchacího procesu:

  1. Na webu Azure Portal přejděte k vaší instanci ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

    Snímek obrazovky s využitím webu Azure Portal k zobrazení konfigurace Azure IoT Operations MQTT

  3. V seznamu naslouchacího procesu zprostředkovatele vyberte výchozí naslouchací proces.

    Snímek obrazovky s využitím webu Azure Portal k zobrazení nebo úpravě výchozího naslouchacího procesu zprostředkovatele

  4. Zkontrolujte nastavení naslouchacího procesu, ale vyhněte se úpravám některého z existujících nastavení. Místo toho vytvořte nový port a podle potřeby ho nakonfigurujte.

Vyhněte se úpravám výchozího naslouchacího procesu zprostředkovatele.

Pokud chcete zabránit narušení interní komunikace operací Azure IoT, ponechejte výchozí naslouchací proces beze změny a vyhrazený pro interní použití. Pro externí komunikaci vytvořte nový naslouchací proces.

Vzhledem k tomu, že výchozí naslouchací proces zprostředkovatele používá typ ClusterIp a pro každý typ služby můžete mít pouze jeden naslouchací proces, přidejte do výchozího naslouchacího procesu další porty, aniž byste museli měnit některá existující nastavení, pokud potřebujete použít službu ClusterIp.

Vytvoření nových naslouchacích procesů zprostředkovatele

Pokud chcete vytvořit nový naslouchací proces, zadejte následující nastavení:

  • Název: Název naslouchacího procesu. Tento název je také název služby Kubernetes, pokud ho nepřepíšete.
  • Typ služby: Typ služby Kubernetes. Viz Typ služby.
  • Porty: Seznam portů, které se mají naslouchat. Viz Porty.
  • (Volitelné) Název služby: Přepište název služby Kubernetes. Viz Název služby.

Příklad: Vytvoření nového naslouchacího procesu se dvěma porty

Tento příklad ukazuje, jak vytvořit nový naslouchací proces s typem služby nástroje pro vyrovnávání zatížení. Prostředek BrokerListener definuje dva porty, které přijímají připojení MQTT z klientů.

  1. Na webu Azure Portal přejděte k vaší instanci ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte naslouchací proces zprostředkovatele MQTT pro vytvoření loadbalanceru>.

    Zadejte následující nastavení:

    Nastavení Description
    Name Název prostředku BrokerListener.
    Service name Název služby Kubernetes Ponechte prázdný název naslouchacího procesu jako název služby.
    Typ služby LoadBalancer už je vybraný.
  4. V části Porty zadejte následující nastavení pro první port:

    Nastavení Popis
    Port Zadejte 1883
    Ověřování Zvolte Žádná.
    Autorizace Zvolte Žádná.
    Protokol Volba MQTT
    Protokol TLS Nepřidávejte
  5. Vyberte Přidat položku portu a přidejte druhý port a zadejte následující nastavení:

    Nastavení Popis
    Port Zadejte 8883
    Ověřování Volba výchozího nastavení
    Autorizace Zvolte Žádná.
    Protokol Volba MQTT
    Protokol TLS Vyberte Přidat.
  6. V podokně konfigurace protokolu TLS zadejte následující nastavení:

    Nastavení Popis
    Režim TLS Zvolit automaticky
    Název vystavitele Zadejte azure-iot-operations-aio-certificate-issuer
    Druh vystavitele Volba ClusterIssuer

    U ostatních nastavení ponechte výchozí nastavení a vyberte Použít.

  7. Vyberte Vytvořit naslouchací proces.

    Snímek obrazovky s využitím webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení

Typ služby

Každý BrokerListener se mapuje na službu Kubernetes. Typ služby určuje, jak je zprostředkovatel vystaven v síti. Mezi podporované typy služeb patří:

  • ClusterIp: Zveřejňuje zprostředkovatele na interní IP adrese clusteru. Klienti se můžou ke zprostředkovateli připojit z clusteru. Toto je výchozí typ služby pro výchozí naslouchací proces.
  • NodePort: Zpřístupňuje zprostředkovatele na IP adrese každého uzlu na statickém portu. Klienti se můžou připojit ke zprostředkovateli mimo cluster. Tento typ služby je užitečný pro vývoj a testování.
  • LoadBalancer: Zpřístupňuje zprostředkovatele externě. Služba má přiřazenou externí IP adresu, kterou můžou klienti použít pro připojení ke zprostředkovateli. Toto je nejběžnější typ služby pro produkční nasazení.

Pouze jeden naslouchací proces na typ služby

Je povolen pouze jeden naslouchací proces na jeden typ služby. Pokud potřebujete více připojení stejného typu služby, přidejte do existujícího naslouchacího procesu tohoto typu služby další porty.

Service name

Název služby je název služby Kubernetes přidružené ke zprostředkovateli. Pokud není zadaný, název naslouchacího procesu zprostředkovatele se použije jako název služby. Název služby musí být jedinečný v rámci oboru názvů.

Tip

Pokud chcete zabránit režijním nákladům na správu, doporučujeme ponechat název služby prázdný. Název naslouchacího procesu je jedinečný a dá se použít k identifikaci služby. Název služby použijte jako přepsání pouze v případech, kdy nemůžete službu pojmenovat po naslouchacím procesu.

Porty

Každý naslouchací proces může mít více portů a každý port může mít vlastní nastavení pro ověřování, autorizaci, protokol a TLS.

Pokud chcete pro port použít vlastní nastavení ověřování nebo autorizace, musíte před použitím s naslouchacím procesem vytvořit odpovídající prostředky. Další informace najdete v tématu Konfigurace ověřování zprostředkovatele MQTT a konfigurace autorizace zprostředkovatele MQTT.

Pokud chcete použít protokol TLS, přečtěte si téma Konfigurace protokolu TLS s automatickou správou certifikátů nebo konfigurace protokolu TLS s ručně zadanými oddíly správy certifikátů.

Použití stejného portu mezi naslouchacími procesy

Použití stejného čísla portu napříč různými naslouchacími procesy se nepodporuje. Každé číslo portu musí být jedinečné v rámci zprostředkovatele Azure IoT Operations MQTT.

Pokud máte například naslouchací proces pomocí portu 1883, nemůžete vytvořit další naslouchací proces s portem 1883. Podobně výchozí naslouchací proces používá port 18883, takže nemůžete vytvořit další naslouchací proces s portem 18883.

Podpora pro WebSockets

Zprostředkovatel Azure IoT Operations MQTT podporuje MQTT přes WebSockets. Pokud chcete povolit protokol WebSockets, nastavte pro WebSockets port protokol.

Konfigurace protokolu TLS s automatickou správou certifikátů

Pokud chcete povolit protokol TLS s automatickou správou certifikátů, zadejte nastavení protokolu TLS na portu naslouchacího procesu.

Ověření instalace nástroje cert-manager

Pomocí automatické správy certifikátů můžete ke správě certifikátu serveru TLS použít nástroj cert-manager. Ve výchozím nastavení je nástroj cert-manager nainstalovaný společně s operacemi Azure IoT v cert-manager oboru názvů. Než budete pokračovat, ověřte instalaci.

  1. Slouží kubectl ke kontrole podů odpovídajících popiskům aplikací nástroje 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
    
  2. Pokud se zobrazí pody, které jsou připravené a spuštěné, nainstaluje se cert-manager a je připravený k použití.

Tip

Pokud chcete instalaci dále ověřit, zkontrolujte instalaci v dokumentaci nástroje cert-manager. Nezapomeňte použít cert-manager obor názvů.

Vytvoření vystavitele pro certifikát serveru TLS

Prostředek vystavitele cert-manager definuje, jak se certifikáty vydávají automaticky. Cert-manager podporuje několik typů vystavitelů nativně. Podporuje také externí typ vystavitele pro rozšíření funkčnosti nad rámec nativně podporovaných vystavitelů. Zprostředkovatel MQTT lze použít s jakýmkoli typem vystavitele cert-manageru.

Důležité

Během počátečního nasazení se operace Azure IoT nainstalují s výchozím vystavitelem pro certifikáty serveru TLS. Tento vystavitel můžete použít pro vývoj a testování. Další informace najdete v tématu Výchozí kořenová certifikační autorita a vystavitel s využitím operací Azure IoT. Následující postup se vyžaduje jenom v případě, že chcete použít jiného vystavitele.

Přístup k vytvoření vystavitele se liší v závislosti na vašem scénáři. Následující části obsahují příklady, které vám pomůžou začít.

Vystavitel certifikační autority je užitečný pro vývoj a testování. Musí být nakonfigurovaný s certifikátem a privátním klíčem uloženým v tajném kódu Kubernetes.

Nastavení kořenového certifikátu jako tajného kódu Kubernetes

Pokud máte existující certifikát certifikační autority, vytvořte tajný klíč Kubernetes s certifikátem certifikační autority a soubory PEM privátního klíče certifikační autority. Spuštěním následujícího příkazu naimportujte certifikát certifikační autority jako tajný klíč Kubernetes a přeskočte další část.

kubectl create secret tls test-ca --cert tls.crt --key tls.key -n azure-iot-operations

Pokud certifikát certifikační autority nemáte, může certifikát certifikační autority vygenerovat správce certifikační autority za vás. Použití nástroje cert-manager k vygenerování certifikátu certifikační autority se označuje jako bootstrapping vystavitele certifikační autority s certifikátem podepsaným svým držitelem.

  1. Začněte vytvořením 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
    
  2. Vytvořte certifikát certifikační autority podepsaný svým držitelem pomocí následujícího příkazu:

    kubectl apply -f ca.yaml
    

Cert-manager vytvoří certifikát certifikační autority pomocí jeho výchozích hodnot. Vlastnosti tohoto certifikátu lze změnit úpravou specifikace certifikátu. Seznam platných možností najdete v dokumentaci k nástroji cert-manager.

Distribuce kořenového certifikátu

Předchozí příklad ukládá certifikát certifikační autority do tajného kódu Kubernetes s názvem test-ca. Certifikát ve formátu PEM lze načíst z tajného kódu a uložit do souboru ca.crt pomocí následujícího příkazu:

kubectl get secret test-ca -n azure-iot-operations -o json | jq -r '.data["tls.crt"]' | base64 -d > ca.crt

Tento certifikát musí být distribuovaný a důvěryhodný všemi klienty. Například použijte --cafile příznak pro klienta mosquitto.

Vytvoření vystavitele na základě certifikátu certifikační autority

Cert-manager potřebuje vystavitele na základě certifikátu certifikační autority vygenerovaného nebo importovaného v předchozím kroku. Vytvořte následující soubor takto 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

Vytvořte vystavitele pomocí následujícího příkazu:

kubectl apply -f issuer-ca.yaml

Předchozí příkaz vytvoří vystavitele pro vystavování certifikátů serveru TLS. Poznamenejte si název a druh vystavitele. V příkladu je my-issuer název a druh je Issuer. Tyto hodnoty se později nastaví v prostředku BrokerListener.

Povolení automatické správy certifikátů TLS pro port

Následuje příklad prostředku BrokerListener, který umožňuje protokol TLS na portu 8884 s automatickou správou certifikátů.

  1. Na webu Azure Portal přejděte do vaší instance ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte nebo vytvořte naslouchací proces. Pro každý typ služby můžete vytvořit pouze jeden naslouchací proces. Pokud už máte naslouchací proces stejného typu služby, můžete do existujícího naslouchacího procesu přidat další porty.

  4. Nastavení protokolu TLS můžete do naslouchacího procesu přidat tak, že vyberete protokol TLS na existujícím portu nebo přidáte nový port.

    Snímek obrazovky s využitím webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení s automatickými certifikáty TLS

    Zadejte následující nastavení:

    Nastavení Description
    Name Název prostředku BrokerListener. Zadejte aio-broker-loadbalancer-tls.
    Port Číslo portu, na kterém BrokerListener naslouchá připojení MQTT. Zadejte 8884.
    Ověřování Referenční informace k prostředkům ověřování.
    Autorizace Referenční informace k prostředkům autorizace.
    Protokol TLS Vyberte tlačítko Přidat.
    Název vystavitele Název vystavitele cert-manageru Povinný:
    Druh vystavitele Druh vystavitele cert-manageru Povinný:
    Skupina vystavitelů Skupina vystavitele cert-manageru Povinný:
    Algoritmus privátního klíče Algoritmus pro privátní klíč
    Zásady obměně privátních klíčů Zásady pro obměně privátního klíče
    Názvy DNS Alternativní názvy subjektu DNS pro certifikát
    Adresy IP IP adresy alternativních názvů subjektu pro certifikát.
    Název tajného klíče Tajný klíč Kubernetes obsahující klientský certifikát X.509
    Doba trvání Celková životnost certifikátu serveru TLS je výchozí hodnota 90 dnů.
    Prodloužit před Kdy začít obnovovat certifikát.
  5. Výběrem možnosti Použít uložíte nastavení protokolu TLS.

Jakmile je prostředek BrokerListener nakonfigurovaný, zprostředkovatel MQTT automaticky vytvoří novou službu se zadaným portem a povoleným protokolem TLS.

Volitelné: Konfigurace parametrů certifikátu serveru

Jedinými požadovanými parametry jsou název vystavitele a druh vystavitele. Všechny ostatní vlastnosti vygenerovaných certifikátů serveru TLS se vyberou automaticky. Zprostředkovatel MQTT však umožňuje přizpůsobit určité vlastnosti podle stejné syntaxe jako certifikáty nástroje cert-manager. Můžete například zadat algoritmus privátního klíče a zásady obměně. Tato nastavení jsou v tls.certManagerCertificateSpec podokně konfigurace protokolu TLS na webu Azure Portal.

Úplný seznam těchto nastavení naleznete v tématu Zprostředkovatel listener CertManagerCertificateSpec ROZHRANÍ API.

Ověření nasazení

Pomocí kubectl zkontrolujte, jestli je spuštěná služba přidružená k prostředku BrokerListener. V příkladu výše je aio-broker-loadbalancer-tls název služby a obor názvů je azure-iot-operations. Následující příkaz zkontroluje stav služby:

$ 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

Připojení ke zprostředkovateli pomocí protokolu TLS

Po nakonfigurování certifikátu serveru je povolený protokol TLS. Testování pomocí moskvitu:

mosquitto_pub -h $HOST -p 8884 -V mqttv5 -i "test" -t "test" -m "test" --cafile ca.crt

Argument --cafile povolí protokol TLS na klientovi mosquitto a určuje, že klient by měl důvěřovat všem certifikátům serveru vydaným daným souborem. Musíte zadat soubor, který obsahuje vystavitele nakonfigurovaného certifikátu serveru TLS.

Nahraďte $HOST příslušným hostitelem:

Nezapomeňte v případě potřeby zadat metody ověřování.

Výchozí kořenová certifikační autorita a vystavitel

Aby vám to pomohlo začít, nasadí se operace Azure IoT s výchozím certifikátem certifikační autority pro rychlý start a vystavitelem pro certifikáty serveru TLS. Tento vystavitel můžete použít pro vývoj a testování. Další informace najdete v tématu Výchozí kořenová certifikační autorita a vystavitel pro certifikáty serveru TLS.

V produkčním prostředí musíte nakonfigurovat vystavitele certifikační autority s certifikátem od důvěryhodné certifikační autority, jak je popsáno v předchozích částech.

Konfigurace protokolu TLS s ruční správou certifikátů

Pokud chcete ručně nakonfigurovat zprostředkovatele MQTT tak, aby používal konkrétní certifikát TLS, zadejte ho v prostředku BrokerListener s odkazem na tajný klíč Kubernetes a nasaďte ho pomocí kubectl. Tento článek ukazuje příklad, který konfiguruje protokol TLS s certifikáty podepsanými svým držitelem pro testování.

Vytvoření certifikační autority pomocí rozhraní příkazového řádku kroku

Krok je správce certifikátů, který vás rychle zprovozní při vytváření a správě vlastní privátní certifikační autority.

  1. Nainstalujte rozhraní příkazového řádku kroku a vytvořte certifikát a klíč kořenové certifikační autority (CA).

    step certificate create --profile root-ca "Example Root CA" root_ca.crt root_ca.key
    
  2. Vytvořte certifikát a klíč zprostředkující certifikační autority podepsaný kořenovou certifikační autoritou.

    step certificate create --profile intermediate-ca "Example Intermediate CA" intermediate_ca.crt intermediate_ca.key \
    --ca root_ca.crt --ca-key root_ca.key
    

Vytvoření certifikátu serveru

Pomocí rozhraní příkazového řádku krok vytvořte certifikát serveru z podepsaného zprostředkující certifikační autoritou.

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

mqtts-endpoint Tady jsou localhost alternativní názvy subjektu (SANs) pro front-end zprostředkovatele MQTT v Kubernetes a místních klientech. Pokud se chcete připojit přes internet, přidejte --san externí IP adresu. Příznaky --no-password --insecure se používají k testování, aby se přeskočí výzvy k zadání hesla a zakázala ochranu heslem pro privátní klíč, protože je uložená v tajném kódu Kubernetes. V produkčním prostředí použijte heslo a privátní klíč uložte do zabezpečeného umístění, jako je Azure Key Vault.

Požadavky na algoritmus klíče certifikátu

Podporují se klíče EC i RSA, ale všechny certifikáty v řetězu musí používat stejný algoritmus klíče. Pokud importujete vlastní certifikáty certifikační autority, ujistěte se, že certifikát serveru používá stejný algoritmus klíče jako certifikační autority.

Import řetězu certifikátů serveru jako tajného kódu Kubernetes

  1. Vytvořte úplný řetěz certifikátů serveru, ve kterém záleží na pořadí certifikátů: certifikát serveru je první certifikát v souboru, zprostředkující je druhý.

    cat  mqtts-endpoint.crt intermediate_ca.crt  > server_chain.crt
    
  2. Vytvořte tajný klíč Kubernetes s řetězem certifikátů serveru a klíčem serveru pomocí kubectl.

    kubectl create secret tls server-cert-secret -n azure-iot-operations \
    --cert server_chain.crt \
    --key mqtts-endpoint.key
    

Povolení ruční správy certifikátů TLS pro port

Následuje příklad prostředku BrokerListener, který umožňuje protokol TLS na portu 8884 s ruční správou certifikátů.

  1. Na webu Azure Portal přejděte k vaší instanci ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte nebo vytvořte naslouchací proces. Pro každý typ služby můžete vytvořit pouze jeden naslouchací proces. Pokud už máte naslouchací proces stejného typu služby, můžete do existujícího naslouchacího procesu přidat další porty. Pokud chcete postupovat podle příkladu, zadejte název služby naslouchacího procesu jako mqtts-endpoint.

  4. Nastavení protokolu TLS můžete do naslouchacího procesu přidat tak, že vyberete protokol TLS na existujícím portu nebo přidáte nový port.

    Snímek obrazovky s využitím webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení s ručními certifikáty TLS

    Zadejte následující nastavení:

    Nastavení Popis
    Port Číslo portu, na kterém BrokerListener naslouchá připojení MQTT. Povinný:
    Ověřování Referenční informace k prostředkům ověřování.
    Autorizace Referenční informace k prostředkům autorizace.
    Protokol TLS Vyberte tlačítko Přidat.
    Název tajného klíče Tajný klíč Kubernetes obsahující klientský certifikát X.509
  5. Výběrem možnosti Použít uložíte nastavení protokolu TLS.

Připojení ke zprostředkovateli pomocí protokolu TLS

Pokud chcete otestovat připojení TLS s klientem mosquitto, publikujte zprávu a předejte kořenový certifikát certifikační autority v parametru --cafile.

mosquitto_pub -d -h localhost -p 8885 -i "my-client" -t "test-topic" -m "Hello" --cafile root_ca.crt

Nezapomeňte zadat uživatelské jméno, heslo atd. pokud je povolené ověřování zprostředkovatele MQTT.

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

Tip

Pokud chcete použít localhost, musí být port dostupný na hostitelském počítači. Například kubectl port-forward svc/mqtts-endpoint 8885:8885 -n azure-iot-operations. S některými distribucemi Kubernetes, jako je K3d, můžete přidat přesměrovaný port s k3d cluster edit $CLUSTER_NAME --port-add 8885:8885@loadbalancer.

Poznámka:

Pokud se chcete připojit ke zprostředkovateli, musíte distribuovat kořen důvěryhodnosti, označovaný také jako sada důvěryhodnosti, všem klientům. V tomto případě je kořenem vztahu důvěryhodnosti kořenová certifikační autorita podepsaná svým držitelem vytvořená pomocí podrobného rozhraní příkazového řádku. Aby klient ověřil řetěz certifikátů serveru, vyžaduje se distribuce kořenového adresáře důvěryhodnosti. Pokud jsou klienti MQTT úlohami v clusteru Kubernetes, musíte také vytvořit objekt ConfigMap s kořenovou certifikační autoritou a připojit ho do podu.

Použití externí IP adresy pro certifikát serveru

Pokud se chcete připojit pomocí protokolu TLS přes internet, musí mít certifikát serveru zprostředkovatele MQTT svůj externí název hostitele nebo IP adresu jako síť SAN. V produkčním prostředí se obvykle jedná o název DNS nebo dobře známou IP adresu. Během vývoje/testování ale možná nevíte, jaký název hostitele nebo externí IP adresa je přiřazená před nasazením. Pokud chcete tento problém vyřešit, nasaďte nejprve naslouchací proces bez certifikátu serveru, vytvořte certifikát serveru a tajný klíč s externí IP adresou a naimportujte tajný kód do naslouchacího procesu.

Pokud se pokusíte nasadit ukázkový naslouchací proces manual-tls-listener TLS, ale odkazovaný tajný klíč server-cert-secret Kubernetes neexistuje, vytvoří se přidružená služba, ale pody se nespustí. Služba se vytvoří, protože operátor musí rezervovat externí IP adresu pro naslouchací proces.

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

Toto chování se však očekává při importu certifikátu serveru. Protokoly správce stavu zmíní, že zprostředkovatel MQTT čeká na certifikát serveru.

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.

Poznámka:

Obecně platí, že v distribuovaném systému nejsou protokoly podů deterministické a měly by se používat s opatrností. Správný způsob, jak se dostat k informacím, je prostřednictvím událostí Kubernetes a stavu vlastních prostředků, které jsou v backlogu. Představte si předchozí krok jako dočasné alternativní řešení.

I když front-endové pody nejsou vzhůru, externí IP adresa je už dostupná.

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

Odsud postupujte stejným postupem jako předtím a vytvořte certifikát serveru s touto externí IP adresou --san a stejným způsobem vytvořte tajný klíč Kubernetes. Po vytvoření tajného kódu se automaticky naimportuje do naslouchacího procesu.