Blog

So stellen Sie Elasticsearch auf Azure AKS Automated bereit

Erfahren Sie, wie Sie Elasticsearch mit Kibana auf Azure mithilfe von AKS Automatic und ECK für eine teilweise verwaltete Elasticsearch-Setup-Konfiguration bereitstellen.

Dieser Artikel ist Teil einer Reihe, in der wir lernen werden, wie man Elasticsearch mithilfe verschiedener Infrastrukturen installiert.

Elasticsearch-Bereitstellungsbemühungen

ECK erfordert deutlich mehr Aufwand als die Marketplace-basierten Elastic Cloud-Lösungen, ist aber stärker automatisiert als die manuelle Bereitstellung von VMs, da der Kubernetes-Operator die Systemorchestrierung und die Skalierung der Knoten übernimmt.

Dieses Mal werden wir mit dem Azure Kubernetes Service (AKS) arbeiten und dabei die automatische Methode verwenden. In den anderen Artikeln erfahren Sie, wie Sie Azure VM und Azure Marketplace nutzen.

Was ist AKS Automatic?

Der Azure Kubernetes Service (AKS) verwaltet automatisch die Clusterkonfiguration, weist Ressourcen dynamisch zu und integriert bewährte Sicherheitspraktiken bei gleichzeitiger Beibehaltung der Flexibilität von Kubernetes. Dadurch können Entwickler innerhalb von Minuten vom Container-Image zur bereitgestellten Anwendung gelangen.

AKS Automatic beseitigt den Großteil des Aufwands für die Clusterverwaltung und schafft ein gutes Gleichgewicht zwischen Einfachheit und Flexibilität. Die richtige Wahl hängt von Ihrem Anwendungsfall ab, aber die Entscheidung wird einfacher, wenn Sie Folgendes planen:

  • Bereitstellung einer Testumgebung: Die Bereitstellung ist schnell und unkompliziert und eignet sich daher ideal für schnelle Experimente oder kurzlebige Cluster.

  • Arbeiten Sie ohne strenge VM-, Speicher- oder Netzwerkanforderungen: AKS Automatic bietet vordefinierte Standardeinstellungen. Wenn diese Ihren Bedürfnissen entsprechen, erspart Ihnen das zusätzliche Konfigurationsaufwand.

  • So starten Sie zum ersten Mal mit Kubernetes: AKS Automatic übernimmt einen Großteil der Cluster-Einrichtung, senkt die Lernkurve und ermöglicht es Teams, sich auf ihre Anwendungen zu konzentrieren.

 So erstellen Sie einen automatischen Azure Kubernetes Service (AKS)-Cluster

Quelle: Schnellstart: Erstellen eines automatischen Azure Kubernetes Service (AKS)-Clusters (Vorschau)

Für Elasticsearch werden wir Elastic Cloud on Kubernetes (ECK) verwenden, den offiziellen Elastic Kubernetes Operator, der die Orchestrierung von Kubernetes-Bereitstellungen des Elastic Stack vereinfacht.

So richten Sie AKS Automatic ein

1. Melden Sie sich beim Microsoft Azure Portal an.

2. Klicken Sie oben rechts. Klicken Sie auf die Schaltfläche „Cloud Shell“ , um auf die Konsole zuzugreifen und den AKS-Cluster von dort aus bereitzustellen. Alternativ können Sie die Azure Cloud Shell verwenden.

Denken Sie daran, die Projekt-ID während des Tutorials durch Ihre eigene zu ersetzen.

Das Öffnen des AKS sollte wie im obigen Screenshot aussehen.

3. Installieren Sie die Azure CLI-Erweiterung aks-preview. Diese Vorabversion ermöglicht es uns, bei der Clustererstellung --sku automatic auszuwählen, wodurch die AKS-Automatikfunktion aktiviert wird.

az extension add --name aks-preview

Wenn Sie diese Meldung sehen, bedeutet dies, dass die AKS-Erweiterung ordnungsgemäß installiert wurde.

4. Registrieren Sie Feature-Flags mit dem Befehl az feature register

az feature register --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Sie sehen nun die Details zu dem soeben erstellten Funktionsabonnement:

Überprüfen Sie den Registrierungsstatus, bis er sich von „ Registrierung läuft“ in „ Registriert“ ändert. Die Registrierung kann einige Minuten dauern.

az feature show --namespace Microsoft.ContainerService --name AutomaticSKUPreview

Führen Sie az provider register aus, um die Änderungen zu verbreiten.

az provider register --namespace Microsoft.ContainerService

