Giter VIP home page Giter VIP logo

genie-cloud's Introduction

Genie for Cloud Environments

Build Status Coverage Status Dependency Status Language grade: JavaScript Discord Discourse status

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

  1. You need Git.

    Mac:

    1. Install Homebrew

    2. Install Git:

      brew install git
      
  2. 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
    
  3. 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.

  4. Build the Almond Cloud Docker image

    docker build -f docker/Dockerfile -t localhost/almond-cloud .
    
  5. 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.

  6. 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

    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

    and use the Skip button to login and view the dashboard (there shouldn't be much there yet!).

  7. Deploy the Nginx Ingress Controller

    kustomize build k8s/ingress-nginx/dev | kubectl apply -f -
    
  8. 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.

  9. Create a local dev environment file

    1. Create a text file in the dev directory named .env

    2. 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]'
      
    3. Save the file.

  10. Generate your kustomize secret file

    ./dev/bin/almond-dev.configure.bash
    

    The secret file is written to k8s/config/dev/secret.yaml.

  11. 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.

  12. Deploy Genie

    kustomize build ./k8s/dev | kubectl apply -f -
    
  13. 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

    http://localhost:8080

genie-cloud's People

Contributors

gcampax avatar sileix avatar nrser avatar dependabot-preview[bot] avatar jgd5 avatar greenkeeper[bot] avatar euirim avatar greentfrapp avatar dependabot[bot] avatar ryachen01 avatar almakantara avatar jdengmoloco avatar ad31c0 avatar rickygv99 avatar tsonthalia avatar emilyjchang avatar balloob avatar rakeshr1 avatar mehrad0711 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.