Installera Event Grid-tillägget i Azure Arc-aktiverat Kubernetes-kluster

Den här artikeln vägleder dig genom stegen för att installera Event Grid i ett Azure Arc-aktiverat Kubernetes-kluster .

För korthet refererar den här artikeln till "Event Grid på Kubernetes-tillägget" som "Event Grid på Kubernetes" eller bara "Event Grid".

Viktigt

Event Grid på Kubernetes med Azure Arc är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Kubernetes-distributioner som stöds

Följande är de Kubernetes-distributioner som stöds till vilka Event Grid kan distribueras och köras.

  1. Kubernetes-distributioner som stöds av Azure AKS.
  2. RedHat OpenShift Container Platform.

Event Grid-tillägg

Åtgärden som installerar en Event Grid-tjänstinstans i ett Kubernetes-kluster är skapandet av ett Azure Arc-klustertillägg som distribuerar både en Event Grid-asynkron meddelandekö och en Event Grid-operatör. Mer information om funktionen för asynkron meddelandekö och operatör finns i Event Grid på Kubernetes-komponenter. Azure Arc-klustertilläggsfunktionen tillhandahåller livscykelhantering med hjälp av ARM-kontrollplansåtgärder (Azure Resource Manager) till Event Grid som distribuerats till Azure Arc-aktiverade Kubernetes-kluster.

Anteckning

Förhandsversionen av tjänsten stöder endast en enda instans av Event Grid-tillägget i ett Kubernetes-kluster eftersom Event Grid-tillägget för närvarande definieras som ett klusteromfattande tillägg. Det finns ännu inget stöd för namnområdesomfångsdistributioner för Event Grid som gör att flera instanser kan distribueras till ett kluster. Mer information finns i Tilläggsomfång.

Förutsättningar

Innan du fortsätter med installationen av Event Grid kontrollerar du att följande krav är uppfyllda.

  1. Ett kluster som körs på en av kubernetes-distributionerna som stöds.
  2. En Azure-prenumeration.
  3. PKI-certifikat som ska användas för att upprätta en HTTPS-anslutning med Event Grid-asynkron meddelandekö.
  4. Anslut klustret till Azure Arc.

Få support

Om du stöter på ett problem kan du få hjälp med vanliga villkor i felsökningsavsnittet. Om du fortfarande har problem skapar du en Azure Support begäran.

PKI-certifikatkrav

Event Grid Broker (server) hanterar två typer av klienter. Serverautentisering görs med certifikat. Klientautentisering görs med antingen certifikat eller SAS-nycklar baserat på klienttypen.

  • Event Grid-operatorer som gör kontrollplansbegäranden till Event Grid-koordinatorn autentiseras med certifikat.
  • Event Grid-utgivare som publicerar händelser till ett Event Grid-ämne autentiseras med ämnets SAS-nycklar.

För att upprätta en säker HTTPS-kommunikation med Event Grid-koordinatorn och Event Grid-operatorn använder vi PKI-certifikat under installationen av Event Grid-tillägget. Här är de allmänna kraven för dessa PKI-certifikat:

  1. Certifikaten och nycklarna måste vara X.509-certifikat och PRIVACY-Enhanced Mail PEM-kodade.

  2. Om du vill konfigurera Event Grid Broker-certifikatet (server) under installationen måste du ange:

    1. Ett CA-certifikat
    2. Ett offentligt certifikat
    3. En privat nyckel
  3. För att konfigurera Event Grid-operatorcertifikatet (klient) måste du ange:

    1. Ett CA-certifikat
    2. Ett offentligt certifikat
    3. En privat nyckel

    Publiceringsklienter kan använda certifikatet event grid broker CA för att verifiera servern när händelser publiceras till ett ämne.

    Viktigt

    En domän som är associerad med klienten kan ha fler än ett offentligt certifikat utfärdat av olika certifikatutfärdare, men Event Grid på Kubernetes tillåter endast uppladdning av ett enda CA-certifikat för klienter vid installation av Event Grid. Därför bör certifikaten för Event Grid-operatorn utfärdas (signeras) av samma certifikatutfärdare för att verifieringen av certifikatkedjan ska lyckas och en TLS-session upprättas.

  4. När du konfigurerar det gemensamma namnet (CN) för server- och klientcertifikat kontrollerar du att de skiljer sig från det CN som anges för certifikatutfärdarcertifikatet.

    Viktigt

    För tidiga proof-of-concept-steg kan självsignerade certifikat vara ett alternativ, men i allmänhet bör rätt PKI-certifikat som signerats av en certifikatutfärdare (CA) anskaffas och användas.

