2016-12-21 13 views
1

(Hintergrund: Ich bin neu in Google App Engine, vertraut mit anderem Cloud-Anbieter Diensten)Zugriff auf Google App Engine Python App Code in Produktion

ich für Zugriff Suche/Ansicht ähnlich Zugang zu den Produktionsknoten zu schälen.

Mit einer Python/Django basierten Google App Engine App möchte ich den Code in der Produktion sehen.

Eine Ansicht, die ich finden konnte, ist die StackDriver 'Debug' Ansicht. Offensichtlich spiegelt der in der Debugansicht angezeigte Code jedoch nicht den aktualisierten Produktionscode wider (basierend auf dem, was auf der Produktionsstätte angezeigt wird, z. B. der Text auf der Homepage anders).

Erlaubt Google App Engine mir ssh in die VM, wo die Anwendung/Code ausgeführt wird? Wenn nicht, wie kann der Code in der Produktion überprüft werden?

Danke.

+0

Die Antwort hängt sehr davon ab, ob Sie die Standardumgebung oder die flexible Umgebung verwenden. Können Sie dieses Detail zu Ihrer Frage hinzufügen? – BrettJ

Antwort

2

Gemäß der Zeile SSH debugging in der Tabelle Comparing environments wird der SSH-Zugriff für Flex-Environment-Apps unterstützt, nicht jedoch für Apps mit Standardumgebung.

Von Connecting to the instance:

Wenn eine VM-Instanz im Debug-Modus ist, können Sie auf die Host per mit SSH in der Konsole oder mit gcloud verbinden. Go to the instances page

  • Click SSH in ganz rechts in der Zeile enthält:

    für Ihr Projekt
    1. Besuchen Sie die Cloud Platform Console Instanzen Seite:

      zu einer Instanz in der Konsole verbinden Die Instanz, auf die Sie zugreifen möchten:

      Dadurch wird die Instanz in den Debug-Modus versetzt und eine SSH-Sitzung für die Instanz in einem geöffnet Terminalfenster.

      Sie können auch verschiedene Optionen zum Starten einer SSH-Sitzung aus der Dropdown-Liste auswählen.

    2. An diesem Punkt befinden Sie sich im Instanzhost, in dem mehrere containers ausgeführt werden. Weitere Informationen hierzu finden Sie unter Understanding common containers.

    3. im Terminalfenster, listet die Behälter in der Instanz ausgeführt wird:

      sudo docker ps 
      
    4. Die Ausgabe der sudo docker ps Befehlslisten jeden Behälter für Reihe; Suchen Sie die Zeile, die Ihre Projekt-ID enthält: Dies ist der Container, auf dem der Code ausgeführt wird. Notieren Sie den NAMEN dieses Containers.

    5. Optional Listeninformationen für Ihre Anwendung Anmeldung durch den Aufruf:

      sudo docker logs [CONTAINER-NAME] 
      
    6. starten eine Shell in den Container, der Code ausgeführt wird: Ausfahrt

      container_exec [CONTAINER-NAME] /bin/bash 
      
    7. Wenn das Debuggen abgeschlossen, geben Sie Um den Container zu verlassen, verlassen Sie ihn erneut, um die SSH-Sitzung zu beenden.

    8. Deaktivieren Sie das Debugging für Ihre Instanz, damit sie den normalen Betrieb wieder aufnehmen kann.

  • +0

    Danke Dan. Geht es nach https://cloud.google.com/appengine/docs/flexible/python/quickstart, scheint eine flexible Umgebung durch "env: flex" in app.yaml gekennzeichnet zu sein? Ich sehe kein 'env:' in der App.yaml in meinem Fall. Das schränkt die ssh-Option aus. Ich versuche herauszufinden, welcher Code genau in der Produktion ist. Es scheint, dass der unter StackDriver 'Debug' angezeigte Code nicht die richtige Version ist. In meinem Fall (anscheinend Standard Environment), wie kann ich den Code in der Produktion sehen, einschließlich des Codes von Cronjobs? – user362953

    +0

    Ist 'download_app' die einzige Option? https://cloud.google.com/appengine/docs/python/tools/appcfg-arguments#download_app. Leider ist das in meinem Fall keine Option, zumindest für den Moment. Dies funktioniert nur für diejenigen, die den Code oder die Besitzer hochgeladen haben, ich bin es auch nicht. Auf der Seite "IAM" ist meine Rolle "Editor". – user362953

    +1

    Ein fehlendes 'env:' in 'app.yaml' zeigt eine Standardumgebung an, also keinen SSH-Zugriff. –

    0

    Wenn Sie die Standard-Umgebung verwenden, die Antwort nein ist, kann man nicht wirklich kontrollieren oder den Code direkt sehen. Sie haben erwähnt, dass Sie es über den Stackdriver Debugger betrachten, mit dem Sie eine Repräsentation sehen können.

    Es klingt, als ob Sie einen Grund haben, sich den Code anzuschauen. Dann sollte Ihnen jemand in Ihrer Organisation den entsprechenden Zugriff auf Ihr Quellcodeverwaltungssystem gewähren. Ich würde mir vorstellen, dass Ihre Deployment-Practices ausgereift sind. Dann würden sie den Code wahrscheinlich auf Ihre bereitgestellten Versionen abzweigen, und Sie könnten lokal detailliert prüfen.

    +0

    Danke. Das Problem war, dass Codeänderungen vor dem Aktualisieren des Repos auf "prod" gesetzt wurden. Idealerweise sollte man ein Setup haben, bei dem Code nur durch das scm-System gepusht werden kann. – user362953