5. Erstellen Sie eine Ressourcengruppe

Eine Ressourcengruppe ist eine logische Gruppe von Azure-Ressourcen, die verwaltet und bereitgestellt werden sollen.

az group create --name elastic-resource --location eastus

6. Erstellen Sie einen Autopilot-Cluster. Wir werden es myAKSAutomaticCluster nennen und die soeben erstellte Ressourcengruppe verwenden. Stellen Sie sicher, dass auf einer der folgenden VM-Größen 16 vCPUs verfügbar sind: Standard_D4pds_v5, Standard_D4lds_v5, Standard_D4ads_v5, Standard_D4ds_v5, Standard_D4d_v5, Standard_D4d_v4, Standard_DS3_v2, Standard_DS12_v2, damit AKS Ressourcen zuweisen kann.

az aks create \
    --resource-group elastic-resource \
    --name myAKSAutomaticCluster \
    --sku automatic \
    --generate-ssh-keys

* FallsMissingSubscriptionRegistration-Fehler auftreten , gehen Sie mit den fehlenden Abonnements zurück zu Schritt 4. Beispielsweise erfordert The subscription is not registered to use namespace 'microsoft.insights'die Ausführung vonaz provider register --namespace Microsoft.Insights.

Folgen Sie dem interaktiven Login:

Es erscheint eine Meldung mit der Aufforderung, „az login“ auszuführen. Sie müssen diesen Befehl ausführen und dann warten.

7. Warten Sie, bis es fertig ist. Die Erstellung dauert etwa 10 Minuten.

8. Konfigurieren Sie den Zugriff auf die kubectl-Befehlszeile.

az aks get-credentials --resource-group elastic-resource --name myAKSAutomaticCluster

Beachten Sie, dass die von uns installierte Erweiterung AKS Automatic aktiviert.

9. Bestätigen Sie, dass die Knoten bereitgestellt wurden.

kubectl get nodes

Es wird eine Fehlermeldung angezeigt, die den Zugriff verweigert. Kopieren Sie die Benutzer-ID aus der Fehlermeldung.

10. Fügen Sie Ihren Benutzer zur AKS-Zugriffskontrolle hinzu.

AKS-ID abrufen. Kopiere die Ausgabe des Befehls.

az aks show --resource-group elastic-resource  --name myAKSAutomaticCluster --query id --output tsv

Erstellen Sie eine Rollenzuweisung mithilfe der AKS-ID und der Principal-ID Ihres Benutzers.

az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --assignee <PRINCIPAL_ID> --scope <AKS_ID>

11. Versuchen Sie erneut zu überprüfen, ob die Knoten bereitgestellt wurden.

kubectl get nodes

12. Installieren Sie den Elastic Cloud on the Kubernetes (ECK)-Operator.

# Install ECK Custom Resource Definitions
kubectl create -f https://download.elastic.co/downloads/eck/2.16.1/crds.yaml

# Install the ECK operator
kubectl apply -f https://download.elastic.co/downloads/eck/2.16.1/operator.yaml

13. Wir erstellen eine Elasticsearch-Instanz mit einem einzelnen Knoten und den Standardwerten.

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 9.0.0
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false
EOF

Wir haben nmap deaktiviert, da die Standard-AKS-Maschine einen zu niedrigen Wert für vm.max_map_count hat. Für den Produktivbetrieb wird von einer Deaktivierung abgeraten, stattdessen sollte der Wert von vm.max_map_count erhöht werden. Mehr dazu können Sie hier nachlesen.

14. Wir werden auch einen Kibana-Einzelknotencluster bereitstellen. Für Kibana werden wir einen Load Balancer hinzufügen, der uns eine externe IP-Adresse bereitstellt, über die wir Kibana von unserem Gerät aus erreichen können.

cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 9.0.0
  http:
    service:
      spec:
        type: LoadBalancer
  count: 1
  elasticsearchRef:
    name: quickstart
EOF

Standardmäßig konfiguriert AKS Automatic den Load Balancer als öffentlich; Sie können dieses Verhalten ändern, indem Sie die Metadaten-Annotation festlegen:

service.beta.kubernetes.io/azure-load-balancer-internal: "true"

15. Überprüfen Sie, ob Ihre Pods ausgeführt werden.

kubectl get pods

16. Sie können auch kubectl get elasticsearch und kubectl get kibana ausführen, um spezifischere Statistiken wie Elasticsearch-Version, Knoten und Zustand zu erhalten.

17. Greifen Sie auf Ihre Dienste zu.

kubectl get svc

