Genie for Cloud Environments
This repository is the cloud-native version of Genie, the open virtual-assistant. It includes the web frontend, the Genie backend, the embedded skill library, and the NLP model servers.
Genie is a research project led by prof. Monica Lam, from Stanford University. You can find more information at https://oval.cs.stanford.edu.
Development
-
You need Git.
Mac:
-
Install Homebrew
-
Install Git:
brew install git
-
-
Clone this repository.
You can clone it wherever you want, but if you don't know where to put it I recommend:
mkdir -p "${HOME}/src/github.com/stanford-oval" && cd "${HOME}/src/github.com/stanford-oval"
to create a directory and change into it.
Then
git clone --branch wip/nrser/k8s-dev-setup https://github.com/stanford-oval/almond-cloud.git
and change into the cloned repository with
cd almond-cloud
-
You need Kubernetes running locally. For Windows and Mac we recommend Docker Desktop. After installation, follow the instructions to enabled Kubernetes.
On Linux, there are (of course) several options. Minikube, MicroK8s and Kind are the ones I've heard of. These instructions will follow a Docker Desktop installation, so adjust as needed.
-
Build the Almond Cloud Docker image
docker build -f docker/Dockerfile -t localhost/almond-cloud .
-
Install the latest
kustomize
.Mac:
brew install kustomize
Windows and Linux: Follow their installation instructions.
If you're on the Mac, I recommend the Homebrew option.
NOTE
Kustomize does come bundled with the
kubectl
utility that Kubernetes installations ship with, but some or all will be too out-of-date for our needs. -
Deploy the Kubernetes Dashboard
kustomize build k8s/dashboard/dev | kubectl apply -f -
In a separate terminal, run
kubectl proxy
and keep that terminal open.
Visit
and use the Skip button to login and view the dashboard (there shouldn't be much there yet!).
-
Deploy the Nginx Ingress Controller
kustomize build k8s/ingress-nginx/dev | kubectl apply -f -
-
Create a Mailgun account (if you don't already have one) and get the SMTP username and password for the domain you want to use to send emails.
If you use the "sandbox" domain, make sure you add your email address to the Authorized Recipients and click the confirmation link they mail to you.
-
Create a local dev environment file
-
Create a text file in the
dev
directory named.env
-
Add these lines to the file, replacing the stuff between the
'
quotes with the SMTP credentials from the last step and your email address.MAILGUN_SMTP_USERNAME='[email protected]' MAILGUN_SMTP_PASSWORD='your-smtp-password' DEVELOPER_EMAIL='[email protected]'
-
Save the file.
-
-
Generate your
kustomize
secret file./dev/bin/almond-dev.configure.bash
The secret file is written to
k8s/config/dev/secret.yaml
. -
Check your config files build successfully with
kustomize
kustomize build ./k8s/dev
You should see a big dump of
YAML
to the screen. If there is an error, try to figure it out or ask for help. -
Deploy Genie
kustomize build ./k8s/dev | kubectl apply -f -
-
Go back to the dashboard and switch to the
almond-dev
namespace.You should see the Genie components booting up. It can take a few minutes for everything to "go green", but after that you can use Almond Cloud at