Aufgaben zu gehosteten Zielen

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Bereitstellung eines gehosteten Ziel-Proxys aufheben

Wenn Sie die Bereitstellung eines Edge-Proxys aufheben, der eine gehostete Zielanwendung enthält, wird die Bereitstellung der zugehörigen gehosteten Zielanwendung aufgehoben, das zugrunde liegende Anwendungs-Image wird jedoch nicht gelöscht. Wenn Sie den Proxy noch einmal bereitstellen, wird auch die Anwendung für gehostete Ziele neu bereitgestellt.

Gehostete Ziel-Proxy löschen

Nachdem Sie einen gehosteten Ziel-Proxy gelöscht haben, wird die Ausführung der zugrunde liegenden Laufzeitinstanzen innerhalb eines bestimmten Zeitraums beendet. Der Anwendungscode bleibt jedoch bestehen.

Auf Protokolldateien zugreifen

Protokolldateien sind für das Debugging hilfreich. Sie können zwei Arten von Logdateien für die Bereitstellung von gehosteten Zielen ansehen:

  • Build-Log: Zeigt die Ausgabe im Zusammenhang mit der Bereitstellung und Erstellung einer Anwendung für gehostete Ziele.
  • Laufzeitlog – Zeigt die Ausgabe der ausgeführten Anwendung für gehostete Ziele an. Laufzeitlogs sind auf die Umgebung beschränkt und enthalten Loginformationen für die aktuell bereitgestellte Proxyversion.

Auf Logs über die Edge-Benutzeroberfläche zugreifen

  1. Rufen Sie apigee.com/edge auf.
  2. Geben Sie Ihre Anmeldedaten ein und klicken Sie auf Sign In (Anmelden).
  3. Wählen Sie im seitlichen Navigationsmenü Develop > API Proxies (Entwickeln > API-Proxies) aus.
  4. Wählen Sie den Proxy aus, für den Sie Logs ansehen möchten.
  5. Klicken Sie auf den Tab Develop.
  6. Klicken Sie auf Build-Logs, um das Build-Log aufzurufen.
  7. Klicken Sie auf Laufzeitlogs, um das Laufzeitprotokoll aufzurufen.

Auf Logs mit der API zugreifen

Sie können auch eine Edge-API verwenden, um Logs für gehostete Ziele 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.

Wissenswertes über die Verwendung eines privaten Repositorys

Wenn Sie eine Node.js-Anwendung in Edge bereitstellen, werden alle Abhängigkeiten Ihres Projekts im Rahmen des Bereitstellungsprozesses automatisch importiert. Im Wesentlichen führt Hosted Targets bei der Bereitstellung npm install auf Ihrem Code aus. Wenn Sie in Ihrer Entwicklungsumgebung jedoch ein privates NPM-Repository 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 nutzen. Weitere Informationen finden Sie unter Node.js vom System in Edge bereitstellen.

Wenn Sie das Flag --bundled-dependencies für apigeetool verwenden, wird Ihre Node.js-Anwendung in gehostete Ziele hochgeladen. Alle lokalen/privaten Dateien, die im bundledAbhängigkeiten-Array in package.json aufgeführt sind, werden komprimiert und mit dem Bundle hochgeladen.

Wenn Sie ein öffentliches NPM-Repository intern spiegeln, schlägt die Bereitstellung fehl, wenn das Deployment-Bundle eine .npmrc- oder package-lock.json-Datei enthält, die auf Ihren privaten Spiegel verweist. Dies ist jedoch nicht häufig eine Situation. 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, die aus einem privaten NPM-Repository bereitgestellt wurden:

  1. Bei npm anmelden:
    npm login
  2. Rufen Sie ein npm-Authentifizierungstoken ab:
    1. Suchen Sie Ihre .npmrc-Datei (sollte im ~/.npmrc-Format sein).
    2. In Ihrer .npmrc-Datei finden Sie das Token am Ende der Zeile, die in etwa so aussieht:

      //registry.npmjs.org/:_authToken=****
    3. 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.
  3. Rufen Sie wie unten beschrieben die Konfigurationsseite für die Schlüssel/Wert-Zuordnungen auf.

    Edge

    So greifen Sie über die Edge-Benutzeroberfläche auf die Konfigurationsseite für Schlüssel/Wert-Zuordnungen zu:

    1. Melden Sie sich unter apigee.com/edge an.
    2. Wählen Sie in der linken Navigationsleiste Verwaltung > Umgebungen > Schlüssel/Wert-Zuordnungen aus.

    Classic Edge (Private Cloud)

    So greifen Sie über die Classic Edge-Benutzeroberfläche auf die Konfigurationsseite für Schlüssel/Wert-Zuordnungen zu:

    1. Melden Sie sich bei http://ms-ip:9000 an, wobei ms-ip die IP-Adresse oder der DNS-Name des Knotens des Verwaltungsservers ist.
    2. Wählen Sie in der oberen Navigationsleiste APIs > Umgebungskonfiguration > Schlüssel/Wert-Zuordnungen aus.
  4. Klicken Sie auf + Schlüssel/Wert-Zuordnung.
  5. Geben Sie im Dialogfeld „Neue Schlüssel/Wert-Zuordnung“ einen Namen ein und wählen Sie Verschlüsselt aus.
  6. Klicken Sie auf Hinzufügen.
  7. Fügen Sie das zuvor erstellte oder erstellte Authentifizierungstoken als neuen Eintrag in jeder gerade erstellten KVMs hinzu.
  8. 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:
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    Wobei:

    • Das übergeordnete Attribut name entspricht dem Namen der Umgebungsvariablen, die erstellt wird.
    • 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.
  10. Erstellen Sie eine .npmrc-Datei in dem Verzeichnis, in dem sich auch die Datei „package.json“ befindet. Die Datei sollte in etwa so aussehen:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    . Wenn Sie registry.npmjs.org nicht verwenden, können Sie den Bereich in der npmrc-Datei festlegen. Fügen Sie dazu eine Zeile wie diese hinzu: @myscope:registry=https://mycustomregistry.example.org. Weitere Informationen finden Sie in der npmrc-Dokumentation.
  11. Laden Sie Ihren Node.js-Proxy mit den enthaltenen Dateien .npmrc und app.yaml hoch oder aktualisieren Sie sie.
  12. Achten Sie darauf, dass Ihr neuer oder aktualisierter Proxy das gewünschte private Repository-Modul bereitstellt und funktioniert.
  13. Wenn der Proxy nicht bereitgestellt wird, prüfen Sie die Build-Logs, um festzustellen, ob die Installation des privaten npm-Moduls fehlgeschlagen ist. Dann:
    1. Auf dem Tab „Develop“ (Entwickeln) muss .npmrc vorhanden sein.
    2. Prüfen Sie, ob Ihr Token gültig ist. Versuchen Sie, das Modul lokal mit dem Token in der kvm zu installieren.
    3. Wenn Sie einen benutzerdefinierten Bereich verwenden, muss dieser festgelegt sein.

