deploy | ||
src | ||
.dockerignore | ||
.gitignore | ||
go.mod | ||
README.asciidoc |
Stock Ticker
Overview
$ curl http://stock-ticker.test/stockprice
Symbol: MSFT
Week | Closing Price
==========================
2023-02-17 | 258.0600
2023-02-10 | 263.1000
2023-02-03 | 258.3500
2023-01-27 | 248.1600
2023-01-20 | 240.2200
2023-01-13 | 239.2300
2023-01-06 | 224.9300
This is a simple web service that prints the last 'N' weeks of closing stock prices for a particular stock. The data is retrieved from Alpha Vantage’s API.
The web service servers the following endpoints:
-
/healthcheck
- Returns200
if the server is up and running. -
/stockprice
- Prints the closing prices for the latest N weeks.
Alpha Vantage API Key
Before running the web service you’ll need to obtain an API key from Alpha Vantage. You can claim a free key from:
Required environment variables
Environment Variable | Description | Example |
---|---|---|
SYMBOL |
The stock’s symbol. |
MSFT |
NWEEKS |
Display the closing price for the last N weeks. |
7 |
APIKEY |
Your API key from Alpha Vantage. |
Command line arguments
Argument | Description | Default |
---|---|---|
address |
The address that the web server will listen on. |
0.0.0.0:8080 |
Running the docker image locally
The docker image is published to the container registry at Code Flow here. You can pull and run the docker image from the registry with the following command:
docker run --rm \
-d \
-e SYMBOL=MSFT \
-e NWEEKS=3 \
-e APIKEY=<YOUR_API_KEY> \
--publish 8080:8080 \
--name stock-ticker \
codeflow.dananglin.me.uk/apollo/stock-ticker:v0.1.0
Alternatively you can build and run the docker image locally.
git clone https://codeflow.dananglin.me.uk/apollo/stock-ticker.git
cd stock-ticker
docker build -t stock-ticker -f deploy/Dockerfile .
docker run --rm \
-d \
-e SYMBOL=MSFT \
-e NWEEKS=3 \
-e APIKEY=<YOUR_API_KEY> \
--publish 8080:8080 \
--name stock-ticker \
stock-ticker
Now you can go to http://localhost:8080/stockprice in your browser to view a table of the latest weekly closing stock prices for Microsoft (MSFT).
Deploying the web service on Minikube
The web service can be deployed on any distribution of Kubernetes but the below guide will focus on deployment onto a Minikube cluster. The Kubernetes manifest can viewed here and you can download and modify it as you wish.
-
Follow these instructions to install and start a Minikube cluster.
-
Set up ingress using either the Ingress DNS or Kong Ingress addon.
-
Apply the Kubernetes manifest to your Minikube cluster.
kubectl apply -f https://codeflow.dananglin.me.uk/apollo/stock-ticker/raw/branch/main/deploy/manifest.yaml
-
Wait until the pods are running and in a 'Ready' state.
$ kubectl -n stock-ticker get pods NAME READY STATUS RESTARTS AGE stock-ticker-656859cf74-bb8w6 1/1 Running 0 29s stock-ticker-656859cf74-nvnbf 1/1 Running 0 29s stock-ticker-656859cf74-p6xzk 1/1 Running 0 29s
-
Go to http://stock-ticker.<YOUR_TLD>/stockprice from your browser.