Elastic Cloud: Die Elasticsearch Service API ist jetzt allgemein verfügbar.
Mit der Elastic Cloud-Konsole erhalten Sie einen zentralen Ort, an dem Sie Ihre Deployments erstellen und verwalten, Abrechnungsinformationen anzeigen und sich über neue Versionen informieren können. In der einfachen und intuitiven Benutzeroberfläche (UI) können Sie allgemeine Verwaltungs- und administrative Aufgaben ausführen.
Eine Verwaltungs-UI ist zwar praktisch, aber viele Unternehmen wünschen sich auch eine API, um gängige Aufgaben und Workflows automatisieren zu können, insbesondere für die Verwaltung von Deployments. Wir freuen uns, die allgemein verfügbare Version der Elasticsearch Service API zu präsentieren, mit der Sie diese Workflows aktivieren können.
Sie können die API entweder direkt integrieren oder Elastic Cloud Control (ecctl) verwenden, die Befehlszeilenschnittstelle der Elastic Cloud, die jetzt auch die Elasticsearch Service API unterstützt. Bei Bedarf können Sie auch die Bibliothek cloud-sdk-go verwenden oder ein SDK in einer anderen Programmiersprache generieren.
Bevor wir Ihnen an einem Beispiel zeigen, wie Sie ein Deployment mit der Elasticsearch Service API erstellen und skalieren können, möchte ich Ihnen einige gängige Nutzungsszenarien für die API vorstellen:
Integration mit CI/CD-Pipelines
Für viele unserer Benutzer ist der Elastic Stack ein kritischer Teil ihres Produktionsstacks. Angenommen, Sie möchten Änderungen an Ihrer Anwendung vornehmen, die sich auf Elasticsearch auswirken, etwa indem Sie Abfragen optimieren oder neue Elastic Stack-Versionen testen.
Eine CI/CD-Pipeline könnte beispielsweise ein Deployment exakt nach Ihrer Spezifikation hochfahren und dabei möglicherweise einen Snapshot verwenden, um Daten aus Ihrem Produktions-Cluster einzubinden. Auf diese Weise erhalten Sie sofort Feedback für eine bestimmte Codeänderung an Ihrer Anwendung in einer Entwicklungs- oder Stagingumgebung, bevor Sie die Änderung in Ihre Produktionsumgebung übernehmen.
Onboarding für neue Teams und Anwendungsfälle
Oft ist der Elastic Stack nicht nur ein Teil des Produktionsstacks, sondern wird auch für die Observability von Anwendungen und Infrastruktur eingesetzt. Anstelle eines einzigen Deployments für verschiedene Zwecke empfehlen wir, die Anwendungsfälle und Teams nach Möglichkeit mit dedizierten Deployments voneinander zu trennen. Auf diese Weise können Sie Reibungsverluste und mögliche Nachbarschaftskonflikte vermeiden, wenn ein ressourcenintensiver Anwendungsfall - oder sogar unbeabsichtigte Bugs - eines Teams sich auf die anderen Teams auswirken.
Mit dem Elasticsearch Service können Sie eine beliebige Anzahl an Deployments mühelos verwalten. Und jetzt können Sie sogar Ihren bevorzugten Konfigurationsmanager oder Ihr Infrastruktur-als-Code-Tool, wie etwa Ansible, Chef, Puppet und Terraform oder sogar Ihr internes Unternehmensportal problemlos mit unserer API integrieren. Wenn ein neues Team einen neuen Entwicklungsstack registriert und dessen Erstellung anfordert, können Sie ohne manuelle Eingriffe ein Deployment mit der passenden Vorlage erstellen und Größe sowie Konfiguration an die Anforderungen des Teams anpassen.
Deployments skalieren
Viele unserer Benutzer möchten ihre Deployments programmgesteuert skalieren können, um diese an ein erhöhtes Nutzungsprofil anzupassen oder um während inaktiver Zeiträume die Kosten zu reduzieren. Diese Ereignisse sind manchmal vorhersehbar, etwa ein Anstieg des Besucherverkehrs für eine E-Commerce-Website an einem nationalen Feiertag, manchmal jedoch auch nicht, zum Beispiel eine Schwankung der Ressourcenverwendung durch ein ungeplantes Last-Minute-Sonderangebot. Unsere Kunden können diese zeit- oder nutzungsbasierten Skalierungs-Workflows mit einer API implementieren.
Bei der metrikbasierten Skalierung (Festplattenspeicher, CPU oder RAM) gilt es immer verschiedene Punkte zu berücksichtigen. Sie müssen beispielsweise sicherstellen, dass genügend Festplattenspeicher vorhanden ist, wenn Sie ein Deployment herunterskalieren, um die aktuelle Speichernutzung zu unterstützen.
Erste Schritte mit der Elasticsearch Service API
Diese Beispiele zeigen nur einige Vorschläge dafür, wie Sie unsere API nutzen können, um sich nicht mehr bei unserer Benutzerkonsole anmelden zu müssen, um Ihre Deployments zu verwalten. Die komplette Liste ist viel länger. Wir werden Ihnen jetzt Schritt für Schritt zeigen, wie Sie unser Befehlszeilentool ecctl oder curl verwenden können, um ein Deployment direkt über die REST API zu erstellen und zu skalieren.
1. API-Schlüssel erstellen
Um sich authentifizieren zu können, müssen Sie zunächst einen API-Schlüssel generieren, mit dem Sie sich anschließend als Kontobesitzer identifizieren. Um einen API-Schlüssel zu generieren, melden Sie sich bei der Benutzerkonsole an und navigieren Sie zur Schlüsselverwaltungsseite im Abschnitt „Account“.
Bei Bedarf können Sie mehrere API-Schlüssel generieren, um den Zugriff für mehrere Anwendungen einfacher zu verwalten, und Sie können einzelne Schlüssel unabhängig voneinander widerrufen.
Bei der Erstellung eines neuen Schlüssels müssen Sie Ihr Passwort erneut eingeben, dem Schlüssel einen Namen geben und ihn anschließend kopieren oder herunterladen. Dies ist der einzige Zeitpunkt, an dem der eigentliche Schlüssel angezeigt wird. Bewahren Sie ihn also an einem sicheren Ort auf.
2. ecctl konfigurieren
Wenn sie ecctl zum ersten Mal verwenden, müssen Sie die Software auf Ihrem lokalen Computer installieren. (Hier finden Sie die Installationsanleitung.) Falls Sie ecctl bereits auf Ihrem Computer installiert haben, stellen Sie sicher, dass Sie Version 1.0.0-beta3 oder höher verwenden, um zu garantieren, dass die hier beschriebenen Befehle unterstützt werden. Wir werden zwar auch einige Beispiele mit curl zeigen, aber wir empfehlen ecctl, da dieses Programm eine viel benutzerfreundlichere Interaktion mit unserer API ermöglicht.
Nach der Installation können Sie den Befehl ecctl init
ausführen und den Konfigurations-Assistenten verwenden. Wenn Sie zur Auswahl des Produkts aufgefordert werden, wählen Sie den Elasticsearch Service aus, wählen Sie Text oder JSON als Standardausgabe, den API-Schlüssel als Authentifizierungsmechanismus, und geben Sie den API-Schlüssel aus dem vorherigen Schritt an.
Um die Konfiguration zu überprüfen, können Sie den Befehl ecctl deployment list
ausführen, der eine Liste der aktiven Deployments zurückgibt.
3. Erstes Deployment erstellen
Sie haben jetzt alle Voraussetzungen erfüllt und können Ihr erstes Deployment erstellen. Der Elasticsearch Service unterstützt Deployment-Vorlagen, mit denen Sie ein Deployment mit den passenden Komponenten und der gewünschten Hardware für Ihren Anwendungsfall schnell und einfach erstellen können.
Beim Erstellen von Deployments mit unserer API müssen Sie angeben, welche Vorlage Sie verwenden möchten, und die Nutzlast muss mit der erwarteten Nutzlast der Vorlage übereinstimmen. Sie finden eine Liste der verfügbaren Vorlagen für Ihren Cloudanbieter und Ihre Region in unserem Benutzerhandbuch.
Für dieses Beispiel verwenden wir GCP Iowa (us-central1) und die Vorlage I/O optimized template. Kopieren sie die folgende JSON-Nutzlast und speichern Sie sie in einer Datei mit dem Namen „create-deployment.json“.
JSON-Nutzlast:
{ "name": "created-via-api", "resources": { "elasticsearch": [ { "region": "gcp-us-central1", "ref_id": "main-elasticsearch", "plan": { "cluster_topology": [ { "node_type": { "master": true, "data": true, "ingest": true }, "instance_configuration_id": "gcp.data.highio.1", "zone_count": 2, "size": { "resource": "memory", "value": 2048 } } ], "elasticsearch": { "version": "7.6.2" }, "deployment_template": { "id": "gcp-io-optimized" } } } ], "kibana": [ { "region": "gcp-us-central1", "elasticsearch_cluster_ref_id": "main-elasticsearch", "ref_id": "main-kibana", "plan": { "cluster_topology": [ { "instance_configuration_id": "gcp.kibana.1", "zone_count": 1, "size": { "resource": "memory", "value": 1024 } } ], "kibana": { "version": "7.6.2" } } } ], "apm": [ { "region": "gcp-us-central1", "elasticsearch_cluster_ref_id": "main-elasticsearch", "ref_id": "main-apm", "plan": { "cluster_topology": [ { "instance_configuration_id": "gcp.apm.1", "zone_count": 1, "size": { "resource": "memory", "value": 512 } } ], "apm": { "version": "7.6.2" } } } ] } }
Mit weiteren Konfigurationsoptionen können Sie beispielsweise einen Überwachungscluster festlegen oder einen Snapshot für die Wiederherstellung verwenden. In diesem einfachen Beispiel erstellen wir jedoch nur ein neues Deployment mit einem hochverfügbaren Elasticsearch Cluster über zwei Verfügbarkeitszonen, einer einzigen Kibana-Instanz und einem einzigen APM-Server. Jetzt müssen wir nur noch den folgenden ecctl-Befehl ausführen, und das Deployment wird erstellt.
Sie können sich auch mit der API vertraut machen, indem Sie in der Elastic Cloud-Benutzerkonsole die passende API-Anfrage für die ausgewählte Konfiguration in der Benutzeroberfläche ausgeben lassen.
ecctl:
ecctl deployment create -f create-deployment.json
Um den Fortschritt zu überwachen, können Sie in diesem und in anderen Befehlen das Flag --track
verwenden. Das Flag --help
ist allgemein sehr hilfreich, um die verfügbaren Optionen kennenzulernen.
Wenn Sie curl verwenden, können Sie dasselbe mit dem folgenden Befehl erreichen.
curl:
curl -XPOST https://api.elastic-cloud.com/api/v1/deployments \ -H "Authorization: ApiKey <API_KEY>" \ -d @create-deployment.json
Die Antwort enthält Informationen darüber, ob die Anfrage erfolgreich gesendet wurde, sowie die Deployment-ID. Kopieren Sie diese ID, da Sie sie zum Skalieren Ihres Clusters im nächsten Schritt brauchen werden. Die Antwort enthält außerdem das zufällig generierte Passwort für den Benutzer elastic
, mit dem Sie sich sofort bei Kibana anmelden oder die Elasticsearch REST API verwenden können, um Ihr Deployment zu konfigurieren oder zu verwenden.
4. Deployment skalieren
Ihr Deployment ist jetzt einsatzbereit, und wir werden uns genauer ansehen, wie Sie es skalieren können. In diesem Beispiel werden Sie die Größe Ihrer Datenknoten von 4.096 auf 8.192 MB erhöhen. Da Sie nur Änderungen an Ihrem Elasticsearch-Cluster vornehmen, sollten Sie das Feld „prune_orphans“ auf „false“ setzen. Damit geben Sie an, dass andere Komponenten, die zu Ihrem Deployment gehören (in diesem Fall Kibana und APM) nicht entfernt werden sollen.
Kopieren sie die folgende JSON-Nutzlast und speichern Sie sie in einer Datei mit dem Namen „update-deployment.json“.
JSON-Nutzlast:
{ "prune_orphans": false, "resources": { "elasticsearch": [ { "region": "gcp-us-central1", "ref_id": "main-elasticsearch", "plan": { "cluster_topology": [ { "zone_count": 2, "node_type": { "master": true, "data": true, "ingest": true, "ml": false }, "instance_configuration_id": "gcp.data.highio.1", "size": { "resource": "memory", "value": 4096 } } ], "elasticsearch": { "version": "7.6.2" }, "deployment_template": { "id": "gcp-io-optimized" } } } ] } }
Dieses Mal verwenden Sie den Befehl „update“.
ecctl:
ecctl deployment update <DEPLOYMENT_ID> -f update-deployment.json
Für curl verwenden Sie die PUT-Methode, um den neuen Plan zu übermitteln.
curl:
curl -XPUT https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID> \ -H "Authorization: ApiKey <API_KEY>" \ -d @update-deployment.json
Angenommen, Sie möchten einen Plan vor dessen Abschluss abbrechen. In diesem Fall können Sie den Planbefehl mit ecctl abbrechen, indem Sie „elasticsearch“ als Typ übergeben. Falls Sie curl verwenden, können Sie eine Löschanfrage für den ausstehenden Plan übermitteln und die ref-id von Elasticsearch angeben, z. B. „main-elasticsearch“.
ecctl:
ecctl deployment plan cancel <DEPLOYMENT_ID> --kind elasticsearch
curl:
curl -XDELETE https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID>/elasticsearch/main-elasticsearch/plan/pending \ -H "Authorization: ApiKey <API_KEY>"
5. Ressourcen bereinigen
Im letzten Schritt werden Sie den shutdown-Befehl verwenden, um das erstellte Deployment zu löschen.
ecctl:
ecctl deployment shutdown <DEPLOYMENT_ID>
Beim Übermitteln einer Löschaktion zeigt ecctl vor der Ausführung eine Bestätigungsmeldung an. Wenn Sie diesen Befehl für Ihre Automatisierung verwenden, können Sie das globale Flag --force
verwenden.
Falls Sie curl verwenden, können Sie die folgende Anfrage übermitteln:
curl:
curl -XPOST https://api.elastic-cloud.com/api/v1/deployments/<DEPLOYMENT_ID>/_shutdown \ -H "Authorization: ApiKey <API_KEY>"
Fazit
Wir haben uns verschiedene Anwendungsfälle für die Automatisierung von Deployments angesehen, um Ihnen zu zeigen, wie Sie Ihre Deployments erstellen, skalieren und herunterfahren können. Sie können unsere API auf viele weitere Arten verwenden, um verschiedene Vorgänge zu automatisieren und die erforderlichen Interaktionen zur Verwaltung Ihrer Deployments zu reduzieren.
Eine komplette Liste der verfügbaren API-Endpunkte finden Sie in den API-Beispielen im Abschnitt RESTful API in unserem Benutzerhandbuch.
Elasticsearch Service-Neuling? Registrieren Sie sich für eine 14-tägige Testversion, um die Lösung zu auszuprobieren.