Before starting this lab, create a new folder for your files:
$ mkdir -p lab2 \
&& cd lab2
You can now test out the OpenFaaS UI:
If you have set an $OPENFAAS_URL
then get the URL and then click on it:
echo $OPENFAAS_URL
http://127.0.0.1:31112
If you haven't set an $OPENFAAS_URL
then the default is normally: http://127.0.0.1:8080.
We can deploy some sample functions and then use them to test things out:
$ faas-cli deploy -f https://raw.githubusercontent.com/openfaas/faas/master/stack.yml
You can try them out in the UI such as the Markdown function which converts Markdown code into HTML.
Type the below into the Request field:
## The **OpenFaaS** _workshop_
Now click Invoke and see the response appear in the bottom half of the screen.
I.e.
<h2>The <strong>OpenFaaS</strong> <em>workshop</em></h2>
You will see the following fields displayed:
- Status - whether the function is ready to run. You will not be able to invoke the function from the UI until the status shows Ready.
- Replicas - the amount of replicas of your function running in the cluster
- Image - the Docker image name and version as published to the Docker Hub or Docker repository
- Invocation count - this shows how many times the function has been invoked and is updated every 5 seconds
Click Invoke a number of times and see the Invocation count increase.
You can deploy a function from the OpenFaaS store. The store is a free collection of functions curated by the community.
- Click Deploy New Function
- Click From Store
- Click Figlet or enter figlet into the search bar and then click Deploy
The Figlet function will now appear in your left-hand list of functions. Give this a few moments to be downloaded from the Docker Hub and then type in some text and click Invoke like we did for the Markdown function.
You'll see an ASCII logo generated like this:
_ ___ ___ _ __
/ |/ _ \ / _ (_)/ /
| | | | | | | |/ /
| | |_| | |_| / /_
|_|\___/ \___/_/(_)
You can now test out the CLI, but first a note on alternate gateways URLs:
If your gateway is not deployed at http://127.0.0.1:8080 then you will need to specify the alternative location. There are several ways to accomplish this:
- Set the environment variable
OPENFAAS_URL
and thefaas-cli
will point to that endpoint in your current shell session. For example:export OPENFAAS_URL=http://openfaas.endpoint.com:8080
. This is already set in Lab 1 if you are following the Kubernetes instructions. - Specify the correct endpoint inline with the
-g
or--gateway
flag:faas deploy --gateway http://openfaas.endpoint.com:8080
- In your deployment YAML file, change the value specified by the
gateway:
object underprovider:
.
This will show the functions, how many replicas you have and the invocation count.
$ faas-cli list
You should see the markdown function as markdown
and the figlet function listed too along with how many times you've invoked them.
Now try the verbose flag
$ faas-cli list --verbose
or
$ faas-cli list -v
You can now see the Docker image along with the names of the functions.
Pick one of the functions you saw appear on faas-cli list
such as markdown
:
$ faas-cli invoke markdown
You'll now be asked to type in some text. Hit Control + D when you're done.
Alternatively you can use a command such as echo
or uname -a
as input to the invoke
command which works through the use of pipes.
$ echo Hi | faas-cli invoke markdown
$ uname -a | faas-cli invoke markdown
You can even generate a HTML file from this lab's markdown file with the following:
$ git clone https://github.com/openfaas/workshop \
&& cd workshop
$ cat lab2.md | faas-cli invoke markdown
OpenFaaS tracks metrics on your functions automatically using Prometheus. The metrics can be turned into a useful dashboard with free and Open Source tools like Grafana.
Deploy OpenFaaS Grafana with:
$ docker service create -d \
--name=grafana \
--publish=3000:3000 \
--network=func_functions \
stefanprodan/faas-grafana:4.6.3
Run Grafana in OpenFaaS Kubernetes namespace:
kubectl -n openfaas run \
--image=stefanprodan/faas-grafana:4.6.3 \
--port=3000 \
grafana
Expose Grafana with a NodePort:
kubectl -n openfaas expose deployment grafana \
--type=NodePort \
--name=grafana
Find Grafana node port address:
$ GRAFANA_PORT=$(kubectl -n openfaas get svc grafana -o jsonpath="{.spec.ports[0].nodePort}")
$ GRAFANA_URL=http://IP_ADDRESS:$GRAFANA_PORT/dashboard/db/openfaas
where IP_ADDRESS
is your corresponding IP for Kubernetes.
Or you may run this port-forwarding command in order to be able to access Grafana on http://127.0.0.1:3000
:
$ kubectl port-forward deployment/grafana 3000:3000 -n openfaas
After the service has been created open Grafana in your browser, login with username admin
password admin
and navigate to the pre-made OpenFaaS dashboard at:
http://127.0.0.1:3000/dashboard/db/openfaas
Use $GRAFANA_URL
instead
Pictured: example of an OpenFaaS dashboard with Grafana
Now move onto Lab 3