Installera med Azure Portal

  1. På Azure Portal söker du (fält överst) efter Azure Arc

  2. Välj Kubernetes-kluster på menyn till vänster i avsnittet Infrastruktur

  3. Under listan över kluster letar du upp det som du vill installera Event Grid till och väljer det. Sidan Översikt för klustret visas.

    Välj ditt Kubernetes-kluster

  4. Välj Tillägg i gruppen Inställningar på den vänstra menyn.

  5. Välj + Lägg till. En sida som visar tillgängliga Azure Arc Kubernetes-tillägg visas.

    Klustertillägg – knappen Lägg till

  6. På sidan Ny resurs väljer du Event Grid i Kubernetes-tillägget.

    Välj Event Grid i Kubernetes-tillägget

  7. På sidan Event Grid på Kubernetes-tillägget väljer du Skapa.

    Välj Skapa Kubernetes-tillägg

  8. På fliken Grunder på sidan Installera Event Grid följer du dessa steg.

    1. I avsnittet Projektinformation visas skrivskyddade prenumerations- och resursgruppsvärden eftersom Azure Arc-tillägg distribueras under samma Azure-prenumeration och resursgrupp i det anslutna kluster där de är installerade.

    2. Ange ett namn i fältet Event Grid-tilläggsnamn . Det här namnet bör vara unikt bland andra Azure Arc-tillägg som distribueras till samma Azure Arc-anslutna kluster.

    3. För Versionsnamnområde kanske du vill ange namnet på ett Kubernetes-namnområde där Event Grid-komponenter ska distribueras till. Du kanske till exempel vill ha ett enda namnområde för alla Azure Arc-aktiverade tjänster som distribueras till klustret. Standardvärdet är eventgrid-system. Om det angivna namnområdet inte finns skapas det åt dig.

    4. I avsnittet Information om Event Grid-asynkron meddelandekö visas tjänsttypen. Event Grid-asynkron meddelandekö, som är den komponent som exponerar de ämnesslutpunkter som händelser skickas till, exponeras som en Kubernetes-tjänsttyp ClusterIP. Därför använder IP-adresser som tilldelats till alla ämnen det privata IP-utrymme som konfigurerats för klustret.

    5. Ange namnet på lagringsklassen som du vill använda för asynkron meddelandekö och som stöds av din Kubernetes-distribution. Om du till exempel använder AKS kan du använda azurefile, som använder Azure Standard Storage. Mer information om fördefinierade lagringsklasser som stöds av AKS finns i Lagringsklasser i AKS. Om du använder andra Kubernetes-distributioner kan du läsa kubernetes-distributionsdokumentationen för fördefinierade lagringsklasser som stöds eller hur du kan ange dina egna.

    6. Lagringsstorlek. Standardvärdet är 1 GiB. Tänk på inmatningshastigheten när du fastställer storleken på din lagring. Inmatningshastighet i MiB/sekund mätt som storleken på dina händelser gånger publiceringsfrekvensen (händelser per sekund) för alla ämnen i Event Grid-asynkron meddelandekö är en nyckelfaktor vid allokering av lagring. Händelser är tillfälliga till sin natur och när de har levererats finns det ingen lagringsförbrukning för dessa händelser. Inmatningshastigheten är en viktig drivrutin för lagringsanvändning, men den är inte den enda. Konfiguration av metadata som innehåller ämne och händelseprenumeration förbrukar också lagringsutrymme, men det kräver normalt en lägre mängd lagringsutrymme än de händelser som matas in och levereras av Event Grid.

    7. Minnesgräns. Standardvärdet är 1 GiB.

    8. Minnesbegäran. Standardvärdet är 200 MiB. Det här fältet kan inte redigeras.

      Installera Event Grid-tillägget – sidan Grundläggande

    9. Välj Nästa: Konfiguration längst ned på sidan.

  9. Gör följande på fliken Konfiguration på sidan Installera Event Grid :

    1. Aktivera HTTP-kommunikation (inte säker). Markera den här kryssrutan om du vill använda en icke-skyddad kanal när klienter kommunicerar med Event Grid-meddelandekön.

      Viktigt

      Om du aktiverar det här alternativet används HTTP som transport i kommunikationen med Event Grid-meddelandekön. Därför kommunicerar inte någon publiceringsklient och Event Grid-operatorn med Event Grid-meddelandekön på ett säkert sätt. Du bör endast använda det här alternativet under tidiga utvecklingsstadier.

    2. Om du inte har aktiverat HTTP-kommunikation väljer du var och en av de PKI-certifikatfiler som du har köpt och uppfyller PKI-certifikatkraven.

      Installera Event Grid-tillägget – konfigurationssidan

    3. Välj Nästa: Övervakning längst ned på sidan.

  10. Gör följande på fliken Övervakning på sidan Installera Event Grid :

    1. Välj Aktivera mått (valfritt). Om du väljer det här alternativet exponerar Event Grid på Kubernetes mått för ämnen och händelseprenumerationer med hjälp av Prometheus-expositionsformatet.

      Installera Event Grid-tillägget – övervakningssidan

    2. Välj Nästa: Taggar för att gå till sidan Taggar .

  11. Gör följande på sidan Taggar :

    1. Definiera taggar om det behövs.

      Installera Event Grid-tillägget – sidan Taggar

    2. Välj Granska + skapa längst ned på sidan.

  12. På fliken Granska + skapa väljer du Skapa.

    Installera Event Grid-tillägget – granska och skapa sida

    Viktigt

    Installationen av Event Grid är en asynkron åtgärd som kan köras längre i Kubernetes-klustret än när du ser ett meddelande på Azure-portalen som informerar om att distributionen är klar. Vänta minst 5 minuter efter att du ser ett meddelande om att "Distributionen är klar" innan du försöker skapa en anpassad plats (nästa steg). Om du har åtkomst till Kubernetes-klustret kan du i en bash-session köra följande kommando för att kontrollera om Event Grid-asynkron meddelandekö och Event Grid-operatörspoddar är i körningstillstånd, vilket indikerar att installationen har slutförts:

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

    Här är exempelutdata:

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

    Viktigt

    En anpassad plats måste skapas innan du försöker distribuera Event Grid-ämnen. Om du vill skapa en anpassad plats kan du välja sidan Kontext längst ned 5 minuter efter att meddelandet "Distributionen är klar" visas. Du kan också skapa en anpassad plats med hjälp av Azure Portal. Mer information finns i dokumentationen om anpassad plats.

  13. När distributionen är klar kan du se en post på sidan Tillägg med det namn som du angav i Event Grid-tillägget. Om du ser Väntandeinstallationsstatus väntar du några minuter och väljer sedan Uppdatera i verktygsfältet.

    Event Grid-tillägg – installerat

Installera med Azure CLI

  1. Starta en shell-session. Du kan starta en session på datorn eller öppna en webbläsare till https://shell.azure.com.

  2. Skapa konfigurationsfilen protected-settings-extension.json. Den här filen skickas som en parameter när du skapar Event Grid-tillägget.

    I följande kommando och i var och en av konfigurationsraderna ersätter filename du med namnet som innehåller det offentliga certifikatet, CA-certifikatet eller nyckeln för operatorn (klienten) eller asynkron meddelandekö (server) i enlighet därmed. Alla certifikat som tillhandahålls ska vara base64-kodade utan radbrytning. Därför används base64 --wrap=0 kommandot .

    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 
    

    Om till exempel det offentliga certifikatet för den asynkrona meddelandekön (det första konfigurationsobjektet ovan) kallas client.cerbör den första konfigurationsraden se ut som följande:

    \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 client.cer --wrap=0)\",    
    
  3. Skapa konfigurationsfilen settings-extension.json. Den här filen skickas som en parameter när du skapar Event Grid-tillägget.

    Viktigt

    Du kanske inte ändrar värdena för ServiceAccount och serviceType. Den enda Kubernetes-tjänsttypen som stöds i förhandsversionen är ClusterIP.

    Ange storageClassName den lagringsklass som du vill använda för den asynkrona meddelandekön och som stöds av din Kubernetes-distribution. Om du till exempel använder AKS kan du använda azurefile , som använder Azure Standard Storage. Mer information om fördefinierade lagringsklasser som stöds av AKS finns i Lagringsklasser i AKS. Om du använder andra Kubernetes-distributioner kan du läsa dokumentationen om Kubernetes-distribution för fördefinierade lagringsklasser som stöds eller hur du kan ange egna.

    Ange reporterType till prometheus för att aktivera mått för ämnen och händelseprenumerationer med hjälp av Prometheus-expositionsformatet.

    Viktigt

    Under förhandsversionen är användning av en Prometheus-klient den enda mekanism som stöds för att hämta mått.

    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. Skapa ett Kubernetes-tillägg som installerar Event Grid-komponenter i klustret.

    För parametrar cluster-name och resource-groupmåste du använda samma namn som när du anslöt klustret till Azure Arc.

    release-namespace är det namnområde där Event Grid-komponenter ska distribueras till. Standardvärdet är eventgrid-system. Du kanske vill ange ett värde för att åsidosätta standardvärdet. Du kanske till exempel vill ha ett enda namnområde för alla Azure Arc-aktiverade tjänster som distribueras till klustret. Om det angivna namnområdet inte finns skapas det åt dig.

    Viktigt

    Under förhandsversionen cluster är det enda omfång som stöds när du skapar eller uppdaterar ett Event Grid-tillägg. Det innebär att tjänsten endast stöder en enda instans av Event Grid-tillägget i ett Kubernetes-kluster. Det finns ännu inget stöd för namnområdesomfångsdistributioner. Mer information finns i Tilläggsomfång.

    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    
    

    Mer information om CLI-kommandot finns i az k8s-extension create. Observera att du kan använda parametern --config-file för att skicka namnet på en json-fil som innehåller konfigurationsinformation relaterad till Event Grid. Ta med följande inställning för att stödja HTTP.

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

    Här är ett exempel på settings-extension.json med ovanstående inställning.

    {
        "Microsoft.CustomLocation.ServiceAccount": "eventgrid-operator",
        "eventgridbroker.service.serviceType": "ClusterIP",
        "eventgridbroker.service.supportedProtocols[0]": "http",
        "eventgridbroker.dataStorage.storageClassName": "default",
        "eventgridbroker.diagnostics.metrics.reporterType": "prometheus"
    }    
    
  5. Kontrollera att Event Grid-tillägget har installerats.

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

    Egenskapen installedState ska vara Installed om Event Grid-tilläggskomponenterna har distribuerats.

