App-Workloads aus Images in IBM Cloud Container Registry bereitstellen
Mit Code Engine können Sie eine App bereitstellen, die ein Image in IBM Cloud® Container Registry nutzt. Sie können die App in der Konsole oder in der Befehlszeilenschnittstelle erstellen.
Vorbereitende Schritte
-
In IBM Cloud® Container Registry muss ein Image vorhanden sein. Weitere Informationen enthält der Abschnitt Einführung in Container Registry. Alternativ können Sie ein Image aus einer Repository-Quelle oder aus einer lokalen Quelle erstellen.
-
Prüfen Sie, dass Sie auf die Registry zugreifen können. Weitere Informationen finden Sie unter Berechtigungen für Container-Registrys einrichten.
Möchten Sie Ihr Projekt so konfigurieren, dass alle Nutzer des Projekts Bilder in „ Container Registry “ speichern und darauf zugreifen können, ohne manuell Registrierungsgeheimnisse anlegen zu müssen? Mit ausreichenden Berechtigungen können Sie diesen Standardzugriff auf die Registry auf der Basis der einzelnen Standorte (Regionen) konfigurieren. Wenn Sie nicht über ausreichende Berechtigungen zum Ausführen dieser Aktionen verfügen, können Sie diese Seite verwenden, um die erforderlichen Berechtigungen zu verstehen. Siehe Projektweite Einstellungen konfigurieren.
App mit Referenzierung eines Images in Container Registry über die Konsole bereitstellen
Implementieren Sie eine Anwendung, die ein Image in Container Registry verwendet, mithilfe der Code Engine-Konsole.
Code Engine kann Bilder automatisch aus einem Container Registry-Namespace in Ihrem Konto mit Pull-Operation extrahieren. Informationen zum Extrahieren von Images aus einem anderen Container Registry-Konto oder einem privaten Docker Hub-Konto finden Sie unter Anwendungs-Workloads aus Images in einer privaten Registry implementieren.
- Öffnen Sie die Code Engine-Konsole.
- Wählen Sie „ Mit der Erstellung beginnen “.
- Wählen Sie ein Projekt aus der Liste der verfügbaren Projekte aus. Sie können auch ein neues erstellen. Sie müssen über ein ausgewähltes Projekt verfügen, um eine Anwendung bereitstellen zu können.
- Wählen Sie Anwendung aus.
- Geben Sie einen Namen für die Anwendung ein. Beispiel:
helloapp. Verwenden Sie einen Namen für die Anwendung, der innerhalb des Projekts eindeutig ist. - Wählen Sie „ Vorhandenes Container-Image verwenden “ aus und klicken Sie auf „ Image konfigurieren “.
- Wählen Sie einen Speicherort für die Container-Registry aus, z. B.
IBM Registry Dallas. - Wählen Sie
Code Engine managed secretfür Geheimer Registry-Schlüssel aus. Da in diesem Beispiel ein Bild aus dem Namespace „ Container Registry “ in Ihrem Konto verwendet wird, kann Code Engine das Registry-Secret automatisch für Sie erstellen und verwalten. - Wählen Sie einen vorhandenen Namensbereich und den Namen des Image in der Registry als Referenz für die Code Engine-App aus. Wählen Sie beispielsweise den Namensbereich
mynamespaceund das Imagehello_repoin diesem Namensbereich aus. - Wählen Sie einen Wert für Tag aus; z. B.
latest. - Klicken Sie auf Fertig.
- Ändern Sie alle Laufzeiteinstellungen bzw. Umgebungsvariablen für Ihre App. Weitere Informationen zu diesen Optionen finden Sie unter Optionen für Endpunktsichtbarkeit von Apps und Optionen für die Bereitstellung einer App.
- Klicken Sie auf Erstellen, um die Anwendung zu erstellen.
- Nachdem sich der Anwendungsstatus in Bereit geändert hat, können Sie die Anwendung testen. Klicken Sie auf Anwendung testen und klicken Sie anschließend im Teilfenster 'Anwendung testen' auf Anforderung senden. Um die Anwendung in einer Webseite zu öffnen, klicken Sie auf Anwendungs-URL.
Nachdem Sie Ihre Anwendung bereitgestellt haben, können Sie nun Informationen zu Anwendungsrevisionen und zu allen aktiven Instanzen sowie Konfigurationsdetails anzeigen.
Falls Sie den Registry-Zugriff zu einer Container Registry-Instanz hinzufügen wollen, die nicht in Ihren Konto enthalten ist, finden Sie im Abschnitt Zugriff auf eine Container Registry-Instanz hinzufügen weiterführende Informationen.
App mit einem Image in Container Registry über die Befehlszeilenschnittstelle bereitstellen
Implementieren Sie eine Anwendung, die ein Image in IBM Cloud® Container Registry verwendet, mit dem Befehl ibmcloud ce app create über die Befehlszeilenschnittstelle. Eine umfassende Liste der Optionen enthält
der Abschnitt über den Befehl ibmcloud ce app create.
Vorbereitende Schritte
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt und arbeiten Sie damit.
- Bevor Sie mit einer Code Engine-Anwendung arbeiten können, die auf ein Image in Container Registryverweist, müssen Sie zunächst Zugriff auf die Registry hinzufügen, damit Code Engine das Image extrahieren kann, sobald die App bereitgestellt wird. Informationen zu den erforderlichen Zugriffsberechtigungen bezüglich Image-Registrys finden Sie unter Berechtigungen für Image-Registrys einrichten.
-
Um den Zugriff auf Container Registry hinzuzufügen, erstellen Sie einen IAM-API-Schlüssel. Führen Sie zum Erstellen eines IBM Cloud IAM-API-Schlüssels in der Befehlszeilenschnittstelle den Befehl
iam api-key-createaus. Um beispielsweise einen API-Schlüssel namens „cliapikey“ mit der Beschreibung „My CLI API key“ zu erstellen und ihn in einer Datei namens „key_file“ zu speichern, führen Sie den folgenden Befehl aus:ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_fileWenn Sie Ihren Schlüssel nicht in einer Datei speichern möchten, müssen Sie den API-Schlüssel notieren, der angezeigt wird, wenn Sie ihn erstellen. Sie können ihn später nicht mehr abrufen.
-
Fügen Sie nach dem Erstellen des API-Schlüssels den Registry-Zugriff zu Code Engine hinzu. Um Zugriff auf Container Registry über die Befehlszeilenschnittstelle hinzuzufügen, verwenden Sie den Befehl
ibmcloud ce secret create --format registry, um einen geheimen Registry-Schlüssel zu erstellen. Der folgende Befehl richtet beispielsweise einen Registrierungszugriff auf eine „ Container Registry “-Instanz mit dem Namen „myregistry“ ein. Beachten Sie: Obwohl im Beispielbefehl die Optionen--serverund--usernameangegeben sind, ist der Standardwert für die Option--serverus.icr.iound die Option--usernamenimmt den Standardwertiamapikeyan, wenn der Serverus.icr.ioist.ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEYBeispielausgabe
Creating registry secret 'myregistry'... OK -
Erstellen Sie Ihre App und referenzieren Sie das Image
hello_repoin Container Registry. Mit dem Befehlibmcloud ce app createwird beispielsweise die Appmyhelloappfür die Referenzierung vonus.icr.io/mynamespace/hello_repomit den Zugriffsinformationen vonmyregistryerstellt.ibmcloud ce app create --name myhelloapp --image us.icr.io/mynamespace/hello_repo --registry-secret myregistryDer Name des Images für diese Anwendung hat das Format
REGISTRY/NAMESPACE/REPOSITORY:TAG, wobei Angaben fürREGISTRYundTAGoptional sind. WirdREGISTRYnicht angegeben, istdocker.ioder Standardwert. WirdTAGnicht angegeben, istlatestder Standardwert. -
Nachdem Ihre App bereitgestellt wurde, können Sie auf die App zugreifen. Um die URL Ihrer App abzurufen, führen Sie den Befehl
ibmcloud ce app get --name myhelloapp --output urlaus. Wenn Sie cURL bei dermyhelloapp-App anwenden, wirdHello Worldzurückgegeben.curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
Nächste Schritte
-
Nachdem Ihre App bereitgestellt wurde, greifen Sie über eine URL auf Ihre App zu.
-
Sie können eine angepasste Domänenzuordnung erstellen und sie Ihrer App zuweisen. Weitere Informationen zum Bereitstellen von Apps in mehreren Regionen mit einem angepassten Domänennamen finden Sie unter Hoch verfügbare Anwendung konfigurieren.
-
Nachdem Ihre App nun bereitgestellt ist, sollten Sie darüber nachdenken, Ihre Apps ereignisgesteuert zu gestalten. Mithilfe von Ereignissubskriptionen können Sie Ihre Apps durch regelmäßige Zeitpläne auslösen oder festlegen, dass Ihre App auf Ereignisse wie Dateiuploads oder Kafka-Nachrichten reagiert.
Nachdem Ihre App bereitgestellt wurde, können Sie Ihre bereitgestellte App aktualisieren und den zugehörigen referenzierten Code auf irgendeine der folgenden Arten verwenden, unabhängig davon, wie Sie Ihre App erstellt oder zuvor aktualisiert haben:
-
Wenn Sie über ein Container-Image gemäß dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie beim Bereitstellen Ihrer App lediglich einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist. Sie können Ihre App mit einem Image in einer öffentlichen Registry oder privaten Registry bereitstellen.
Wenn Sie Ihre App mit dem Befehl
app createerstellt und die Option--build-sourceangegeben haben, um das Container-Image aus einer lokalen Quelle oder einer Repository-Quelle zu erstellen, und Sie Ihre App so ändern wollen, dass sie auf ein anderes Container-Image verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrer App entfernen. Führen Sie beispielsweiseibmcloud ce application update -n APP_NAME --build-clearaus. Nachdem Sie die Zuordnung des Builds aus Ihrer App entfernt haben, können Sie die App aktualisieren, sodass sie auf ein anderes Image verweist. -
Wenn Sie mit Quellcode beginnen, der sich in einem Git-Repository befindet, können Sie es Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und die App mit einer einzigen Operation bereitzustellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter App aus Repository-Quellcode bereitstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image wünschen, können Sie das Image mit Code Engine erstellen, bevor Sie Ihre App implementieren.
-
Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie es Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und die App mit einem einzelnen CLI-Befehl bereitzustellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter App aus lokalem Quellcode über die CLI bereitstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image wünschen, können Sie das Image mit Code Engine erstellen, bevor Sie Ihre App implementieren.
Sie könnten beispielsweise festlegen, dass Code Engine den Build Ihrer lokalen Quelle handhaben soll, während Sie Ihre Quelle für die App weiterentwickeln. Nachdem das Image ausgereift ist, können Sie die bereitgestellte App aktualisieren, um auf das gewünschte Image zu verweisen. Sie können diesen Prozess nach Bedarf wiederholen.
Wenn Sie Ihre aktualisierte App bereitstellen, wird die neueste Version Ihres referenzierten Container-Image heruntergeladen und bereitgestellt, sofern kein Tag für das Image angegeben ist. Wenn ein Tag für das Image angegeben wird, wird das mit Tags versehene Image für die Implementierung verwendet.
Benötigen Sie weitere Codebeispiele? Schaut euch die Beispiele im Repository „ IBM Cloud Code Engine “ unter GitHub an.