In this learn guide you will get up and running with Serverless Functions on Civo using OpenFaaS and Kubernetes.
First you'll need to apply for access to Civo's KUBE100 beta. If accepted you'll get $70 free credit every month. Then we'll provision a new instance and install k3s which is a light-weight Kubernetes distribution from Rancher Labs. With a working Kubernetes master node, we'll grab the
KUBECONFIG file so that we can connect from our laptop and then go on to deploy OpenFaaS and deploy a function from the store.
Once you're up and running with OpenFaaS, you can start learning how to build Serverless functions using a set of free hands-on labs built by the OpenFaaS community.
The first thing we will do is create a new Civo instance and a master node by taking the following steps:
Log into your Dashboard and click Instances
Create a new instance called "openfaas-k3s"
For the size pick Medium ($20/month)
This comes with 2CPU 4GB RAM and 50GB disk. The Small ($10/month) with 2GB RAM is also workable if you want to stretch your credit out or keep your costs down.
For the Image, pick Ubuntu 18.04 LTS
Initial user: civo
Public IP Address: Create
Add your SSH Key
If you don't have one yet then click on SSH Keys in the sidebar and follow the instructions below to set up a key.
On your laptop run:
ssh-keygen and accept all defaults.
Finally, you can add the key to your Civo account by inputting the value from
$HOME/.ssh/id_rsa.pub to the SSH Keys page.
- Now create the instance.
Once created, note down the Public IP of the instance and export an environment variable for use later:
export IP="184.108.40.206" # for example, using the IP of your instance in the place of 220.127.116.11.
Next, we will begin working on our instance. Connect to it using
$ ssh civo@$IP
We will now install k3s, which provides Kubernetes. Run the following, replacing
18.104.22.168 with the value in
curl -sLS get.k3s.io | INSTALL_K3S_EXEC='server --tls-san 22.214.171.124' sh -
Double check you used the correct IP, you should see it below:
sudo systemctl cat k3s
Then, secure your k3s by creating a firewall. By default
k3s is insecure because it exposes the
flannel networking ports.
Firewalls in Civo are whitelist-based, so create a firewall and allow the following ports on the Civo firewall page:
On the instance we need to make the k3s file readable by running the following commands:
$ mkdir ~/.kube $ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config $ sudo chown civo:civo .kube/config
Now on your laptop copy it down:
$ export IP="126.96.36.199" # for example $ mkdir -p ~/dev/workshop/ && cd ~/dev/workshop $ scp civo@$IP:~/.kube/config .
localhost reference to the remote address:
$ sed -ie s/localhost/$IP/g config`
Now see if
kubectl is working:
$ export KUBECONFIG=`pwd`/config $ kubectl get all --all-namespaces
If you open a new terminal later on, type in:
cd ~/dev/workshop # for example - your working directory for OpenFaaS export KUBECONFIG=config
Before we install OpenFaaS, you'll need to install some pre-requisites on your laptop:
Follow all of the instructions in OpenFaaS' Lab 1b, but skip the section "Setup a Kubernetes cluster".
When asked, pick: "A) For local clusters"
Your gateway address for the OpenFaaS Portal and UI will be:
http://$IP:31112/ and the password is saved in
The gateway is normally passed to the CLI via the
-g flag, but you can save some time by saving an environment variable:
Next, head over to OpenFaaS Lab 2 where you will test out the project and see how to deploy sample functions, including accessing the UI which you can see below.
We've now set up a Civo instance, installed Kubernetes, got local access to
kubectl from our laptop and have deployed OpenFaaS along with some test functions.
If you would like to continue learning you can:
- Continue the workshop at Lab 3 and learn how to deploy a dashboard for your functions
- Join the OpenFaaS Slack to chat with the OpenFaaS project community
- Read the latest OpenFaaS Blogs to find out more about functions
If you have questions, comments or suggestions, you can connect with the Civo community in the forums.