Anpassad plats

Viktigt

En anpassad plats måste skapas innan du försöker distribuera Event Grid-ämnen. Du kan skapa en anpassad plats med hjälp av Azure Portal.

Felsökning

Problem med Azure Arc-anslutningskluster

Problem: När du navigerar till Azure Arc och väljer Kubernetes-kluster på menyn till vänster visas inte kubernetes-klustret där jag tänker installera Event Grid.

Lösning: Kubernetes-klustret är inte registrerat i Azure. Följ stegen i artikeln Ansluta ett befintligt Kubernetes-kluster till Azure Arc. Om du har problem under det här steget kan du skicka en supportbegäran till det Azure Arc-aktiverade Kubernetes-teamet.

Problem med Event Grid-tillägg

Problem: När du försöker installera ett "Event Grid-tillägg" visas följande meddelande: "Ogiltig åtgärd – En instans av Event Grid har redan installerats på det här anslutna Kubernetes-klustret. Event Grid-tillägget är begränsat till klusternivå, vilket innebär att endast en instans kan installeras i ett kluster."

Förklaring: Du har redan Event Grid installerat. Förhandsversionen av Event Grid stöder bara en Event Grid-tilläggsinstans som distribuerats till ett kluster.

Nästa steg

Skapa en anpassad plats och följ sedan anvisningarna i snabbstarten Dirigera molnhändelser till Webhooks med Azure Event Grid på Kubernetes.