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. 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.
Set up an instance
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="18.104.22.168" # for example, using the IP of your instance in the place of 22.214.171.124.
Log into the instance with
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
126.96.36.199 with the value in
curl -sLS get.k3s.io | INSTALL_K3S_EXEC='server --tls-san 188.8.131.52' 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="184.108.40.206" # 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
Start using OpenFaaS
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:
Test out the OpenFaaS UI
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: