Cloud Databases-Bereitstellung mit einer IBM Cloud Kubernetes Service-Anwendung verbinden
Das Repository Cloud Databases "Hello World" Kubernetes-Beispiele enthält IBM Cloud®-Beispielanwendungen, die in verschiedenen Programmiersprachen geschrieben sind und zeigen, wie man eine Cloud Databases-Bereitstellung mit einer IBM Cloud Kubernetes Service-Anwendung verbindet.
Jede Git-Verzweigung des Beispielrepositorys entspricht Beispielen in einer bestimmten Programmiersprache, entweder JavaScript, das Node.js verwendet, oder Python. Die Dateien in jedem Ordner entsprechen entweder einer Datenbank oder einer Nachrichtenwarteschlange.
Beispielanwendungen ausprobieren
Klonen Sie das entsprechende Repository, das Sie verwenden möchten. Sie können zum Beispiel das Repository Knoten klonen, indem Sie den Zweig Knoten auswählen. Klicken Sie anschließend auf Klonen oder herunterladen, um die zu klonende URL mithilfe von SSH oder HTTPS abzurufen. Dieser Befehl sieht wie folgt aus:
git clone -b node git@github.com:IBM-Cloud/clouddatabases-helloworld-kubernetes-examples.git
Oder mithilfe von HTTPS klonen:
git clone -b node https://github.com/IBM-Cloud/clouddatabases-helloworld-kubernetes-examples.git
Nachdem die Verzweigung geklont wurde, wählen Sie das entsprechende Verzeichnis für die Datenbank aus, die Sie ausprobieren möchten. Jede Datenbank verfügt über eine eigene Kopie dieser Anweisungen zur Einrichtung und Bereitstellung einer Datenbank oder Nachrichtenwarteschlange und einer Anwendung unter IBM Cloud Kubernetes Service.
Ausführung in IBM Cloud
-
Wenn Sie noch kein Konto bei IBM Cloud haben, können Sie sich hier anmelden.
-
IBM Cloud-CLI herunterladen und installieren. Mit dem IBM Cloud-CLI-Tool können Sie über Ihre Konsole oder CLI mit IBM Cloud kommunizieren.
-
Installieren Sie das Kubernetes Service-CLI-Plug-in und das Container Registry-CLI-Plug-in.
ibmcloud plugin install container-service ibmcloud plugin install container-registryFühren Sie zum Überprüfen der Installation den folgenden Befehl aus:
ibmcloud plugin listSie erhalten eine Antwort wie die folgende:
Listing installed plug-ins... Plugin Name Version Status container-registry 0.1.382 container-service/kubernetes-service 0.3.34 -
Laden Sie die Kubernetes-CLI herunter und installieren Sie sie.
Befolgen Sie die Anweisungen zum Herunterladen und Installieren der Kubernetes-CLI für die verwendete Plattform.
-
Stellen Sie im CLI-Tool eine Verbindung zu IBM Cloud her und folgen Sie den Eingabeaufforderungen für die Anmeldung.
ibmcloud loginWenn Sie über eine föderierte Benutzer-ID verfügen, verwenden Sie den Befehl
ibmcloud login --sso, um sich mit Ihrer Single-Sign-on-ID anzumelden.
Datenbank erstellen
Bei diesem Vorgang wird eine Standard-Datenbankinstanz in dem von Ihnen angegebenen Dienst erstellt, für den in Ihrem gewählten Tarif zusätzliche Kosten anfallen können.
-
Sie müssen eine Ressourcengruppe anvisieren, indem Sie den folgenden Befehl verwenden:
ibmcloud target -g <RESOURCE_GROUP>
Weitere Informationen finden Sie unter Mit Ressourcen und Ressourcengruppen arbeiten (ibmcloud-Ressource).
-
Die Datenbank kann über die Befehlszeilenschnittstelle mit dem Befehl
ibmcloud resource service-instance-createerstellt werden. Für den Befehl ist ein Serviceinstanzname, ein Servicename, ein Planname und ein Standort erforderlich. -
Der Name des Dienstes ist einer der folgenden Cloud Databases Dienste:
databases-for-elasticsearch,databases-for-mongodb,databases-for-postgresql,databases-for-redis,messages-for-rabbitmq, oderdatabases-for-mysql.ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_NAME> standard <REGION>
Merken Sie sich den Namen der Datenbankinstanz. Suchen Sie hier Ihre Regions-ID.
Das vorherige Beispiel stellt eine Shared Compute-Instanz bereit. Weitere Informationen finden Sie in der Übersicht zu Hostingmodellen.
Kubernetes-App konfigurieren
-
Kubernetes Service erstellen. Wählen Sie die Position und die Ressourcengruppe aus, in der Sie Ihren Cluster einrichten wollen. Wählen Sie den Clustertyp aus, den Sie verwenden möchten. Dieses Beispiel erfordert nur den Lite-Plan, der mit einem Workerknoten geliefert wird. Nachdem ein Cluster bereitgestellt wurde, erhalten Sie eine Liste mit Schritten, um auf Ihren Cluster zuzugreifen und die Umgebungsvariablen auf der Registerkarte Zugriff festzulegen. Sie können auch überprüfen, dass Ihre Bereitstellung eingerichtet wurde und normal ausgeführt wird.
-
Stellen Sie sicher, dass die korrekte IBM Cloud-Ressourcengruppe der Kubernetes Service-Instanz ausgewählt ist.
Wenn Ihre Ressourcengruppe einen anderen Namen als
defaulthat, verwenden Sie den folgenden Befehl als Ziel für Ihre Clusterressourcengruppe:ibmcloud target -g <RESOURCE_GROUP_NAME>In diesem Beispiel wird die Ressourcengruppe
defaultverwendet. -
Erstellen Sie ein eigenes privates Image-Repository in Container Registry, um das Docker-Image Ihrer Anwendung zu speichern. Da die Images privat sein sollen, muss ein Namensbereich erstellt werden, durch den eine eindeutige URL zu Ihrem Image-Repository erstellt wird.
ibmcloud cr namespace-add <YOUR_NAMESPACE> -
Fügen Sie Ihrem Cluster die Cloud Databases-Bereitstellung hinzu.
ibmcloud ks cluster service bind --cluster <YOUR_CLUSTER_NAME> --namespace default --service <INSTANCE_NAME_OR_CRN>Der Standardnamensbereich bezieht sich auf die Kubernetes-Instanz und nicht auf den vom Benutzer erstellten Namensbereich des Imagespeichers. Wenn Ihre Datenbank sowohl öffentliche als auch private Endpunkte verwendet, wird in gleicher Weise standardmäßig Ihr öffentlicher Endpunkt verwendet. Wenn Sie den privaten Endpunkt auswählen möchten, müssen Sie daher zunächst einen Serviceschlüssel für Ihre Datenbank erstellen, damit Kubernetes diesen beim Binden an die Datenbank verwenden kann. Sie können einen Serviceschlüssel mit dem folgenden Befehl einrichten:
ibmcloud resource service-key-create <YOUR-PRIVATE-KEY> --instance-name <INSTANCE_NAME_OR_CRN> --service-endpoint privateDer private Serviceendpunkt wird mithilfe von
--service-endpoint privateausgewählt. Danach binden Sie die Datenbank über den privaten Endpunkt mit dem Befehl an den Kubernetes-Clusteribmcloud ks cluster service bind <YOUR_CLUSTER_NAME> default <INSTANCE_NAME_OR_CRN> --key <YOUR-PRIVATE-KEY> -
Stellen Sie sicher, dass der geheime Kubernetes-Schlüssel im Namensbereich Ihres Clusters erstellt wurde. Kubernetes verwendet geheime Schlüssel, um vertrauliche Informationen zu speichern, wie z. B. den API-Schlüssel von IBM Cloud Identity and Access Management (IAM) und die URL, die der Container für den Zugriff verwendet. Führen Sie die folgenden Befehle aus, um den Cluster als Kontext für die Sitzung festzulegen und dann den API-Schlüssel für den Zugriff auf die Instanz Ihrer Implementierung abzurufen
ibmcloud ks cluster config --cluster <CLUSTER_NAME_OR_ID>Dann
kubectl get secrets --namespace=defaultSpeichern Sie den Namen des geheimen Schlüssels, der bei der Bindung von
your_database_namean den Kubernetes-Service generiert wurde. -
Falls Sie dies noch nicht ausgeführt haben, müssen Sie die App mithilfe des folgenden Befehls über die Konsole in einer der verfügbaren Sprachen in Ihre lokale Umgebung klonen:
git clone -b <LANGUAGE> git@github.com:IBM-Cloud/clouddatabases-helloworld-kubernetes-examples.git -
Wechseln Sie mit
cdin dieses neu erstellte Verzeichnis und ebenfalls mitcdin den Datenbankordner. Der Code, mit dem eine Verbindung zum Service hergestellt wird und mit dem Lese- und Aktualisierungsvorgänge für die Datenbank ausgeführt werden, befindet sich in der Dateiserver.js. In Codestruktur und den Codekommentaren finden Sie Informationen zu den Funktionen der App. Einpublic-Verzeichnis enthält HTML, Style-Sheets und JavaScript für die Webanwendung. Damit die Anwendung jedoch funktioniert, müssen Sie zunächst das Docker-Image dieser Anwendung mit Push-Operation an Container Registry übertragen. -
Erstellen die das Docker-Image der Anwendung und übertragen Sie es mithilfe einer Push-Operation an die Container Registry-Instanz. Geben Sie die entsprechende Region an und legen Sie einen Namen für den Container fest.
ibmcloud cr build -t <REGION>.icr.io/<NAMESPACE>/<CONTAINER_NAME> .Sie können das Image in der Container-Registry anzeigen, indem Sie Folgendes verwenden
ibmcloud cr imagesDie Antwort ähnelt dem Folgenden:
REPOSITORY TAG DIGEST NAMESPACE CREATED SIZE SECURITY STATUS <region>.icr.io/mynamespace/container_name latest 81c3959ea657 mynamespace 4 hours ago 28 MB No Issues -
Aktualisieren Sie die Konfigurationsdatei
clouddb-deployment.yamlder Kubernetes-Bereitstellung.Ändern Sie den Namen für
imagein den Repositorynamen, den Sie im vorherigen Schritt abgerufen haben:image: "<REGION>.icr.io/mynamespace/<container_name>" # Edit meÄndern Sie nun unter
secretKeyRefden Namen von<db-secret-name>so, dass er dem Namen des geheimen Schlüssels entspricht, der erstellt wurde, als Sie Ihre Datenbankbereitstellung an Ihren Kubernetes-Cluster gebunden haben.secretKeyRef: name: <DB-SECRET-NAME> # Edit meWie bei der
service-Konfiguration am Ende der Datei gibtnodePortden Port an, über den auf die Anwendung zugegriffen werden kann. Sie verfügen über Ports im Bereich von 30000 bis 32767, die Sie alle verwenden können; wir wählen jedoch 30081 aus. Der TCP-Port ist auf 8080 gesetzt. Dies ist der Port, an dem die Node.js-Anwendung im Container ausgeführt wird.
Kubernetes-App bereitstellen
-
Stellen Sie die Anwendung in Kubernetes Service bereit. Beim Bereitstellen der Anwendung wird sie automatisch an Ihren Kubernetes-Cluster gebunden.
kubectl apply -f clouddb-deployment.yaml -
Rufen Sie die IP für die Anwendung ab.
ibmcloud ks workers -c <CLUSTER_NAME>Das Ergebnis ähnelt dem Folgenden:
ID Public IP PrivateIP Machine Type State Status Zone Version kube-hou02-pa1a59e9fd92f44af9b4147a27a31db5c4-w1 199.199.99.999 10.76202.188 free normal Ready hou02 1.10.11_1536Sie können nun über die öffentliche IP und Port 30082 auf die Anwendung zugreifen.
Die App "clouddatabases-helloworld" zeigt den Inhalt einer Beispiele-Datenbank an. Um zu demonstrieren, dass die App mit Ihrem Service verbunden ist, fügen Sie der Datenbank einige Wörter hinzu. Die Wörter werden sofort beim Hinzufügen angezeigt, wobei die zuletzt hinzugefügten Wörter zuerst angezeigt werden.
Codestruktur
| Datei | Beschreibung |
|---|---|
| server.js | Stellt eine Verbindung zur Datenbank her, indem es Anmeldeinformationen von BINDING verwendet (der Name, den wir in der Kubernetes-Bereitstellungsdatei erstellt haben, um die Anmeldeinformationen anzuzeigen) und führt Erstellungs- und Lesevorgänge in der Datenbank durch. |
| main.js | Verarbeitet Benutzereingaben für den Befehl PUT und analysiert die Ergebnisse des Befehls GET, um den Inhalt der Datenbank auszugeben. |
Die App verwendet eine PUT- und eine GET-Operation:
-
PUT
- Verarbeitet die Benutzereingabe von 'main.js'.
- Fügt die Benutzereingabe der Datenbank hinzu.
-
ERLANGEN
- Ruft den Inhalt der Datenbank ab.
- Gibt die Antwort des Datenbankbefehls an 'main.js' zurück.