Installieren der Event Grid-Erweiterung in einem Kubernetes-Cluster mit Azure Arc-Unterstützung

Dieser Artikel führt Sie durch die Schritte zur Installation von Event Grid auf einem Azure Arc-fähigen Kubernetes-Cluster.

Der Kürze halber wird in diesem Artikel „Event Grid auf der Kubernetes Erweiterung“ als „Event Grid auf Kubernetes“ oder einfach als „Event Grid“ bezeichnet.

Wichtig

Event Grid in Kubernetes mit Azure Arc befindet sich derzeit in der öffentlichen Vorschau. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Unterstützte Kubernetes-Distributionen

Nachfolgend sind die unterstützten Kubernetes-Versionen aufgeführt, auf denen Event Grid bereitgestellt und ausgeführt werden kann.

  1. Von Azure AKS unterstützte Kubernetes-Distributionen.
  2. RedHat OpenShift Container-Plattform.

Bezeichnung der Event Grid-Erweiterung

Der Vorgang zum Installieren einer Event Grid-Serviceinstanz in einem Kubernetes-Cluster ist die Erstellung einer Azure Arc-Clustererweiterung, die sowohl einen Event Grid-Broker als auch einen Event Grid-Operator bereitstellt. Weitere Informationen zur Funktion des Brokers und Operators finden Sie unter Event Grid für Kubernetes-Komponenten. Das Feature Azure Arc-Clustererweiterung ermöglicht die Lebenszyklusverwaltung mit ARM-Vorgängen (Azure Resource Manager auf Steuerungsebene für eine Event Grid-Instanz, die in Kubernetes-Clustern mit Azure Arc-Unterstützung bereitgestellt ist.

Hinweis

Die Vorschauversion des Diensts unterstützt nur eine einzelne Instanz der Event Grid-Erweiterung in einem Kubernetes-Cluster, da die Event Grid-Erweiterung derzeit als Erweiterung im Clusterbereich definiert ist. Es werden noch keine Bereitstellungen auf Namespace-Ebene für Event Grid unterstützt, die es ermöglichen würden, mehrere Instanzen in einem Cluster bereitzustellen. Weitere Informationen finden Sie unter Erweiterungsbereich.

Voraussetzungen

Bevor Sie mit der Installation von Event Grid fortfahren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind.

  1. Ein Cluster, der in einer der unterstützten Kubernetes-Distributionen ausgeführt wird.
  2. Ein Azure-Abonnement.
  3. PKI-Zertifikate, die zum Herstellen einer HTTPS-Verbindung mit dem Event Grid Broker verwendet werden.
  4. Verbinden Sie Ihren Cluster mit Azure Arc.

Anfordern von Support

Wenn Sie auf ein Problem stoßen, finden Sie im Abschnitt Fehlerbehebung Unterstützung für häufige Umstände. Wenn weiterhin Probleme auftreten, erstellen Sie eine Azure-Supportanfrage.

PKI-Zertifikatanforderungen

Der Event Grid Broker (Server) bedient zwei Arten von Clients. Die Serverauthentifizierung erfolgt mithilfe von Zertifikaten. Die Clientauthentifizierung erfolgt entweder anhand von Zertifikaten oder SAS-Schlüsseln basierend auf dem Clienttyp.

  • Event Grid-Operatoren, die Anforderungen auf Steuerungsebene an den Event Grid-Broker stellen, werden mithilfe von Zertifikaten authentifiziert.
  • Event Grid-Herausgeber von Ereignissen für ein Event Grid-Thema werden anhand der Thema-bezogenen SAS-Schlüssel authentifiziert.

Um eine sichere HTTPS-Kommunikation mit dem Event Grid-Broker und Event Grid-Operator zu gewährleisten, verwenden wir PKI-Zertifikate während der Installation der Event Grid-Erweiterung. Dies sind die allgemeinen Anforderungen für diese PKI-Zertifikate:

  1. Die Zertifikate und Schlüssel müssen X.509-Zertifikat und Privacy-Enhanced Mail PEM-verschlüsselt sein.

  2. Um das Event Grid Brokerzertifikat (Server) während der Installation zu einzurichten, müssen Sie Folgendes bereitstellen:

    1. Ein CA-Zertifikat
    2. Ein öffentliches Zertifikat
    3. Ein privater Schlüssel
  3. Zur Konfiguration des Event Grid-Operator-Zertifikats (Client) müssen Sie Folgendes bereitstellen:

    1. Ein CA-Zertifikat
    2. Ein öffentliches Zertifikat
    3. Ein privater Schlüssel

    Veröffentlichungsclients können das Event Grid-Broker-CA-Zertifikat verwenden, um den Server beim Veröffentlichen von Ereignissen in einem Thema zu validieren.

    Wichtig

    Während eine mit einem Client verbundene Domäne über mehr als ein öffentliches Zertifikat verfügen kann, das von verschiedenen Zertifizierungsstellen ausgestellt wurde, erlaubt Event Grid auf Kubernetes nur das Hochladen eines einzigen CA-Zertifikats für Clients bei der Installation von Event Grid. Folglich sollten die Zertifikate für den Event-Grid-Betreiber von der gleichen CA ausgestellt (signiert) sein, zur erfolgreichen Validierung der Zertifikatskette und der erfolgreichen Einrichtung einer TLS-Session.

  4. Wenn Sie den Common Name (CN) für Server- und Client-Zertifikate konfigurieren, stellen Sie sicher, dass sie sich von dem CN unterscheiden, der für das Zertifikat der Zertifizierungsstelle bereitgestellt wird.

    Wichtig

    Für anfängliche Proof-of-Concept-Phasen können selbstsignierte Zertifikate eine Option sein, aber im Allgemeinen sollten ordnungsgemäße PKI-Zertifikate, die von einer Zertifizierungsstelle (CA) signiert sind, beschaffen und verwendet werden.

Installation mit dem Azure-Portal

  1. Suchen Sie auf dem Azure-Portal (obiges Feld) nach Azure Arc

  2. Wählen Sie im linken Menü im Abschnitt Infrastruktur die Option Kubernetes-Cluster aus

  3. Suchen Sie in der Liste der Cluster nach dem Cluster, in dem Sie Event Grid installieren möchten, und wählen Sie ihn aus. Die Übersichts- Seite für den Cluster wird angezeigt.

    Auswählen Ihres Kubernetes-Clusters

  4. Wählen Sie Erweiterungen in der Gruppe Einstellungen im linken Menü.

  5. Klicken Sie auf + Hinzufügen. Eine Seite mit den verfügbaren Azure Arc Kubernetes-Erweiterungen wird angezeigt.

    Clustererweiterungen – Schaltfläche „Hinzufügen“

  6. Wählen Sie auf der Seite Neue RessourceEvent Grid in Kubernetes-Erweiterung aus.

    Auswählen von „Event Grid in Kubernetes-Erweiterung“

  7. Wählen Sie auf der Seite Event Grid in Kubernetes-Erweiterung die Option Erstellen aus.

    Auswählen des Erstellens der Kubernetes-Erweiterung

  8. Führen Sie auf der Seite Event Grid installieren auf der Registerkarte Grundlagen die folgenden Schritte aus.

    1. Im Projektdetails-Abschnitt werden schreibgeschützte Abonnement- und Ressourcengruppenwerte angezeigt, da Azure Arc-Erweiterungen unter demselben Azure-Abonnement und derselben Ressourcengruppe des verbundenen Clusters bereitgestellt werden, auf dem sie installiert sind.

    2. Geben Sie im Feld Name der Event Grid Erweiterung einen Namen an. Dieser Name sollte unter anderen Azure Arc-Erweiterungen, die auf demselben mit Azure Arc verbundenen Cluster bereitgestellt werden, eindeutig sein.

    3. Für den Release-Namespacekönnen Sie den Namen eines Kubernetes-Namespace angeben, in dem Event Grid-Komponenten bereitgestellt werden. Angenommen, Sie möchten, dass für alle Dienste mit Azure Arc-Unterstützung in Ihrem Cluster ein einzelner Namespace bereitgestellt wird. Der Standardwert ist eventgrid-system. Wenn der angegebene Namespace nicht vorhanden ist, wird er für Sie erstellt.

    4. Im Abschnitt Event Grid Broker-Details wird der Service-Typ angezeigt. Der Event-Grid-Broker, der die Komponente ist, welche die Topic-Endpunkte bereitstellt, an die Ereignisse gesendet werden, wird als Kubernetes-Dienst vom Typ ClusterIP bereitgestellt. Daher verwenden die IPs, die allen Themen zugewiesen sind, den für den Cluster konfigurierten privaten IP-Raum.

    5. Geben Sie den Speicherklassennamen an, den Sie für den Broker verwenden möchten und der von Ihrer Kubernetes-Distribution unterstützt wird. Wenn Sie z. B. AKS nutzen, könnten Sie azurefile verwenden, welches wiederum Azure Storage Standard verwendet. Weitere Informationen zu vordefinierten Speicherklassen, die von AKS unterstützt werden, finden Sie unter Speicherklassen in AKS. Wenn Sie andere Kubernetes-Distributionen verwenden, finden Sie in der Dokumentation zur Kubernetes-Verteilung Informationen zu unterstützten vordefinierten Speicherklassen oder zur Bereitstellung Ihrer eigener Speicherklassen.

    6. Speichergröße. Der Standardwert ist 1 GB. Berücksichtigen Sie die Erfassungsrate, wenn Sie die Größe Ihres Speichers bestimmen. Die Erfassungsrate in MiB/Sekunde, gemessen als Größe Ihrer Ereignisse, mit der Veröffentlichungsrate (Ereignisse pro Sekunde) multipliziert in allen Themen auf dem Event Grid Broker ist ein wichtiger Faktor bei der Speicherzuweisung. Ereignisse sind vorübergehender Natur, und sobald sie übermittelt wurden, ist kein Speicherverbrauch für diese Ereignisse vorhanden. Die Erfassungsrate ist zwar ein Haupttreiber für die Speichernutzung, jedoch nicht der einzige. Die Metadaten, welche die Themen- und Ereignisabonnementkonfiguration enthalten, verbrauchen ebenfalls Speicherplatz, das erfordert jedoch in der Regel eine geringere Menge an Speicherplatz als die Ereignisse, die von Event Grid aufgenommen und geliefert werden.

    7. Arbeitsspeicherlimit. Der Standardwert ist 1 GB.

    8. Arbeitsspeicheranforderung. Der Standardwert ist 200 MB. Dieses Feld kann nicht bearbeitet werden.

      Installieren der Event Grid Erweiterung – Grundlagen-Seite

    9. Wählen Sie Weiter: Konfiguration im unteren Teil der Seite aus.

  9. Gehen Sie auf der Registerkarte Konfiguration der Seite Event Grid installieren wie folgt vor:

    1. HTTP-Kommunikation aktivieren (unsicher) . Aktivieren Sie dieses Kontrollkästchen, wenn Sie einen nicht gesicherten Kanal verwenden möchten, wenn Clients mit dem Event Grid Broker kommunizieren.

      Wichtig

      Wenn Sie diese Option aktivieren, wird für die Kommunikation mit dem Event Grid-Broker HTTP als Transportmittel verwendet. Daher können ein beliebiger Publishing-Client und der Event-Grid-Betreiber nicht sicher mit dem Event-Grid-Broker kommunizieren. Sie sollten diese Option nur in den frühen Phasen der Entwicklung verwenden.

    2. Wenn Sie die HTTP-Kommunikation nicht aktiviert haben, wählen Sie jede der PKI-Zertifikatdateien aus, die Sie beschaffen haben, und erfüllen Sie die PKI-Zertifikatanforderungen.

      Installieren der Event Grid Erweiterung – Einstellungen-Seite

    3. Wählen Sie am Ende der Seite Weiter: Überwachen aus.

  10. Gehen Sie auf der Registerkarte Überwachung der Seite Event Grid installieren wie folgt vor:

    1. Wählen Sie Metriken aktivieren aus (optional). Wenn Sie diese Option auswählen, stellt Event Grid in Kubernetes Metriken für Themen und Ereignisabonnements im Prometheus-Darstellungsformat dar.

      Installieren der Event Grid Erweiterung – Überwachungsseite

    2. Wählen Sie Weiter: Tags um zur Tags-Seite zu navigieren.

  11. Führen Sie auf der Seite Tags die folgenden Schritte aus:

    1. Definieren Sie Tags bei Bedarf.

      Installieren der Event Grid Erweiterung – Tags-Seite

    2. Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.

  12. Wählen Sie auf der Registerkarte Überprüfen + erstellen die Option Erstellen aus.

    Installieren der Event Grid-Erweiterung – Überprüfen und Erstellen-Seite

    Wichtig

    Bei der Installation von Event Grid handelt es sich um einen asynchronen Vorgang, dessen Ausführung auf dem Kubernetes-Cluster die Zeit überschreiten kann, zu der Sie im Azure-Portal eine Benachrichtigung sehen, dass die Bereitstellung abgeschlossen ist. Warten Sie mindestens 5 Minuten, nachdem eine Benachrichtigung mit dem Hinweis angezeigt wird, dass Ihre Bereitstellung abgeschlossen ist, bevor Sie versuchen, einen benutzerdefinierten Speicherort zu erstellen (nächster Schritt). Wenn Sie über Zugriff auf dem Kubernetes-Cluster verfügen, können Sie in einer Bash-Session den folgenden Befehl ausführen, um zu überprüfen, ob sich die Pods des Event Grid-Brokers und Event Grid-Operators im Ausführungs-Status befinden, was darauf hindeuten würde, dass die Installation abgeschlossen wurde:

    kubectl get pods -n \<release-namespace-name\>
    

    Hier ist die Beispielausgabe:

    NAME                                  READY   STATUS    RESTARTS   AGE
    eventgrid-broker-568f75976-wxkd2      1/1     Running   0          2m28s
    eventgrid-operator-6c4c6c675d-ttjv5   1/1     Running   0          2m28s    
    

    Wichtig

    Ein benutzerdefinierter Speicherort muss erstellt werden, bevor versucht wird, Event Grid bereitzustellen. Um einen benutzerdefinierten Speicherort zu erstellen, können Sie die Kontext-Seite in den letzten 5 Minuten nach der Anzeige des Bereitstellungs-Abschlusses auswählen. Alternativ können Sie einen benutzerdefinierten Speicherort mithilfe des Azure-Portals erstellen. Weitere Informationen finden Sie unter Erstellen und Verwalten benutzerdefinierter Standorte in Kubernetes mit Azure Arc-Unterstützung.

  13. Nach der erfolgreichen Bereitstellung wird auf der Seite Erweiterungen ein Eintrag mit dem Namen angezeigt, den Sie für Ihre Event Grid-Erweiterung angegeben haben. Wenn für den Installationsstatus der Wert Ausstehend angezeigt wird, warten Sie einige Minuten, und wählen Sie dann auf der Symbolleiste Aktualisieren aus.

    Event Grid-Erweiterung – installiert

Installation mit der Azure CLI

  1. Starten Sie eine Shellsitzung. Sie können eine Sitzung auf Ihrem Computer starten oder einen Browser für https://shell.azure.com öffnen.

  2. Erstellen Sie die Konfigurationsdatei protected-settings-extension.json. Diese Datei wird beim Erstellen der Event Grid-Erweiterung als Parameter übergeben.

    Ersetzen Sie im folgenden Befehl und in jeder der Konfigurationszeilen filename durch den Namen, der das öffentliche Zertifikat, das Zertifizierungsstellenzertifikat oder den Schlüssel für den Operator (Client) oder Broker (Server) enthält. Alle bereitgestellten Zertifikate sollten base64-codiert ohne Zeilenumbruch sein. Daher die Verwendung des base64 --wrap=0-Befehls.

    echo "{ 
        \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityKey\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityCaCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridbroker.service.tls.base64EncodedServerCert\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerKey\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerCaCert\":  \"$(base64 <filename> --wrap=0)\" 
    }" > protected-settings-extension.json 
    

    Wenn das öffentliche Zertifikat für den Broker (erstes Konfigurationselement oben) beispielsweise client.cer heißt, sollte die erste Konfigurationszeile wie die folgende aussehen:

    \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 client.cer --wrap=0)\",    
    
  3. Erstellen Sie die Konfigurationsdatei settings-extension.json. Diese Datei wird beim Erstellen der Event Grid-Erweiterung als Parameter übergeben.

    Wichtig

    Sie dürfen die Werte für ServiceAccount und serviceType nicht ändern. In der Vorschauversion wird nur der Kubernetes-Diensttyp ClusterIP unterstützt.

    Geben Sie für storageClassName den Speicherklassennamen an, den Sie für den Broker verwenden möchten, und der von Ihrer Kubernetes-Distribution unterstützt wird. Wenn Sie z. B. AKS nutzen, könnten Sie azurefile verwenden, welches wiederum Azure Storage Standard verwendet. Weitere Informationen zu vordefinierten Speicherklassen, die von AKS unterstützt werden, finden Sie unter Speicherklassen in AKS. Wenn Sie andere Kubernetes-Distributionen verwenden, finden Sie in der Dokumentation zur Kubernetes-Verteilung Informationen zu unterstützten vordefinierten Speicherklassen oder zur Bereitstellung Ihrer eigener Speicherklassen.

    Setzen Sie reporterType auf prometheus, um Metriken für Themen und Ereignisabonnements im Prometheus-Expositionsformat zu aktivieren.

    Wichtig

    Während der Vorschauversion ist die Verwendung eines Prometheus-Clients der einzige unterstützte Mechanismus zum Abrufen von Metriken.

    echo "{
        \"Microsoft.CustomLocation.ServiceAccount\":\"eventgrid-operator\",
        \"eventgridbroker.service.serviceType\": \"ClusterIP\",
        \"eventgridbroker.dataStorage.storageClassName\": \"<storage_class_name>\",
        \"eventgridbroker.diagnostics.metrics.reporterType\":\"prometheus\"
    }" > settings-extension.json
    
  4. Erstellen Sie eine Kubernetes-Erweiterung, die Event Grid-Komponenten in Ihrem Cluster installiert.

    Für die Parameter cluster-name und resource-group müssen Sie die gleichen Namen verwenden, die beim Verbinden Ihres Clusters mit Azure Arc angegeben wurden.

    release-namespace ist der Namespace, in dem Event Grid-Komponenten bereitgestellt werden. Der Standardwert ist eventgrid-system. Möglicherweise möchten Sie einen Wert angeben, um den Standardwert zu überschreiben. Angenommen, Sie möchten, dass für alle Dienste mit Azure Arc-Unterstützung in Ihrem Cluster ein einzelner Namespace bereitgestellt wird. Wenn der angegebene Namespace nicht vorhanden ist, wird er für Sie erstellt.

    Wichtig

    Während der Vorschauversion ist cluster der einzige Bereich, der beim Erstellen oder Aktualisieren einer Event Grid-Erweiterung unterstützt wird. Das bedeutet, dass der Dienst nur eine einzelne Instanz der Event Grid-Erweiterung in einem Kubernetes-Cluster unterstützt. Bereitstellungen im Namespacebereich werden noch nicht unterstützt. Weitere Informationen finden Sie unter Erweiterungsbereich.

    az k8s-extension create \
        --cluster-type connectedClusters \
        --cluster-name <connected_cluster_name> \
        --resource-group <resource_group_of_connected_cluster> \
        --name <event_grid_extension_name> \
        --extension-type Microsoft.EventGrid \
        --scope cluster \
        --auto-upgrade-minor-version true \
        --release-train Stable \
        --release-namespace <namespace_name> \
        --configuration-protected-settings-file protected-settings-extension.json \
        --configuration-settings-file settings-extension.json    
    

    Weitere Informationen zum CLI-Befehl finden Sie unter az k8s-extension create. Beachten Sie, dass Sie den Parameter --config-file verwenden können, um den Namen einer JSON-Datei zu übergeben, die Konfigurationsinformationen im Zusammenhang mit Event Grid enthält. Um HTTP zu unterstützen, schließen Sie die folgende Einstellung ein.

    "eventgridbroker.service.supportedProtocols[0]": "http" 
    

    Hier sehen Sie ein Beispiel für settings-extension.json mit der obigen Einstellung.

    {
        "Microsoft.CustomLocation.ServiceAccount": "eventgrid-operator",
        "eventgridbroker.service.serviceType": "ClusterIP",
        "eventgridbroker.service.supportedProtocols[0]": "http",
        "eventgridbroker.dataStorage.storageClassName": "default",
        "eventgridbroker.diagnostics.metrics.reporterType": "prometheus"
    }    
    
  5. Überprüfen Sie, ob die Event Grid-Erweiterung erfolgreich installiert wurde.

    az k8s-extension show  --cluster-type connectedClusters --cluster-name <connected_cluster_name> --resource-group <resource_group_of_connected_cluster> --name <event_grid_extension_name>
    

    Die installedState-Eigenschaft sollte Installed sein, wenn die Event Grid-Erweiterungskomponenten erfolgreich bereitgestellt wurden.

