Sie lesen die Dokumentation zu Apigee Edge.
Sehen Sie sich die Apigee X-Dokumentation an. info
Bereitstellung eines gehosteten Targets-Proxys aufheben
Wenn Sie einen Edge-Proxy, der eine Anwendung mit gehosteten Zielen enthält, deinstallieren, wird die zugehörige Anwendung mit gehosteten Zielen deinstalliert, das zugrunde liegende Anwendungs-Image jedoch nicht gelöscht. Wenn Sie den Proxy neu bereitstellen, wird auch die App „Hosted Targets“ neu bereitgestellt.
Gehostete Ziele-Proxy löschen
Nachdem Sie einen gehosteten Zielproxy gelöscht haben, wird die Ausführung der zugrunde liegenden Laufzeitinstanzen innerhalb eines bestimmten Zeitraums beendet. Der Anwendungscode bleibt jedoch erhalten.
Auf Protokolldateien zugreifen
Protokolldateien sind hilfreich für die Fehlerbehebung. Sie können sich zwei Arten von Protokolldateien für eine Bereitstellung von Hosted Targets ansehen:
- Build-Protokoll: Hier sehen Sie die Ausgabe, die mit der Bereitstellung und dem Erstellen einer App mit gehosteten Zielen zusammenhängt.
- Laufzeitlog – Zeigt die Ausgabe in Bezug auf die ausgeführte Anwendung für gehostete Ziele an. Laufzeitlogs sind auf die Umgebung beschränkt und enthalten Protokollinformationen für die aktuell bereitgestellte Proxyversion.
Auf Protokolle über die Edge-Benutzeroberfläche zugreifen
- Gehen Sie zu apigee.com/edge.
- Geben Sie Ihre Anmeldedaten ein und klicken Sie auf Anmelden.
- Wählen Sie im seitlichen Navigationsmenü Entwickeln > API-Proxies aus.
- Wählen Sie den Proxy aus, für den Sie Protokolle aufrufen möchten.
- Klicken Sie auf den Tab Entwickeln.
- Klicken Sie auf Build-Logs, um das Build-Log aufzurufen.
- Klicken Sie auf Laufzeitprotokolle, um das Laufzeitprotokoll aufzurufen.
Über die API auf Protokolle zugreifen
Sie können auch eine Edge API verwenden, um Logs von gehosteten Zielen abzurufen. Weitere Informationen finden Sie unter Im Cache gespeicherte Node.js-Logs abrufen.
Privates npm-Repository verwenden
In diesem Abschnitt wird erläutert, wie Sie einen Node.js-Proxy für gehostete Ziele bereitstellen, wenn Sie in Ihrer Entwicklungsumgebung ein privates NPM-Repository verwenden.
Wichtige Informationen zur Verwendung eines privaten Repositories
Wenn Sie eine Node.js-Anwendung in Edge bereitstellen, werden alle Abhängigkeiten Ihres Projekts im Rahmen des Bereitstellungsvorgangs automatisch importiert.
Im Wesentlichen führen Hosted Targets npm install
für Ihren Code aus, wenn dieser bereitgestellt wird.
Wenn Sie jedoch ein privates NPM-Repository in Ihrer Entwicklungsumgebung verwenden, können die privaten Abhängigkeiten nicht in der Cloud aufgelöst werden. In diesem Fall besteht die Lösung darin, die Option --bundled-dependencies
zu verwenden, wenn Sie das Bereitstellungsdienstprogramm apigeetool verwenden. Weitere Informationen finden Sie unter Node.js von Ihrem System auf Edge bereitstellen.
Wenn Sie das Flag --bundled-dependencies
in apigeetool
verwenden, wird Ihre Node.js-Anwendung auf gehostete Ziele hochgeladen. Alle lokalen/privaten Dateien, die in package.json
im bundledDependencies-Array aufgeführt sind, werden gezippt und mit dem Bundle hochgeladen.
Auch wenn es nicht häufig vorkommt, kann es passieren, dass die Bereitstellung fehlschlägt, wenn Sie ein öffentliches NPM-Repository intern spiegeln und Ihr Bereitstellungsbundle eine .npmrc
- oder package-lock.json
-Datei enthält, die auf Ihren privaten Spiegel verweist. Lassen Sie in diesem Fall .npmrc
oder package-lock.json
aus dem Proxy-Bundle weg, das Sie bereitstellen möchten.
Mit einem privaten npm-Repository bereitstellen
So verwenden Sie Module aus einem privaten NPM-Repository:
- Melden Sie sich bei npm an:
npm login
- Rufen Sie ein npm-Authentifizierungstoken ab:
- Suchen Sie die Datei .npmrc (sollte sich unter ~/.npmrc befinden).
- Notieren Sie sich in Ihrer .npmrc-Datei das Token am Ende der Zeile, das so aussieht:
//registry.npmjs.org/:_authToken=****
- Alternativ können Sie die
npm token <list | create | revoke>
-Befehle verwenden, um ein Authentifizierungstoken aufzulisten, zu erstellen oder zu widerrufen. Weitere Informationen finden Sie in der Dokumentation zu npm-token. - Rufen Sie die Konfigurationsseite für Schlüssel/Wert-Zuordnungen wie unten beschrieben auf.
Edge
So greifen Sie über die Edge-Benutzeroberfläche auf die Konfigurationsseite für die Schlüssel/Wert-Zuordnungen zu:
- Melden Sie sich unter apigee.com/edge an.
- Wählen Sie in der linken Navigationsleiste Admin > Umgebungen > Key Value Maps aus.
Classic Edge (Private Cloud)
So greifen Sie über die Classic Edge-Benutzeroberfläche auf die Konfigurationsseite für Schlüssel/Wert-Zuordnungen zu:
- Melden Sie sich bei
http://ms-ip:9000
an, wobei ms-ip die IP-Adresse oder der DNS-Name des Knotens des Verwaltungsservers ist. - Wählen Sie in der oberen Navigationsleiste APIs > Umgebungskonfiguration > Schlüssel/Wert-Paarzuordnungen aus.
- Klicken Sie auf + Schlüssel/Wert-Zuordnung.
- Geben Sie im Dialogfeld „Neue Schlüssel/Wert-Zuordnung“ einen Namen ein und wählen Sie Verschlüsselt aus.
- Klicken Sie auf Hinzufügen.
- Fügen Sie das zuvor gefundene oder erstellte Authentifizierungstoken als neuen Eintrag in jede der gerade erstellten KVMs hinzu.
- Fügen Sie der Datei app.yaml einen Eintrag hinzu, der auf die KVM und den Schlüssel verweist, die dem npm-Authentifizierungstoken zugeordnet sind. Die Ausgabe sollte ungefähr so aussehen:
- Das Attribut name der obersten Ebene entspricht dem Namen der zu erstellenden Umgebungsvariablen.
- Der Name unter valueRef entspricht der KVM, die Sie zuvor erstellt haben.
- Das Attribut key entspricht dem Schlüssel, der dem npm-Token zugeordnet ist, das Sie der KVM hinzugefügt haben.
- Erstellen Sie eine .npmrc-Datei im selben Verzeichnis wie Ihre package.json-Datei. Die Datei sollte in etwa so aussehen:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
. Wenn Sieregistry.npmjs.org
nicht verwenden, können Sie den Bereich in der .npmrc-Datei festlegen, indem Sie eine Zeile wie diese hinzufügen.@myscope:registry=https://mycustomregistry.example.org
Weitere Informationen finden Sie in der npmrc-Dokumentation. - Laden Sie Ihren Node.js-Proxy mit den Dateien .npmrc und app.yaml hoch oder aktualisieren Sie ihn.
- Achten Sie darauf, dass der neue oder aktualisierte Proxy bereitgestellt wird und mit dem gewünschten Modul für das private Repository funktioniert.
- Wenn der Proxy nicht bereitgestellt wird, prüfen Sie in den Build-Logs, ob die Installation des privaten npm-Moduls fehlgeschlagen ist. Dann:
- Prüfen Sie auf dem Tab „Entwickeln“, ob die Datei .npmrc vorhanden ist.
- Prüfen Sie, ob Ihr Token gültig ist. Versuchen Sie, das Modul lokal zu installieren, wobei das Token im kvm vorhanden ist.
- Wenn Sie einen benutzerdefinierten Umfang verwenden, muss dieser festgelegt sein.
env: - name: NPM_TOKEN valueRef: name: npm_store key: private_token
Wobei:
NPM-Version für gebündelte Abhängigkeiten angeben
Standardmäßig wird NPM v4 verwendet, um gebündelte Abhängigkeiten in der Umgebung „Hosted Targets“ zu installieren.
Wenn Sie jedoch eine andere Version von NPM verwenden möchten, können Sie diese in der Umgebungsvariable NPM_VERSION
angeben. Sie können diese Variable in der Manifestdatei der Anwendung festlegen. Weitere Informationen finden Sie unter Manifestdateielemente.
Wenn Sie gebündelte Abhängigkeiten verwenden und NPM_VERSION
nicht angeben, wird für gehostete Ziele standardmäßig NPM v4 verwendet. Wenn Sie keine gebündelten Abhängigkeiten verwenden, wird die Version von NPM verwendet, die in der angegebenen Node.js-Laufzeit enthalten ist.
Beispiel für gebündelte Abhängigkeiten
Ein Beispiel für das Feature für gebündelte Abhängigkeiten mit gehosteten Zielen finden Sie unter Node.js-Anwendung mit gehosteten Funktionen mithilfe von benutzerdefinierten Modulen erstellen.Endpunkt für Systemdiagnose hinzufügen
Sie können einen Endpunkt für Systemdiagnosen für Ihre Node.js-Anwendung implementieren. Apigee verwendet diesen Endpunkt, wenn Ihre Node.js-Anwendung gestartet wird, um zu prüfen, ob die Anwendung im Container ausgeführt wird.
Standardmäßig erwartet Apigee den Endpunkt /health
. Sie können den Standardendpunkt ändern, indem Sie den Endpunkt in einer Umgebungsvariablen namens HOSTED_TARGET_HEALTH_CHECK_PATH
angeben. Sie können diese Variable in der Manifestdatei der Anwendung festlegen. Weitere Informationen finden Sie unter Manifestdateielemente.
Die Implementierung eines Endpunkts für die Systemdiagnose ist nicht erforderlich. Wenn Sie jedoch einen Endpunkt für die Systemdiagnose implementieren, beachten Sie Folgendes:
- Wenn Ihre Anwendung beendet wird, wenn Apigee den Endpunkt erreicht, wird sie nicht wie erwartet gestartet.
- Es ist in Ordnung, wenn Ihr Endpunkt den HTTP-Statuscode 404 „Not Found“ (Nicht gefunden) zurückgibt.
/health
oderHOSTED_TARGET_HEALTH_CHECK_PATH
wird nur verwendet, um zu prüfen, ob Ihre Anwendung ausgeführt wird. Die tatsächliche Antwort wird ignoriert.
Speicherort des NPM-Cache ändern
Neuere Versionen von Node.js verwenden eine Version von npm, die /root/.npm
für den npm-Cache verwendet.
Dieser Speicherort stellt ein Problem für gehostete Ziele dar, da das Verzeichnis schreibgeschützt ist. Die Laufzeit des gehosteten Ziels verwendet nämlich ein tmpfs-Dateisystem, in dem nur /tmp
beschreibbar ist.
Sie können dieses Problem umgehen, indem Sie die Umgebungsvariable npm_config_cache
in der app.yaml
-Datei (Manifestdatei) Ihrer Anwendung auf ein Verzeichnis in /tmp
festlegen. Beispiel:
runtime: node application: my-express-app env: - name: npm_config_cache value: /tmp/.npm - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
Anwendung ohne NPM ausführen
Gehostete Ziele verwenden standardmäßig npm start
, um eine gehostete Zielanwendung auszuführen. In der vorherigen Aufgabe haben wir jedoch ein Problem mit der Verwendung von NPM besprochen, da neuere Versionen versuchen, /root/.npm
für den NPM-Cache zu verwenden, der nicht beschreibbar ist und dazu führt, dass Ihr gehostetes Ziel nicht gestartet wird. Mit der vorherigen Aufgabe lässt sich dieses Problem zwar umgehen, aber Sie können Ihre Anwendung auch ohne NPM ausführen. Dazu können Sie die Werte command
und args
in der app.yaml
-Datei (Manifestdatei) Ihrer Anwendung verwenden, um Ihr gehostetes Ziel direkt mit node index.js
auszuführen. Beispiel:
runtime: node application: my-express-app command: node args: - index.js env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3Natürlich kannst du den Befehl verwenden, den du für richtig hältst.
node index.js
ist nur ein Beispiel.