NPM-Version für gebündelte Abhängigkeiten angeben

Standardmäßig wird NPM v4 verwendet, um gebündelte Abhängigkeiten in der Umgebung für gehostete Ziele zu installieren. Wenn Sie jedoch eine andere NPM-Version verwenden möchten, können Sie sie in der Umgebungsvariable NPM_VERSION angeben. Sie können diese Variable in der Manifestdatei der App festlegen. Weitere Informationen finden Sie unter Elemente der Manifestdatei.

Wenn Sie gebündelte Abhängigkeiten verwenden und NPM_VERSION nicht angeben, verwenden gehostete Ziele standardmäßig NPM v4. 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, das das Feature für gebündelte Abhängigkeiten mit gehosteten Zielen veranschaulicht, finden Sie unter Node.js-Anwendung mit gehosteten Funktionen mithilfe benutzerdefinierter Module erstellen.

Endpunkt für Systemdiagnosen hinzufügen

Sie haben die Möglichkeit, einen Endpunkt für die Systemdiagnose für Ihre Node.js-Anwendung zu implementieren. Apigee verwendet diesen Endpunkt, wenn Ihre Node.js-Anwendung beginnt, um zu prüfen, ob die Anwendung im Container ausgeführt wird.

Standardmäßig wird /health als Endpunkt erwartet. Sie können den Standardendpunkt ändern. Geben Sie dazu den Endpunkt in einer Umgebungsvariablen namens HOSTED_TARGET_HEALTH_CHECK_PATH an. Sie können diese Variable in der Manifestdatei der Anwendung festlegen. Weitere Informationen finden Sie unter Elemente der Manifestdatei.

Die Implementierung eines Endpunkts für Systemdiagnosen ist nicht erforderlich. Wenn Sie jedoch einen Endpunkt für Systemdiagnosen 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-Status „404 Nicht gefunden“ zurückgibt. Mit /health oder HOSTED_TARGET_HEALTH_CHECK_PATH wird lediglich geprüft, ob Ihre Anwendung ausgeführt wird. Die tatsächliche Antwort wird ignoriert.

Speicherort des NPM-Cache ändern

Neuere Versionen von Node.js verwenden eine NPM-Version, die /root/.npm für den NPM-Cache verwendet. Dieser Speicherort stellt ein Problem für gehostete Ziele dar, da dieser Verzeichnisspeicherort schreibgeschützt ist. Dies liegt daran, dass die Hosted Target-Laufzeit ein tmpfs-Dateisystem verwendet, in dem nur /tmp beschreibbar ist. Zur Umgehung dieses Problems können Sie die Umgebungsvariable npm_config_cache in der Datei app.yaml (Manifestdatei) Ihrer Anwendung auf ein Verzeichnis innerhalb von /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

Standardmäßig verwenden gehostete Ziele npm start, um Ihre gehostete Zielanwendung auszuführen. In der vorherigen Aufgabe haben wir jedoch ein Problem bei der Verwendung von NPM besprochen, da neuere Versionen versuchen, /root/.npm für den NPM-Cache zu verwenden. Dies ist nicht beschreibbar und führt dazu, dass Ihr gehostetes Ziel nicht gestartet werden kann. Die vorherige Aufgabe funktioniert um dieses Problem. Eine andere Möglichkeit wäre, die Anwendung ohne NPM auszufü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: 3
  
Natürlich können Sie auch einen beliebigen Befehl verwenden, den Sie für geeignet halten. node index.js ist nur ein Beispiel.