This branch contains a fork of Infinicache
which was modified in such a way that we are able to create 2 different containers (1 for the
proxy and 1 for the cache nodes) and then deploy such components in Kubernetes and Knative.
A more detailed view about what the repository contains can be found in /docs
.
-
Setup a Google Cloud account (Google offers free credit) and enable Google Kubernetes Engine (GKE) and Google Build. Follow GCP guidelines carefully to correctly setup
gcloud
. -
Once you have GKE enabled, you should able to create a cluster, therefore modify file
/setup/config
with your desired configuration and from theproxy/
folder create a GKE cluster without Istio add-on. We do this because the Istio version of the add-on usually lags behind what Knative expects:
$ ./setup/create-gke-cluster
- Install Istio
$ ./install-istio
- Install Knative Serving
$ ./install-serving
- Install Knative Eventing
$ ./install-eventing
- (Optional, but recommended) Install observability features to enable logging, metrics, and request tracing in Serving and Eventing components:
$ ./install-monitoring
- Check if all pods are up and running:
$ kubectl get pods --all-namespaces
NB: The repository is configured to work with 20 cache nodes. If you want to modify this
number you may want to change file proxy/proxy/server/config.go
.
-
Modify files
node/node-knService.yaml
andproxy/proxy-deployment.yaml
with the correct iage adress -
Go to the node module and containerize the application.
$ cd node/
$ gcloud builds submit --tag gcr.io/{PROJECT-ID}/infinicache-node
- Deploy 20 local cache nodes using Knative
$ cd node/
$ ./createNodes 19
- Find the nodes addresses
$ kubectl get ksvc
- Configure the proxy with the nodes addresses. Modify the file
proxy/proxy/server/config.go
by modifying the LambdaAddresses array. - Go to the proxy module and containerize the application.
$ cd proxy/
$ gcloud builds submit --tag gcr.io/{PROJECT-ID}/infinicache-proxy
- Modify file
proxy/proxy-deployment.yaml
with the correct image address - Create deployment and service for proxy
$ cd proxy/
$ kubectl apply - proxy-service.yaml
$ kubectl apply -f proxy-deployment.yaml
- Wait proxy to become READY
$ kubectl get pods --watch
- SSH to Proxy pod
$ kubectl exec -it {POD-NAME} /bin/bash
- Launch Proxy
$ make start
- Run Test
$ go run client/example/main.go