Hier wird Ihnen die externe URL für Kibana unter EXTERNAL-IP angezeigt. Es kann einige Minuten dauern, bis der Load Balancer bereitgestellt ist. Kopieren Sie den Wert von EXTERNAL-IP.

18. Ermitteln Sie das Elasticsearch-Passwort für den Benutzer „elastic“:

kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode

19. Greifen Sie über Ihren Browser auf Kibana zu :

a. URL: https://:5601<EXTERNAL_IP>

b. Benutzername:elastic

c. Passwort:c44A295CaEt44D6xIzN6Zs5m (aus dem vorherigen Schritt)

20. Wenn Sie Elastic Cloud über Ihren Browser aufrufen, wird Ihnen der Begrüßungsbildschirm angezeigt.

Wenn Sie die Spezifikationen des Elasticsearch-Clusters ändern möchten, z. B. die Anzahl oder Größe der Knoten anpassen, können Sie das YML-Manifest mit den neuen Einstellungen erneut anwenden:

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 9.0.0
  nodeSets:
    - name: default
      count: 2
      config:
        node.store.allow_mmap: false
      podTemplate:
        spec:
          containers:
            - name: elasticsearch
              resources:
                requests:
                  memory: 1.5Gi
                  cpu: 2
                limits:
                  memory: 1.5Gi
                  cpu: 2
EOF

In diesem Beispiel fügen wir einen weiteren Knoten hinzu und modifizieren RAM und CPU. Wie Sie sehen können, zeigt kubectl get elasticsearch jetzt 2 Knoten an:

Das Gleiche gilt für Kibana:

cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 9.0.0
  http:
    service:
      spec:
        type: LoadBalancer
  count: 1
  elasticsearchRef:
    name: quickstart
  podTemplate:
    spec:
      containers:
        - name: kibana
          env:
            - name: NODE_OPTIONS
              value: "--max-old-space-size=1024"
          resources:
            requests:
              memory: 0.5Gi
              cpu: 0.5
            limits:
              memory: 1Gi
              cpu: 1
EOF

Wir können die CPU/RAM-Auslastung des Containers sowie die Speichernutzung von Node.js (max-old-space-size) anpassen.

Beachten Sie, dass bestehende Volumenansprüche nicht reduziert werden können. Nach der Installation des Updates kann der Betreiber die Änderungen mit minimalen Unterbrechungszeiten vornehmen.

Denken Sie daran, den Cluster nach Abschluss der Tests zu löschen, um unnötige Kosten zu vermeiden.

az aks delete --name myAKSAutomaticCluster --resource-group elastic-resource

Fazit

Die Verwendung von Azure AKS Automatic mit ECK bietet eine ausgewogene Lösung für die Bereitstellung von Elasticsearch und Kibana: Sie reduziert die operative Komplexität, gewährleistet automatisierte Skalierung und Aktualisierungen und nutzt die Flexibilität von Kubernetes. Dieser Ansatz ist ideal für Teams, die einen zuverlässigen, wiederholbaren und wartungsfreundlichen Bereitstellungsprozess wünschen, ohne jedes Infrastrukturdetail manuell verwalten zu müssen. Daher ist er eine praktische Wahl sowohl für Test- als auch für Produktionsumgebungen.

Wie geht es weiter?

Wenn Sie mehr über Kubernetes erfahren möchten, können Sie die offizielle Dokumentation hier einsehen:

Zugehörige Inhalte

So migrieren Sie Daten zwischen verschiedenen Versionen von Elasticsearch und zwischen Clustern

Kofi Bartlett

Einführung der Elasticsearch-Abfrageregeln-Benutzeroberfläche in Kibana

Jhon Guzmán

Elasticsearch in JavaScript richtig anwenden, Teil II

Jeffrey Rengifo

Implementierung der semantischen Suche: Erstellen einer Rezeptsuche mit Elasticsearch

Andre Luiz

So stellen Sie Elasticsearch auf dem AWS Marketplace bereit

Eduard Martin

Sind Sie bereit, hochmoderne Sucherlebnisse zu schaffen?

Eine ausreichend fortgeschrittene Suche kann nicht durch die Bemühungen einer einzelnen Person erreicht werden. Elasticsearch wird von Datenwissenschaftlern, ML-Ops-Experten, Ingenieuren und vielen anderen unterstützt, die genauso leidenschaftlich an der Suche interessiert sind wie Sie. Lasst uns in Kontakt treten und zusammenarbeiten, um das magische Sucherlebnis zu schaffen, das Ihnen die gewünschten Ergebnisse liefert.

Probieren Sie es selbst aus