
Dies ist eine Reihe von übersetzten Notizen von Priti Desai . Da die Anmerkungen selbst recht kurz sind, werden mehrere Veröffentlichungen gleichzeitig in einer Veröffentlichung gesammelt. Einzelheiten zur Bereitstellung von Anwendungen für OpenWhisk mit Beispielen werden betrachtet, und am Ende des Zyklus werden die Architektur und der Code einer Anwendung vorgestellt, die auf OpenWhisk basierendes Serverless Computing verwendet.
Automatisieren Sie die Anwendungsbereitstellung für OpenWhisk
Haben Sie OpenWhisk bereits installiert und die einfache Funktion hello.js in Arbeit getestet?
cat hello.js function main() { return {payload: 'Hello World'}; }
Möchten Sie die Bereitstellung dieser einfachsten Funktion automatisieren? Wenn ja, lesen Sie diesen Hinweis weiter. Ich werde zeigen, wie openwhisk-wskdeploy verwendet wird, um die Bereitstellung einer einfachen Funktion zu automatisieren.
Erforderliche Komponenten
Erster Schritt
Erstellen Sie eine Manifestdatei (manifest.yaml) mit dem folgenden Inhalt:
packages: helloworld: actions: helloworld: location: src/hello.js runtime: nodejs:6 outputs: payload: type: string description: a simple greeting message, Hello World.
Zweiter Schritt
Erstellen Sie eine Datei für die Bereitstellung (deployment.yaml):
application: name: SampleHelloWorld namespace: _ packages: helloworld: actions: helloworld:
Tatsächlich wird diese Datei nicht für die Zustellung von helloworld
, nur das Manifest aus dem ersten Schritt reicht aus.
Schritt drei
Erstellen Sie eine Verzeichnisstruktur. Es sieht ungefähr so aus:
# ls -1R ~/SampleHelloWorldApp/ deployment.yaml manifest.yaml src/ ./src: hello.js
Vierter Schritt
Bereitstellen der HelloWorld-Funktion:
./wskdeploy -p ~/SampleHelloWorldApp/ ____ ___ _ _ _ _ _ /\ \ / _ \ _ __ ___ _ __ | | | | |__ (_)___| | __ /\ /__\ \ | | | | '_ \ / _ \ '_ \| | | | '_ \| / __| |/ / / \____ \ / | |_| | |_) | __/ | | | |/\| | | | | \__ \ < \ \ / \/ \___/| .__/ \___|_| |_|__/\__|_| |_|_|___/_|\_\ \___\/ |_| Packages: Name: helloworld * action: helloworld bindings: Triggers: Rules Do you really want to deploy this? (y/N): y Deploying pacakge helloworld ... Done! Deploying action helloworld/helloworld ... Done! Deployment completed successfully.
Fünfter Schritt
Überprüfen Sie die Leistung:
# wsk action invoke --blocking --result helloworld/helloworld { "payload": "Hello World" }
Sechster Schritt
Freut euch!
Bereitstellung: Funktion, Bedingung und Regel
Schauen wir uns die zusätzlichen Dinge an, die in der Automatisierung benötigt werden:
Parameter an eine Funktion übergeben
Ändern Sie den Code:
function main(params) { return {payload: 'Hello, ' + params.name + ' from ' + params.place}; }
Erster Schritt
Erstellen Sie eine Manifestdatei:
packages: helloworld: actions: helloworld: location: src/hello.js runtime: nodejs:6 inputs: name: type: string description: name of a person place: type: string description: location of a person outputs: payload: type: string description: a simple greeting message, Hello World!
Sie können Parameterwerte in der Manifestdatei angeben und das Erstellen der Datei für die Bereitstellung überspringen:
packages: helloworld: actions: helloworld: location: src/hello.js runtime: nodejs:6 inputs: name: Amy place: Paris outputs: payload: type: string description: a simple greeting message, Hello World!
Zweiter Schritt
Erstellen Sie eine Datei für die Bereitstellung:
Wir setzen die Standardwerte, indem wir den in der "helloworld" -Funktion verschachtelten "input" -Abschnitt hinzufügen:
application: name: SampleHelloWorld namespace: _ packages: helloworld: actions: helloworld: inputs: name: Amy place: Paris
Stellen Sie sicher, dass sich die Verzeichnisstruktur seit dem letzten Mal nicht geändert hat.
Schritt drei
Erweitern Sie die Funktion:
# ./wskdeploy -p ~/SampleHelloWorldApp/ ____ ___ _ _ _ _ _ /\ \ / _ \ _ __ ___ _ __ | | | | |__ (_)___| | __ /\ /__\ \ | | | | '_ \ / _ \ '_ \| | | | '_ \| / __| |/ / / \____ \ / | |_| | |_) | __/ | | | |/\| | | | | \__ \ < \ \ / \/ \___/| .__/ \___|_| |_|__/\__|_| |_|_|___/_|\_\ \___\/ |_| Packages: Name: helloworld * action: helloworld bindings: - name: name value: Amy - name: place value: Paris Triggers: Rules Do you really want to deploy this? (y/N): y Deploying pacakge helloworld ... Done! Deploying action helloworld/helloworld ... Done! Deployment completed successfully.
Vierter Schritt
Überprüfen Sie die Leistung:
wsk action invoke --blocking --result helloworld/helloworld { "payload": "Hello, Amy from Paris" }
Überschreiben Sie die Standardwerte, indem Sie Werte mit dem Parameter --param übergeben :
wsk action invoke --blocking --result helloworld/helloworld --param name Mark --param place Barcelona { "payload": "Hello, Mark from Barcelona" }
Bedingung erstellen und Regeln binden
Erster Schritt
Fügen Sie dem Manifest zwei Abschnitte hinzu:
packages: helloworld: actions: helloworld: location: src/helloworld.js runtime: nodejs:6 inputs: name: type: string description: name of a person place: type: string description: location of a person outputs: payload: type: string description: a simple greeting message, Hello World! triggers: locationUpdate: rules: helloworldOnLocationUpdate: action: helloworld trigger: locationUpdate
Zweiter Schritt
Erweitern Sie die Funktion, Bedingung und Bindungsregel:
./wskdeploy -p ~/SampleHelloWorldApp/ ____ ___ _ _ _ _ _ /\ \ / _ \ _ __ ___ _ __ | | | | |__ (_)___| | __ /\ /__\ \ | | | | '_ \ / _ \ '_ \| | | | '_ \| / __| |/ / / \____ \ / | |_| | |_) | __/ | | | |/\| | | | | \__ \ < \ \ / \/ \___/| .__/ \___|_| |_|__/\__|_| |_|_|___/_|\_\ \___\/ |_| Packages: Name: helloworld * action: helloworld bindings: - name: name value: Amy - name: place value: Paris Triggers: * trigger: locationUpdate bindings: Rules * rule: helloworldOnLocationUpdate - trigger: locationUpdate - action: helloworld Do you really want to deploy this? (y/N): y Deploying pacakge helloworld ... Done! Deploying action helloworld/helloworld ... Done! Deploying trigger locationUpdate ... Done! Deploying rule helloworldOnLocationUpdate ... Done! Deployment completed successfully.
Schritt drei
Überprüfen Sie die Leistung:
- Wir betrachten die Arbeitsfunktionen:
wsk activation poll Enter Ctrl-c to exit. Polling for activation logs
- Öffnen Sie ein anderes Terminal und geben Sie den Befehl ein, um die bedingte Antwort zu aktivieren:
wsk trigger fire locationUpdate ok: triggered locationUpdate with id 4c3a8b1792d546a68ac58538c3f5d637
- Schauen Sie sich die Ergebnisse im ersten Terminal an:
Activation: helloworld (d545c458f3d34d6fbf5c29173be3d29e) [] Activation: locationUpdate (4c3a8b1792d546a68ac58538c3f5d637) [] Activation: helloworldOnLocationUpdate (c099355c1f1f4d6d8d30f54e8dac2b84) []
- Wir ermitteln die ID der bedingten Antwort und überprüfen die Ergebnisse der Funktion:
wsk activation get d545c458f3d34d6fbf5c29173be3d29e ok: got activation d545c458f3d34d6fbf5c29173be3d29e { ... "activationId": "d545c458f3d34d6fbf5c29173be3d29e", "start": 1489444142544, "end": 1489444142598, "response": { "status": "success", "statusCode": 0, "success": true, "result": { "payload": "Hello, Amy from Paris" } }, ... }
Ankündigung
Serverloses Rechnen basierend auf OpenWhisk, Teil 1
Serverloses Rechnen basierend auf OpenWhisk, Teil 2
Serverloses Rechnen basierend auf OpenWhisk, Teil 3
Serverloses Rechnen basierend auf OpenWhisk, Teil 4