This example shows you how to develop multiple Cloud Functions to a single host using Minikube and Skaffold.
The example will focus on:
- taking two separate Cloud Functions (defined in the same file)
- building them each individually with Cloud Buildpacks and the Functions Framework
- deploying them to a local Kubernetes cluster with
minikube
andskaffold
- including live reloading!
Note: If on Cloud Shell, minikube
is pre-installed.
Install minikube
via the instructions for your platform at https://minikube.sigs.k8s.io/docs/start/
Confirm that minikube
is installed:
minikube version
You should see output similar to:
minikube version: v1.15.1
commit: 23f40a012abb52eff365ff99a709501a61ac5876
This starts minikube
using the default profile:
minikube start
This may take a few minutes.
Note: If on Cloud Shell, you may be asked to enable Cloud Shell to make API calls
You should see output similar to:
😄 minikube v1.15.1 on Debian 10.6
▪ MINIKUBE_FORCE_SYSTEMD=true
▪ MINIKUBE_HOME=/google/minikube
▪ MINIKUBE_WANTUPDATENOTIFICATION=false
✨ Automatically selected the docker driver
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
💾 Downloading Kubernetes v1.19.4 preload ...
🔥 Creating docker container (CPUs=2, Memory=4000MB) ...
🐳 Preparing Kubernetes v1.19.4 on Docker 19.03.13 ...
🔎 Verifying Kubernetes components...
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
This allows minikube
to handle external traffic:
minikube addons enable ingress
You should see output similar to:
🔎 Verifying ingress addon...
🌟 The 'ingress' addon is enabled
Note: If on Cloud Shell, skaffold
is pre-installed.
Install skaffold
via the instructions for your platform at https://skaffold.dev/docs/install/
Confirm that skaffold
is installed:
skaffold version
You should see output similar to:
v1.16.0
Start skaffold
with:
skaffold dev
You should see output similar to:
Starting deploy...
Waiting for deployments to stabilize...
- deployment/hello is ready. [1/2 deployment(s) still pending]
- deployment/goodbye is ready.
Deployments stabilized in 1.154162006s
Watching for changes...
This command will continue running indefinitely, watching for changes and redeploying as necessary.
Leaving the previous command running, in a new terminal, call your functions. To call the hello
function:
curl `minikube ip`/hello
You should see output similar to:
Hello, World!
To call the goodbye
function:
curl `minikube ip`/goodbye
You should see output similar to:
Goodbye, World!