From 665605623e9d4cd2eb5478d8e0419e5f58bd8e52 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Mon, 25 Nov 2019 12:07:56 -0800 Subject: [PATCH] Merge sample 1 and 2 (#113) * Update README.md for 1.hello-world. Update README.md for 1.hello-world to reflect latest version. * Changing samples 1 and 2 to share the same sample apps. --- 1.hello-world/README.md | 83 +++- .../python => 1.hello-world}/app.py | 0 1.hello-world/img/postman1.jpg | Bin 28812 -> 70310 bytes 1.hello-world/img/postman2.jpg | Bin 39064 -> 61267 bytes 1.hello-world/sample.http | 4 +- 2.hello-kubernetes/README.md | 80 +--- 2.hello-kubernetes/makefile | 13 +- 2.hello-kubernetes/node/.gitignore | 3 +- 2.hello-kubernetes/node/Dockerfile | 6 +- 2.hello-kubernetes/node/app.js | 49 --- 2.hello-kubernetes/node/package-lock.json | 410 ------------------ 2.hello-kubernetes/node/package.json | 16 - 2.hello-kubernetes/python/.gitignore | 1 + 2.hello-kubernetes/python/Dockerfile | 2 +- 14 files changed, 96 insertions(+), 571 deletions(-) rename {2.hello-kubernetes/python => 1.hello-world}/app.py (100%) delete mode 100644 2.hello-kubernetes/node/app.js delete mode 100644 2.hello-kubernetes/node/package-lock.json delete mode 100644 2.hello-kubernetes/node/package.json create mode 100644 2.hello-kubernetes/python/.gitignore diff --git a/1.hello-world/README.md b/1.hello-world/README.md index 6f1100536..606c452a9 100644 --- a/1.hello-world/README.md +++ b/1.hello-world/README.md @@ -1,6 +1,6 @@ # Hello World -This tutorial will demonstrate how to get Dapr running locally on your machine. We'll be deploying a Node.js app that subscribes to order messages and persists them. The following architecture diagram illustrates the components that make up this sample: +This tutorial will demonstrate how to get Dapr running locally on your machine. We'll be deploying a Node.js app that subscribes to order messages and persists them. Later on, we'll deploy a Python app to act as the publisher. The following architecture diagram illustrates the components that make up this sample: ![Architecture Diagram](./img/Architecture_Diagram.png) @@ -8,6 +8,7 @@ This tutorial will demonstrate how to get Dapr running locally on your machine. This sample requires you to have the following installed on your machine: - [Docker](https://docs.docker.com/) - [Node.js version 8 or greater](https://nodejs.org/en/) +- [Python 3.x](https://www.python.org/downloads/) - [Postman](https://www.getpostman.com/) [Optional] ## Step 1 - Setup Dapr @@ -107,12 +108,12 @@ This calls out to our Redis cache to grab the latest value of the "order" key, w 1. Install dependencies: `npm install`. This will install `express` and `body-parser`, dependencies that are shown in our `package.json`. -2. Run Node.js app with Dapr: `dapr run --app-id mynode --app-port 3000 --port 3500 node app.js`. +2. Run Node.js app with Dapr: `dapr run --app-id nodeapp --app-port 3000 --port 3500 node app.js`. The command should output text that looks like the following, along with logs: ``` -Starting Dapr with id mynode on port 3500 +Starting Dapr with id nodeapp. HTTP Port: 3500. gRPC Port: 9165 You're up and running! Both Dapr and your app logs will appear here. ... ``` @@ -125,14 +126,14 @@ Now that Dapr and our Node.js app are running, let's POST messages against it. * You can do this using `curl` with: ```sh -curl -XPOST -d @sample.json http://localhost:3500/v1.0/invoke/mynode/method/neworder +curl -XPOST -d @sample.json http://localhost:3500/v1.0/invoke/nodeapp/method/neworder ``` You can also do this using the Visual Studio Code [Rest Client Plugin](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) [sample.http](sample.http) ```http -POST http://localhost:3500/v1.0/invoke/mynode/method/neworder +POST http://localhost:3500/v1.0/invoke/nodeapp/method/neworder { "data": { @@ -143,27 +144,27 @@ POST http://localhost:3500/v1.0/invoke/mynode/method/neworder Or you can use the Postman GUI -Open Postman and create a POST request against `http://localhost:3500/v1.0/invoke/mynode/method/neworder` +Open Postman and create a POST request against `http://localhost:3500/v1.0/invoke/nodeapp/method/neworder` ![Postman Screenshot](./img/postman1.jpg) In your terminal window, you should see logs indicating that the message was received and state was updated: ```bash == APP == Got a new order! Order ID: 42 -== APP == Successfully persisted state +== APP == Successfully persisted state. ``` ## Step 5 - Confirm Successful Persistence -Now, let's just make sure that our order was successfully persisted to our state store. Create a GET request against: `http://localhost:3500/v1.0/invoke/mynode/method/order`. **Note**: Again, be sure to reflect the right port if you chose a port other than 3500. +Now, let's just make sure that our order was successfully persisted to our state store. Create a GET request against: `http://localhost:3500/v1.0/invoke/nodeapp/method/order`. **Note**: Again, be sure to reflect the right port if you chose a port other than 3500. ```sh -curl http://localhost:3500/v1.0/invoke/mynode/method/order +curl http://localhost:3500/v1.0/invoke/nodeapp/method/order ``` or using the Visual Studio Code [Rest Client Plugin](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) [sample.http](sample.http) ```http -GET http://localhost:3500/v1.0/invoke/mynode/method/order +GET http://localhost:3500/v1.0/invoke/nodeapp/method/order ``` or use the Postman GUI @@ -172,15 +173,71 @@ or use the Postman GUI This invokes the `/order` route, which calls out to our Redis store for the latest data. Observe the expected result! +## Step 7 - Run the Python App with Dapr + +Let's take a look at our Python App to see how another application can invoke the Node App via Dapr without being aware of the destination's hostname or port. In the `app.py` file we can find the endpoint definition to call the Node App via Dapr. + +```python +dapr_port = os.getenv("DAPR_HTTP_PORT", 3500) +dapr_url = "http://localhost:{}/v1.0/invoke/nodeapp/method/neworder".format(dapr_port) +``` +It is important to notice the Node App's name (`nodeapp`) in the URL, it will allow Dapr to redirect the request to the right API endpoint. This name needs to match the name used to run the Node App earlier in this exercise. + +The code block below shows how the Python App will incrementally post a new orderId every second, or print an exception if the post call fails. +```python +n = 0 +while True: + n += 1 + message = {"data": {"orderId": n}} + + try: + response = requests.post(dapr_url, json=message) + except Exception as e: + print(e) + + time.sleep(1) +``` + +Now we can open a **new** command line terminal and go to the `1.hello-world` directory. + +1. Install dependencies via `pip install requests` or `pip3 install requests`, depending on your local setup. + +2. Start the Python App with Dapr: `dapr run --app-id pythonapp python app.py` or `dapr run --app-id pythonapp python3 app.py` + +3. If all went well, the **other** terminal, running the Node App, should log entries like these: + +``` +Got a new order! Order ID: 1 +Successfully persisted state +Got a new order! Order ID: 2 +Successfully persisted state +Got a new order! Order ID: 3 +Successfully persisted state +``` + +4. Now, we perform a GET request a few times and see how the orderId changes every second (enter it into the web browser, use Postman, or curl): + +```http +GET http://localhost:3500/v1.0/invoke/nodeapp/method/order +``` +```json +{ + "orderId": 3 +} +``` + +> **Note**: we did not run `dapr init` in the **second** command line terminal because dapr was already setup on your local machine initially, running this command again would fail. + ## Step 6 - Cleanup -To stop your services from running, simply stop the "dapr run" process. Alternatively, you can spin down each of your services with the Dapr CLI "stop" command. For example, to spin down your Node service, run: +To stop your services from running, simply stop the "dapr run" process. Alternatively, you can spin down each of your services with the Dapr CLI "stop" command. For example, to spin down both services, run these commands in a new command line terminal: ```bash -dapr stop --app-id mynode +dapr stop --app-id nodeapp +dapr stop --app-id pythonapp ``` -To see that services have stopped running, run `dapr list`, noting that your service no longer appears! +To see that services have stopped running, run `dapr list`, noting that your services no longer appears! ## Next Steps diff --git a/2.hello-kubernetes/python/app.py b/1.hello-world/app.py similarity index 100% rename from 2.hello-kubernetes/python/app.py rename to 1.hello-world/app.py diff --git a/1.hello-world/img/postman1.jpg b/1.hello-world/img/postman1.jpg index 60396e871bf2d822ae8da2be8a575ece3f43cde7..32d614e49db074c7a312649e96a37c36902f8f8a 100644 GIT binary patch literal 70310 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 literal 28812 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 VDz6!-c70#GQqg)*{jXKX{{r`Sb&LQ2 diff --git a/1.hello-world/img/postman2.jpg b/1.hello-world/img/postman2.jpg index 3d8fae0c3242791a94088f4d72a756cecaf549e8..d5f3252f5cc6584df37e6e030e4950c7497f0af3 100644 GIT binary patch literal 61267 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 literal 39064 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 G_52J~@HuV( diff --git a/1.hello-world/sample.http b/1.hello-world/sample.http index 3f7dc516c..5ddc1de9e 100644 --- a/1.hello-world/sample.http +++ b/1.hello-world/sample.http @@ -1,7 +1,7 @@ -POST http://localhost:3500/v1.0/invoke/mynode/method/neworder +POST http://localhost:3500/v1.0/invoke/nodeapp/method/neworder { "data": {"orderId":"42"} } ### -GET http://localhost:3500/v1.0/invoke/mynode/method/order \ No newline at end of file +GET http://localhost:3500/v1.0/invoke/nodeapp/method/order \ No newline at end of file diff --git a/2.hello-kubernetes/README.md b/2.hello-kubernetes/README.md index d5a0b8a90..76d34e77e 100644 --- a/2.hello-kubernetes/README.md +++ b/2.hello-kubernetes/README.md @@ -1,6 +1,6 @@ # Hello Kubernetes -This tutorial will get you up and running with Dapr in a Kubernetes cluster. We'll be deploying a python app that generates messages and a Node app that consumes and persists them. The following architecture diagram illustrates the components that make up this sample: +This tutorial will get you up and running with Dapr in a Kubernetes cluster. We'll be deploying the same applications from [Hello World](../1.hello-world). To recap, the Python App generates messages and the Node app consumes and persists them. The following architecture diagram illustrates the components that make up this sample: ![Architecture Diagram](./img/Architecture_Diagram.png) @@ -36,75 +36,7 @@ Dapr can use a number of different state stores (Redis, CosmosDB, DynamoDB, Cass component.dapr.io "statestore" configured ``` -## Step 3 - Understand the Code - -Now that we've setup Dapr and state, let's take a look at our services. Clone the sample repository: -```bash -git clone https://github.com/dapr/samples.git -``` - - Navigate to the Node.js app in the Kubernetes sample: `cd samples/2.hello-kubernetes/node`. - -In the `app.js` you'll find a simple `express` application, which exposes a few routes and handlers. - -Let's take a look at the ```neworder``` handler: - -```js -app.post('/neworder', (req, res) => { - const data = req.body.data; - const orderId = data.orderId; - console.log("Got a new order! Order ID: " + orderId); - - const state = [{ - key: "order", - value: data - }]; - - fetch(`${daprUrl}/state`, { - method: "POST", - body: JSON.stringify(state), - headers: { - "Content-Type": "application/json" - } - }).then((response) => { - console.log((response.ok) ? "Successfully persisted state" : "Failed to persist state"); - }); - - res.status(200).send(); -}); -``` - -Here we're exposing an endpoint that will receive and handle `neworder` messages. We first log the incoming message, and then persist the order ID to our Redis store by posting a state array to the `/state` endpoint. - -Alternatively, we could have persisted our state by simply returning it with our response object: - -```js -res.json({ - state: [{ - key: "order", - value: order - }] - }) -``` - -We chose to avoid this approach, as it doesn't allow us to verify if our message successfully persisted. - -We also expose a GET endpoint, `/order`: - -```js -app.get('/order', (_req, res) => { - fetch(`${daprUrl}/state/order`) - .then((response) => { - return response.json(); - }).then((orders) => { - res.send(orders); - }); -}); -``` - -This calls out to our Redis cache to grab the latest value of the "order" key, which effectively allows our Node.js app to be _stateless_. - -## Step 4 - Deploy the Node.js App with the Dapr Sidecar +## Step 3 - Deploy the Node.js App with the Dapr Sidecar ``` kubectl apply -f ../deploy/node.yaml @@ -134,7 +66,7 @@ You can also export it to a variable: export NODE_APP=$(kubectl get svc nodeapp --output 'jsonpath={.status.loadBalancer.ingress[0].ip}') ``` -## Step 5 - Deploy the Python App with the Dapr Sidecar +## Step 4 - Deploy the Python App with the Dapr Sidecar Next, let's take a quick look at our python app. Navigate to the python app in the kubernetes sample: `cd samples/2.hello-kubernetes/python` and open `app.py`. At a quick glance, this is a basic python app that posts JSON messages to `localhost:3500`, which is the default listening port for Dapr. We invoke our Node.js application's `neworder` endpoint by posting to `v1.0/invoke/nodeapp/method/neworder`. Our message contains some `data` with an orderId that increments once per second: @@ -164,7 +96,7 @@ Now let's just wait for the pod to be in ```Running``` state: kubectl get pods --selector=app=python -w ``` -## Step 6 - Observe Messages +## Step 5 - Observe Messages Now that we have our Node.js and python applications deployed, let's watch messages come through.
Get the logs of our Node.js app: @@ -184,7 +116,7 @@ Got a new order! Order ID: 3 Successfully persisted state ``` -## Step 7 - Confirm Successful Persistence +## Step 6 - Confirm Successful Persistence Hit the Node.js app's order endpoint to get the latest order. Grab the external IP address that we saved before and, append "/order" and perform a GET request against it (enter it into your browser, use Postman, or curl it!): @@ -195,7 +127,7 @@ curl $NODE_APP/order You should see the latest JSON in response! -## Step 8 - Cleanup +## Step 7 - Cleanup Once you're done using the sample, you can spin down your Kubernetes resources by navigating to the `./deploy` directory and running: diff --git a/2.hello-kubernetes/makefile b/2.hello-kubernetes/makefile index 64ddc8ea3..7ad730e87 100644 --- a/2.hello-kubernetes/makefile +++ b/2.hello-kubernetes/makefile @@ -14,7 +14,16 @@ DOCKERFILE:=Dockerfile .PHONY: build SAMPLE_APPS:=$(foreach ITEM,$(APPS),$(DOCKER_IMAGE_PREFIX)$(ITEM)) -build: $(SAMPLE_APPS) +build: copy $(SAMPLE_APPS) + +# copy app files from 1.hello-world +copy: + mkdir -p python/.dockerfiles + mkdir -p node/.dockerfiles + cp ../1.hello-world/app.py python/.dockerfiles/ + cp ../1.hello-world/app.js node/.dockerfiles/ + cp ../1.hello-world/package.json node/.dockerfiles/ + cp ../1.hello-world/package-lock.json node/.dockerfiles/ # Generate docker image build targets # Params: @@ -49,4 +58,4 @@ endif endef # Generate docker image push targets -$(foreach ITEM,$(APPS),$(eval $(call genDockerImagePush,$(ITEM),$(REL_VERSION)))) \ No newline at end of file +$(foreach ITEM,$(APPS),$(eval $(call genDockerImagePush,$(ITEM),$(REL_VERSION)))) diff --git a/2.hello-kubernetes/node/.gitignore b/2.hello-kubernetes/node/.gitignore index b512c09d4..cfe9975c7 100644 --- a/2.hello-kubernetes/node/.gitignore +++ b/2.hello-kubernetes/node/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +.dockerfiles diff --git a/2.hello-kubernetes/node/Dockerfile b/2.hello-kubernetes/node/Dockerfile index 19388342f..3b62631fe 100644 --- a/2.hello-kubernetes/node/Dockerfile +++ b/2.hello-kubernetes/node/Dockerfile @@ -1,6 +1,6 @@ FROM node:8-alpine -WORKDIR /usr/src/app -COPY . . +WORKDIR /app +COPY .dockerfiles . RUN npm install EXPOSE 3000 -CMD [ "node", "app.js" ] \ No newline at end of file +CMD [ "node", "app.js" ] diff --git a/2.hello-kubernetes/node/app.js b/2.hello-kubernetes/node/app.js deleted file mode 100644 index 27d7c8713..000000000 --- a/2.hello-kubernetes/node/app.js +++ /dev/null @@ -1,49 +0,0 @@ -// ------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -// ------------------------------------------------------------ - -const express = require('express'); -const bodyParser = require('body-parser'); -require('isomorphic-fetch'); - -const app = express(); -app.use(bodyParser.json()); - -const daprPort = process.env.DAPR_HTTP_PORT || 3500; -const daprUrl = `http://localhost:${daprPort}/v1.0`; -const port = 3000; - -app.get('/order', (_req, res) => { - fetch(`${daprUrl}/state/order`) - .then((response) => { - return response.json(); - }).then((order) => { - res.send(order); - }); -}); - -app.post('/neworder', (req, res) => { - const data = req.body.data; - const orderId = data.orderId; - console.log("Got a new order! Order ID: " + orderId); - - const state = [{ - key: "order", - value: data - }]; - - fetch(`${daprUrl}/state`, { - method: "POST", - body: JSON.stringify(state), - headers: { - "Content-Type": "application/json" - } - }).then((response) => { - console.log((response.ok) ? "Successfully persisted state" : "Failed to persist state"); - }); - - res.status(200).send(); -}); - -app.listen(port, () => console.log(`Node App listening on port ${port}!`)); \ No newline at end of file diff --git a/2.hello-kubernetes/node/package-lock.json b/2.hello-kubernetes/node/package-lock.json deleted file mode 100644 index f64c19309..000000000 --- a/2.hello-kubernetes/node/package-lock.json +++ /dev/null @@ -1,410 +0,0 @@ -{ - "name": "node_server", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" - } - } -} diff --git a/2.hello-kubernetes/node/package.json b/2.hello-kubernetes/node/package.json deleted file mode 100644 index f6f296d35..000000000 --- a/2.hello-kubernetes/node/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "node_server", - "version": "1.0.0", - "description": "", - "main": "app.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "body-parser": "^1.18.3", - "express": "^4.16.4", - "isomorphic-fetch": "^2.2.1" - } -} diff --git a/2.hello-kubernetes/python/.gitignore b/2.hello-kubernetes/python/.gitignore new file mode 100644 index 000000000..96a4f9a5f --- /dev/null +++ b/2.hello-kubernetes/python/.gitignore @@ -0,0 +1 @@ +.dockerfiles diff --git a/2.hello-kubernetes/python/Dockerfile b/2.hello-kubernetes/python/Dockerfile index f07aaa573..54efd1991 100644 --- a/2.hello-kubernetes/python/Dockerfile +++ b/2.hello-kubernetes/python/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.7.1-alpine3.8 -COPY . /app WORKDIR /app +COPY .dockerfiles . RUN pip install requests ENTRYPOINT ["python"] CMD ["app.py"]