Mit Apps in Code Engine arbeiten
Eine Anwendung oder App führt den Code für die Verarbeitung von HTTP-Anforderungen aus. Zusätzlich zu den traditionellen HTTP-Anforderungen unterstützt IBM Cloud® Code Engine auch Anwendungen, die WebSockets als Kommunikationsprotokoll verwenden. Die Anzahl der laufenden Instanzen einer Anwendung wird auf der Grundlage der eingehenden Anfragen und Ihrer Konfigurationseinstellungen automatisch nach oben oder unten (auf Null) skaliert. Eine App enthält eine oder mehrere Revisionen. Eine Revision stellt eine unveränderliche Version der Konfigurationseigenschaften der App dar. Bei jeder Aktualisierung einer Konfigurationseigenschaft der App wird eine neue Revision der App erstellt.
Vorbereitende Schritte
- Wenn Sie die Code Engine Konsole verwenden möchten, gehen Sie zur Code Engine Übersicht.
- Wenn Sie die Befehlszeilenschnittstelle verwenden möchten, richten Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle ein.
- Planen und wählen Sie Ihren Ansatz für die Ausführung Ihres Codes als Code Engine-Anwendungskomponente aus.
- Stellen Sie sicher, dass Ihre App der 12-Faktor-App-Methodikentspricht.
Sicherheitsfunktionen, die mit Code Enginebereitgestellt werden, finden Sie unter Code Engine und Sicherheit.
Code Engine stellt CRD-Methoden (CRD = Custom Resource Definition) bereit. Weitere Informationen finden Sie unter CRD-Methoden bereitstellen.
Sie sind sich nicht sicher, welcher Typ von Code Engine-Workload erstellt werden soll? Code Engine-Planung enthält weitere Informationen hierzu.
Wie lasse ich meinen Code als Code Engine-Anwendungskomponente ausführen?
Unabhängig davon, ob Ihr Code als Quellcode in einer lokalen Datei oder in einem Git vorliegt, oder ob Ihr Code ein Container-Image ist, das in einer öffentlichen oder privaten Registry existiert, bietet Code Engine Ihnen eine optimierte Möglichkeit, Ihren Code als App auszuführen.
-
Wenn Sie über ein Container-Image nach dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie nur einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist, wenn Sie Ihre Anwendung erstellen und bereitstellen. Sie können Ihre App mit einem Image in einer öffentlichen Registry oder privaten Registry bereitstellen.
-
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 aufbauen, bevor Sie Ihre Anwendung generieren und 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 aufbauen, bevor Sie Ihre Anwendung generieren und implementieren.
Nach der Bereitstellung Ihrer App können Sie auch Ihre bereitgestellte App aktualisieren mithilfe einer der vorherigen Methoden, unabhängig davon, wie Sie Ihre App erstellt oder zuvor aktualisiert haben.
Wenn Sie Ihre Anwendung 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.
Das Image, das Ihrer speziellen Anwendungsrevision zugeordnet ist, hat einen eindeutigen Container-Registry-Digest und Code Engine verwendet diesen Digest für die Lebensdauer Ihrer Anwendungsrevision. Wenn Sie eine neuere Version eines Image mit demselben Tag wie das ursprüngliche Image erstellen, wird das ursprüngliche Image in der Container-Registry überschrieben und nicht mit Tags versehen. Das neuere Image ist mit Tags versehen und dieses neuere Image hat einen anderen Digest. Ihre Anwendung Code Engine verwendet dieses neuere Image nicht, weil das neuere Image einen anderen Digest als das Image hat, das von der Anwendungsrevision referenziert wird. Code Engine kann weiterhin neue Instanzen der Anwendungsrevision erstellen, solange das Image ohne Tags, auf das ursprünglich verwiesen wurde, noch vorhanden ist. Weitere Informationen hierzu finden Sie unter Warum kann Code Engine kein Image extrahieren?
Die Standard-URL für Anwendungen hat das Format https://<appname>.<uuid>.<region>.codeengine.appdomain.cloud
, wobei appname
der Name Ihrer Anwendung, uuid
der automatisch generierte eindeutige
Bezeichner und region
die Region ist, in der sich Ihr Code Engine befindet. Der UUID-Teil der URL einer Anwendung hat das Format aaaabbbbccc
. Die automatisch generierte Anwendungs-URL bleibt während des gesamten Lebenszyklus
des Projekts für Ihre Anwendung bestehen.
Weitere Informationen zu Endpunkten für den Anwendungszugriff nach Region finden Sie unter Code Engine-Endpunkte für den Zugriff auf Anwendungen.
Was muss ich über Ports für Apps in Code Enginewissen?
Standardmäßig geht Code Engine davon aus, dass Apps an Port 8080
für eingehende Verbindungen empfangsbereit sind. Darüber hinaus setzt Code Engine die Umgebungsvariable ' PORT
auf den Portwert, an dem die Anwendung
überwacht werden soll. Wenn Ihre Anwendung an einem anderen Port als ' 8080
lauschen muss, stellen Sie Ihre Anwendung entweder von der Konsole aus bereit und geben Sie den richtigen Port an oder verwenden Sie die Option ' --port
für den Befehl ' app create
. Weitere Informationen zu Umgebungsvariablen, die von Code Enginefestgelegt werden, finden Sie unter Automatisch injizierte Umgebungsvariablen.
Die folgenden Ports sind für Code Enginereserviert: 8022
, 8008
, 8012
, 9090
, 9091
und 15090
. Als Empfangsport kann nur ein Port zugänglich gemacht werden.
Eingehende Verbindungen zu Code Engine über HTTP im Internet verwenden Port 80
. Eingehende Verbindungen zu Code Engine über HTTPS im Internet verwenden Port 443
Wenn ein Port-Scan mehr offene Ports anzeigt, lesen Sie den Abschnitt Warum zeigt mein Port-Scan mehr offene Ports als erwartet an?
Hinweise zur HTTP-Handhabung
Wenn Sie mit Anwendungen (oder Jobs) arbeiten, ist es hilfreich, die grundlegende HTTP-Handhabung in Code Engine zu kennen.
-
Bei eingehenden Anwendungsverbindungen, die HTTP verwenden, werden die TLS-Aspekte (Transport Layer Security) automatisch von Code Engine außerhalb des Anwendungscodes verwaltet. Der HTTP-Server für die Anwendung muss sich nur um die HTTP-Konnektivität und nicht um die HTTPS-Konnektivität kümmern. Insbesondere verwendet Code Engine Cloud Internet Services (CIS) in IBM Cloud, das auf CloudFlare, basiert, als Intrusion Prevention System (IPS) für DNS und DDOS-Schutz auf Schicht 4. Mit anderen Worten: Die TCP/IP-Verbindung, die auf dem IPS eingerichtet wird, gehört Cloudflare und wird von Cloudflare verwaltet. Weitere Informationen finden Sie in der Cloudflare-Dokumentation.
-
Internetverbindungen, die für Code Engine-Anwendungen gebunden sind, werden automatisch zur Verwendung von HTTPS umgeleitet.
-
Ausgehende Verbindungen von Anwendungen zu anderen Code Engine-Anwendungen werden automatisch durch TLS geschützt. Code Engine verwaltet diese Konnektivität automatisch, sodass das verwendete Protokoll (oder die URL)
HTTP
und nichtHTTPS
ist. -
Ausgehende Verbindungen von Anwendungen zu Nicht-Code Engine-Anwendungen, wie z. B. dem Internet, verwenden je nach dem im App-Code oder in der URL angegebenen Protokoll
HTTP
oderHTTPS
. -
Ausgehende Verbindungen von Batch-Jobs verwenden das Protokoll
HTTP
oderHTTPS
, das im Jobcode oder in der URL angegeben ist. Dieses Verhalten schließt Verbindungen von Batch-Jobs zu Code Engine-Apps ein.
Optionen für Sichtbarkeit für eine Code Engine-Anwendung
Mit Code Engine können Sie den richtigen Grad an Sichtbarkeit für Ihre Anwendung festlegen, indem Sie die Endpunkte oder Systemdomänenzuordnungen definieren, die für den Empfang von Anfragen verfügbar sind.
Jede Anwendung hat eine interne Systemdomänenzuordnung, die für alle Komponenten innerhalb desselben Code Engine sichtbar ist, aber nicht außerhalb des Projekts. Zusätzlich zur internen Systemdomänenzuordnung wählen Sie aus, dass die Anwendung im öffentlichen Internet oder im IBM Cloud privaten Netz sichtbar gemacht werden soll.
Für die öffentliche oder private Sichtbarkeit wird die Anwendung über einen HTTPS-Endpunkt bereitgestellt. Einzelheiten über das verwendete TLS-Zertifikat finden Sie unter TLS-Zertifikate für Code Engine.
Sie können Ihre Anwendung mit den folgenden Sichtbarkeitsstufen bereitstellen:
Einstellung | Beschreibung |
---|---|
intern(Projekt) | Eine App mit dieser Einstellung kann Anforderungen von Komponenten in demselben Code Engine-Projekt empfangen. Das Setzen eines internen (Projekt-)Endpunkts bedeutet, dass Ihre Anwendung nicht vom öffentlichen Internet aus zugänglich ist und der Netzwerkzugriff nur von anderen Code Engine möglich ist, die innerhalb desselben Code Engine ausgeführt werden. Dieser Endpunkt ist immer aktiviert. |
public | Eine App mit dieser Einstellung wird dem Internet und Ihrem Code Engine-Projekt zugänglich gemacht. Wenn Sie einen öffentlichen Endpunkt festlegen, kann Ihre App Anforderungen aus dem öffentlichen Internet oder von Komponenten in Ihrem Code Engine-Projekt empfangen. Diese Einstellung ist die Standardeinstellung. |
Privater | Eine App mit dieser Einstellung ist für das private IBM Cloud-Netz und Ihr Code Engine-Projekt verfügbar. Das Setzen eines privaten Endpunkts bedeutet, dass Ihre Anwendung nicht vom öffentlichen Internet aus zugänglich ist und der Netzwerkzugriff nur von anderen IBM Cloud möglich ist, indem virtuelle private Endpunkte (VPE) oder Code Engine verwendet werden, die im selben Projekt laufen. |
Sie können die Endpunkteinstellungen für die Sichtbarkeit einer Anwendung über die Konsole oder über die Befehlszeilenschnittstelle festlegen, wenn Sie Ihre App erstellen und bereitstellen oder aktualisieren.
App mit einem öffentlichen Endpunkt bereitstellen
Wenn Sie eine Anwendung bereitstellen, wird die Anwendung standardmäßig so bereitgestellt, dass sie Anfragen aus dem öffentlichen Internet oder von Komponenten innerhalb desselben Code Engine empfangen kann. In diesem Fall wird die App mit einem öffentlichen Endpunkt bereitgestellt.
App mit privatem Endpunkt bereitstellen
Sie können die Endpunktsichtbarkeit für Ihre App so festlegen, dass sie mit einem privaten Endpunkt bereitgestellt wird. Die Einstellung eines privaten Endpunkts bedeutet, dass Ihre Anwendung nicht vom öffentlichen Internet aus zugänglich ist und der Netzwerkzugriff nur von anderen IBM Cloud von virtuellen privaten Endpunkten (VPE) oder Code Engine möglich ist, die im selben Projekt (cluster-local) laufen.
Wenn Ihre Lösung zum Beispiel aus einer Komponente besteht, die auf einem IBM Cloud Kubernetes Service Kubernetes-Cluster innerhalb Ihres eigenen virtuellen privaten Endpunkts läuft und Sie auf die Code Engine-Anwendung aus dem privaten IBM Cloud-Netz zugreifen möchten, können Sie die Sichtbarkeit der Anwendung auf "privat" festlegen. Wenn die Sichtbarkeit der App auf privat eingestellt ist, ist die App nicht über das öffentliche Internet zugänglich. Die Anwendung ist weiterhin über andere Anwendungen innerhalb des Projekts zugänglich.
Sie können Anwendung mit privatem Endpunkt bereitstellen, sodass die App nur über das private IBM Cloud-Netz und nicht über das externe Internet zugänglich gemacht wird. Die Anwendung ist weiterhin über gemeinsam genutzte Komponenten aus dem internen Netz erreichbar und der Anwendungsendpunkt muss geschützt werden.
Legen Sie mit der Befehlszeilenschnittstelle die Endpunktsichtbarkeit für Ihre App fest, sodass sie mit einem privaten Endpunkt bereitgestellt wird, indem Sie die Option --visibility=private
im Befehl app create
oder app update
verwenden. Sie können die verfügbaren URLs für Ihre App, die Ihre Endpunktdefinition widerspiegeln, mit dem Befehl
app get
abrufen.
Legen Sie in der Konsole die Sichtbarkeit der Endpunkte für Ihre Anwendung fest, indem Sie beim Erstellen Ihrer Anwendung die Einstellung Endpunkte verwenden. Nach der Bereitstellung Ihrer App können Sie diese Einstellungen für die Systemdomänenzuordnung auf der Registerkarte Domänenzuordnungen Ihrer Anwendungsseite anzeigen und ändern.
Weitere Informationen zum Herstellen einer Verbindung über private Netze finden Sie unter Virtuelle private Endpunkte mit Code Engine verwenden.
App mit einem Projektendpunkt bereitstellen
Sie können die Endpunktsichtbarkeit für Ihre Anwendung so einstellen, dass sie mit einem internen (Projekt-)Endpunkt bereitgestellt wird. Das Setzen eines projektspezifischen Endpunkts bedeutet, dass Ihre Anwendung nicht vom öffentlichen Internet aus zugänglich ist und der Netzwerkzugriff nur von anderen Code Engine möglich ist, die innerhalb desselben Code Engine ausgeführt werden. Dieser Endpunkt ist immer aktiviert. Anwendungen sind weiterhin über gemeinsam genutzte Komponenten zugänglich und müssen daher geschützt werden.
Wenn Ihre Lösung beispielsweise aus mehreren Anwendungen innerhalb eines Projekts besteht, können Sie Ihre Lösung so konfigurieren, dass nur eine dieser Anwendungen im Internet sichtbar ist, sodass sie eingehenden Datenverkehr verarbeitet. Diese öffentlich zugängliche Anwendung kann die Arbeit an andere Anwendungen in Ihrer Lösung delegieren, sodass diese nicht über das Internet sichtbar sein müssen.
Legen Sie über die Befehlszeilenschnittstelle die Endpunktsichtbarkeit für Ihre App fest, sodass sie mit einem Projektendpunkt bereitgestellt wird, indem Sie die Option --visibility=project
im Befehl app create
oder app update
verwenden. Sie können die verfügbaren URLs für Ihre App, die Ihre Endpunktdefinition widerspiegeln, mit dem Befehl
app get
abrufen.
Legen Sie in der Konsole die Sichtbarkeit der Endpunkte für Ihre Anwendung fest, indem Sie beim Erstellen Ihrer Anwendung die Einstellung Endpunkte verwenden. Nach der Bereitstellung Ihrer App können Sie diese Einstellungen für die Systemdomänenzuordnung auf der Registerkarte Domänenzuordnungen Ihrer Anwendungsseite anzeigen und ändern.
Optionen für die Implementierung einer Code Engine -Anwendung
Hier finden Sie Informationen zu den Optionen, die Sie bei der Bereitstellung Ihrer App angeben können. Je nachdem, ob Sie die Konsole oder die Befehlszeilenschnittstelle verwenden, sind möglicherweise andere Optionen verfügbar.
Speicher und CPU
Wenn Sie Ihre App bereitstellen, können Sie den Umfang an Speicher und CPU-Leistung angeben, den Ihre App nutzen kann. Diese Angaben variieren, je nachdem, ob Ihre App rechenintensiv oder speicherintensiv ist oder sich durch eine ausgewogene Nutzung auszeichnet.
Standardmäßig werden Ihrer Anwendung 4 GB an Speicher und 1 vCPU zugeordnet. Weitere Informationen zum Auswählen von Speicher und CPU finden Sie unter Unterstützte Speicher-und CPU-Kombinationen.
App mit Befehlen und Argumenten bereitstellen
Sie können Befehle und Argumente für die Anwendung definieren, die zur Laufzeit verwendet werden sollen.
Befehle und Argumente für die Anwendung können Sie durch Hinzufügen der Optionen --cmd
und --arg
zum Befehl app create
definieren.
ibmcloud ce app create --name myapp --image icr.io/codeengine/hello --cmd /myapp --arg --debug
Weitere Informationen zur Verwendung von cmd
und arg
finden Sie unter Befehle und Argumente für Code Engine-Workloads definieren.
App mit Umgebungsvariablen erstellen und ausführen
Sie können Umgebungsvariablen als Schlüssel/Wert-Paare, die von Ihrer Anwendung bei der Ausführung verwendet werden können, definieren und festlegen.
Sie können Umgebungsvariablen über die Konsole oder über die Befehlszeilenschnittstelle definieren, wenn Sie Ihre Anwendung erstellen oder eine vorhandene Anwendung aktualisieren.
Weitere Informationen zum Definieren von Umgebungsvariablen finden Sie unter Mit Umgebungsvariablen arbeiten.
Code Engine fügt bestimmte Umgebungsvariablen automatisch in die App ein. Weitere Informationen zu automatisch injizierten Umgebungsvariablen finden Sie unter Automatisch injizierte Umgebungsvariablen.
Erstellen und Ausführen Ihrer App beim Verwenden von geheimen Schlüsseln und Konfigurationszuordnungen
In Code Engine können geheime Schlüssel und Konfigurationszuordnungen von Ihrer Anwendung mithilfe von Umgebungsvariablen verarbeitet werden.
Sowohl bei geheimen Schlüsseln als auch bei Konfigurationszuordnungen handelt es sich um Schlüssel/Wert-Paare. Wenn sie Umgebungsvariablen zugeordnet sind, werden die NAME=VALUE
-Beziehungen so konfiguriert, dass der Name der Umgebungsvariablen
dem 'Schlüssel' der einzelnen Einträge in diesen Zuordnungen entspricht und der Wert der Umgebungsvariablen dem 'Wert' des jeweiligen Schlüssels.
Ihre Anwendung kann Umgebungsvariablen verwenden, um eine vollständige Konfigurationszuordnung (oder einen vollständigen geheimen Schlüssel) oder einzelne Schlüssel in einer Konfigurationszuordnung (oder einem geheimen Schlüssel) zu referenzieren.
Weitere Informationen finden Sie unter Geheime Schlüssel mithilfe von Umgebungsvariablen referenzieren und Konfigurationszuordnungen mithilfe von Umgebungsvariablen referenzieren.
Hinweise zu Anwendungskontingenten
Wenn Sie mit Anwendungen, Funktionen und Stapeljobs arbeiten, werden diese Ressourcen im Kontext eines Code Engine-Projekts ausgeführt. Ressourcenkontingente werden pro Projekt definiert und Grenzwerte gelten für Anwendungen, Funktionen und Stapeljobs.
Weitere Informationen zu Code Engine-Grenzwerte finden Sie unter Grenzwerte und Kontingente für Code Engine.
Nächste Schritte
Sind Sie nun mit den Schlüsselkonzepten der Arbeit mit Code Engine-Anwendungen vertraut und bereit für die Bereitstellung und Arbeit mit Apps? Siehe
- App-Workloads aus Images in einer öffentlichen Registry bereitstellen
- App-Workloads über Images in IBM Cloud Container Registry
- Bereitstellung von App-Workloads aus Images in einer privaten Registry
- Bereitstellen Ihrer Anwendung aus dem Repository-Quellcode.
- App aus lokalem Quellcode bereitstellen.
Weitere Informationen zur Arbeit mit Anwendungen finden Sie unter