Benutzerdefinierter Speicherort

Wichtig

Ein benutzerdefinierter Speicherort muss erstellt werden, bevor versucht wird, Event Grid bereitzustellen. Sie können mithilfe des Azure-Portals einen benutzerdefinierten Speicherort erstellen.

Problembehandlung

Azure Arc Connect-Cluster-Probleme

Problem: Wenn Sie zu Azure Arc navigieren und im Menü auf der linken Seite Kubernetes-Cluster auswählen, wird auf der angezeigten Seite nicht der Kubernetes-Cluster angezeigt, auf dem Sie Event Grid installieren wollen.

Lösung: Ihr Kubernetes-Cluster ist nicht bei Azure registriert. Führen Sie die Schritte im Artikel Verbinden eines vorhandenen Kubernetes-Clusters mit Azure Arc aus. Falls während dieses Schritts ein Problem auftritt, stellen Sie eine Supportanfrage an das Team für Kubernetes mit Azure Arc-Unterstützung.

Probleme mit der Event Grid-Erweiterung

Problem: Wenn Sie versuchen, eine „Event Grid-Erweiterung" zu installieren, erhalten Sie die folgende Meldung: „Ungültiger Vorgang - Eine Instanz des Event Grids wurde bereits auf diesem verbundenen Kubernetes-Cluster installiert. Die Event Grid-Erweiterung ist auf Clusterebene vorgesehen, was bedeutet, dass nur eine Instanz in einem Cluster installiert werden kann."

Erklärung: Sie haben bereits Event Grid installiert. Die Vorschauversion von Event Grid unterstützt nur eine Event Grid Erweiterungsinstanz, die in einem Cluster bereitgestellt wird.

Nächste Schritte

Erstellen Sie einen benutzerdefinierten Speicherort, und befolgen Sie dann die Anweisungen im Schnellstart Weiterleiten von Cloudereignissen an Webhooks mit Azure Event Grid auf Kubernetes.