Funktionsworkloads aus vorhandenen Code-Bundles erstellen
Erstellen Sie Ihre „ Code Engine “-Funktion mit einem Code-Bundle unter IBM Cloud® Container Registry. Sie können eine Funktion über die Konsole oder über die CLI erstellen.
Ein Codepaket ist eine Sammlung von Dateien, die Ihren Funktionscode darstellt. Dieses Codepaket wird in den Laufzeitcontainer eingefügt. Ihr Code-Bundle wird von Code Engine erstellt und in der Container-Registry oder in der Funktion gespeichert. Ein Codepaket ist kein OCI-Standard-Container-Image (Open Container Initiative).
Sie können Code-Bundles nur von der Website Container Registry abrufen.
Vorbereitende Schritte
-
Sie müssen über ein Codepaket in IBM Cloud® Container Registryverfügen. 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 pro Standort (Region) 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.
Funktion erstellen, die auf ein Code-Bundle in Container Registry mit der Konsole verweist
Erstellen Sie mithilfe der „ Code Engine “-Konsole eine Funktion, die ein vorhandenes Code-Bundle verwendet.
Code Engine kann Code-Bundles automatisch aus Container Registryextrahieren.
- Öffnen Sie die Code Engine-Konsole.
- Wählen Sie „ Erstellen “ aus.
- Wählen Sie ein Projekt aus der Liste der verfügbaren Projekte aus. Sie können auch ein neues erstellen. Sie müssen ein Projekt auswählen, um eine Funktion zu erstellen.
- Wählen Sie „ Funktion “ aus.
- Geben Sie einen Namen für die Funktion ein, zum Beispiel „
myfunction“. Wählen Sie für Ihre Funktion einen Namen, der innerhalb des Projekts eindeutig ist. - Wählen Sie ein Laufzeitimage für Ihren Funktionscode. Weitere Informationen finden Sie unter Laufzeiten.
- Wählen Sie Vorhandenes Code-Bundle verwenden aus.
- Geben Sie die Position Ihres Code-Bundles im Format
registry/namespace/repository:tagan. - Wenn sich Ihr Code-Bundle in Ihrem Konto oder in einer öffentlichen Registry befindet, müssen Sie keinen geheimen Registry-Schlüssel angeben. Wenn sich das Codepaket in einer privaten Registry befindet, müssen Sie den geheimen Registry-Schlüssel hinzufügen. Klicken Sie für weitere Hilfe auf Hilfe zur Angabe des Codepakets. Weitere Informationen finden Sie unter Auf Container-Registrys zugreifen.
- Geben Sie Ihre Ressourceninformationen an, einschließlich CPU-und Speicherkombinationen und Scale-down-Verzögerung.
- Geben Sie optional eine angepasste Domäne oder Umgebungsvariablen an.
- Klicken Sie auf Erstellen.
- Sobald der Funktionsstatus auf „Bereit“ wechselt, können Sie die Funktion testen. Klicken Sie auf Testfunktion und anschließend auf Anforderung senden. Um die Funktion auf einer Webseite zu öffnen, klicken Sie auf „Funktion“ URL.
Funktion mit einem vorhandenen Codepaket über die Befehlszeilenschnittstelle implementieren
Erstellen Sie eine Funktion, die ein unter IBM Cloud® Container Registry gespeichertes Code-Bundle mithilfe der CLI und des ibmcloud ce fn create Befehl. Eine vollständige Liste der Optionen finden Sie unter dem
ibmcloud ce fn create Befehl.
Vorbereitende Schritte
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt und arbeiten Sie damit.
- Bevor Sie mit einer „ Code Engine “-Funktion arbeiten können, die auf ein Code-Bundle unter Container Registry verweist, müssen Sie zunächst den Zugriff auf die Registry hinzufügen, damit Code Engine das Code-Bundle beim Erstellen der Funktion abrufen kann. Informationen zu den erforderlichen Berechtigungen für den Zugriff auf Registrys finden Sie unter Berechtigungen für Image-Registrys konfigurieren.
Funktion über eine öffentliche Registry über die Befehlszeilenschnittstelle implementieren
Wenn sich Ihr vorhandenes Codepaket in Ihrem Account oder in einer öffentlichen Registry befindet, können Sie den Befehl ibmcloud ce fn create verwenden.
Führen Sie beispielsweise den folgenden Befehl aus, um ein vorhandenes Code-Bundle aus der öffentlichen Registry zu extrahieren und eine Funktion zu erstellen.
ibmcloud ce fn create --name myhellofun --code-bundle icr.io/codeengine/samples/function-nodejs-codebundle --runtime nodejs
Führen Sie den bereitgestellten fn get Befehl aus, um die Datei „ URL “ zu finden. Anschließend können Sie den Befehl „ curl “ verwenden, um diese Datei „ URL “ aufzurufen.
Beispielausgabe aus dem vorhandenen Code-Bundle
<html><body><h3>Hello, Functions on CodeEngine!</h3></body></html>
Funktion aus einer privaten Registry über die Befehlszeilenschnittstelle implementieren
Um über eine private Registry auf ein vorhandenes Code-Bundle zugreifen zu können, müssen Sie den Zugriff auf die Registry einrichten, einen geheimen Registry-Schlüssel erstellen und diesen geheimen Schlüssel angeben, wenn Sie den Befehl ibmcloud ce fn create ausführen.
-
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.
-
Erstellen Sie nach dem Erstellen Ihres API-Schlüssels einen geheimen Registry-Schlüssel für Code Engine. Verwenden Sie zum Erstellen eines geheimen Registry-Schlüssels den Befehl
ibmcloud ce secret create --format registry. 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 Funktion und referenzieren Sie ein Code-Bundle in einer privaten Registry in Container Registry. Verwenden Sie beispielsweise den
ibmcloud ce fn createBefehl, um die Funktion „myhellofun“ zu erstellen, die mithilfe der Zugriffsinformationen von „myregistry“ auf „icr.io/codeengine/samples/function-nodejs-codebundle“ verweist.ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistryDas Format des Namens des Codebündels für diese Funktion lautet „
REGISTRY/NAMESPACE/REGISTRY:TAG“, wobei „REGISTRY“ und „TAG“ optional sind. Wenn „REGISTRY“ nicht angegeben wird, lautet die Standardeinstellung „icr.io“. WirdTAGnicht angegeben, istlatestder Standardwert. -
Nachdem Ihre Funktion erstellt hat, können Sie sie aufrufen. Um die „ URL “ Ihrer Funktion zu ermitteln, führen Sie den bereitgestellten Befehl „
ibmcloud ce fn get“ aus. Anschließend können Sie den Befehl „curl“ verwenden, um diese Datei „ URL “ aufzurufen.
Nächste Schritte
-
Nachdem Sie Ihre Funktion erstellt haben, können Sie darauf zugreifen, indem Sie in der Konsole auf „Funktion testen“ klicken oder die „ URL “ für Ihre Funktion mit dem
function getBefehl. -
Sie können eine angepasste Domänenzuordnung erstellen und sie Ihrer Funktion zuordnen.
-
Nach der Erstellung und Implementierung Ihrer Funktion können Sie die Funktion über die Konsole oder mit dem Befehl
ibmcloud ce function updateaktualisieren, um sie an Ihre Anforderungen anzupassen. Wenn Sie Ihre Quelle für die Verwendung mit Ihrer Funktion aktualisieren möchten, müssen Sie die Option „--build-source“ imfunction updateBefehl angeben.
Nachdem Sie Ihre Funktion erstellt haben, können Sie diese sowie den darin referenzierten Code auf eine der folgenden Weisen aktualisieren, unabhängig davon, wie Sie Ihre Funktion erstellt oder zuvor aktualisiert haben:
-
Wenn Sie über ein vorhandenes Code-Bundle verfügen, müssen Sie nur einen Verweis auf das Image angeben, der auf die Position Ihrer Container-Registry verweist, wenn Sie Ihre App implementieren. Weitere Informationen finden Sie unter Funktionsworkloads aus vorhandenen Code-Bundles erstellen.
Wenn Sie Ihre Funktion mit dem Befehl
function createerstellt und die Option--build-sourceangegeben haben, um das Codepaket aus einer lokalen Quelle oder einer Repository-Quelle zu erstellen, und Sie Ihre Funktion so ändern möchten, dass sie auf ein anderes Codepaket verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrer Funktion entfernen. Führen Sie beispielsweiseibmcloud ce function update -n FUN_NAME --build-clearaus. Nachdem Sie die Zuordnung des Builds zu Ihrer Funktion entfernt haben, können Sie die Funktion aktualisieren, um auf ein anderes Image zu verweisen. -
Wenn Sie mit Quellcode arbeiten, der sich in einem „ Git “-Repository befindet, können Sie Code Engine nutzen, um das Code-Bundle aus Ihrem Quellcode zu erstellen und Ihre Funktion in einem einzigen Schritt zu generieren. In diesem Szenario lädt Code Engine Ihr Code-Bundle auf IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Funktion aus Repository-Quellcode erstellen.
-
Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie für Code Engine auswählen, das Code-Bundle aus Ihrer Quelle zu erstellen und Ihre Funktion mit einem einzelnen CLI-Befehl zu erstellen. In diesem Szenario lädt Code Engine Ihren Quellcode und Ihr Codepaket in IBM Cloud® Container Registryhoch.
Sie könnten sich beispielsweise dafür entscheiden, „ Code Engine “ zu verwenden, um Ihren lokalen Quellcode zu erstellen, während Sie die Entwicklung Ihres Quellcodes für die Funktion weiter vorantreiben. Nachdem das Codepaket ausgereift ist, können Sie Ihre Funktion so aktualisieren, dass sie auf das gewünschte Codepaket verweist. Sie können diesen Prozess nach Bedarf wiederholen.
Benötigen Sie weitere Codebeispiele? Schaut euch die Beispiele im Repository „ IBM Cloud Code Engine “ unter GitHub an.