GithubHelp home page GithubHelp logo

willingc / jupyterhub-k8s Goto Github PK

View Code? Open in Web Editor NEW

This project forked from data-8/jupyterhub-k8s

0.0 1.0 0.0 392 KB

Data 8's deployment of JupyterHub on Kubernetes

License: Apache License 2.0

Makefile 8.11% Shell 47.05% Python 44.00% JavaScript 0.83%

jupyterhub-k8s's Introduction

JupyterHub on Kubernetes for Data 8

Build Status

This repo contains the Kubernetes config, container images, and docs for Data 8's deployment of JupyterHub on Kubernetes.

Getting Started

Google Cloud Engine

Log into the gcloud console at console.cloud.google.com

Create a cluster. Go to Container Engine > Container clusters > + Create Cluster. Fill out the required information and make sure you know how many instances you will need and what the memory and cpu requirements will be.

Go back to your dashboard in the GCP console. Click Activate Google Cloud Shell in the upper right-hand corner. It is an icon that looks like a small terminal.

In the new terminal window, clone the jupyterhub-k8s repository.

git clone https://github.com/data-8/jupyterhub-k8s

Set the zone.

gcloud config set compute/zone <your zone>

Get credentials for your cluster

gcloud container clusters get-credentials dev

Edit the docker-settings.json file. Set the docker repo name corresponding to your cloud provider. Set the image types. You can leave this blank if you are only using the base image. Set the context prefix to whatever you want.

Here is an example:

{
    "buildSettings": {
        "dockerRepo": {
            "gcloud": "gcr.io/data-8",
            "azure": "data8-on.azurecr.io/data-8"
        },
        "imageTypes": ",datahub,prob140,stat28"
    },
    "populateSettings": {
        "contextPrefix": "gke_data-8_us-central1-a_"
    }
}

Run the build script.

./build.bash [ hub | proxy | user user_type ]

Then enter the populate.bash commands printed by build.bash. Note the tag of the image that gets populated.

Edit the helm-chart/values.yaml file where it says # Must be overridden. Set the image tags to the tags of the docker images you just built using ./build.bash. Also make sure to set the correct docker images. You may also adjust some of the other settings in the values.yaml file if necessary.

Install helm.

Run helm.

helm init

helm --kube-context=<your context prefix><'dev' or 'prod'> install ./helm-chart

Later, when you want to change your deployment run:

helm list

helm --kube-context=<your context prefix><'dev' or 'prod'> upgrade <release name> ./helm-chart

Congragulations! You just deployed your own jupyterhub cluster using kubernetes! :D

File / Folder structure

The manifest.yaml file in the project root directory contains the entirety of the Kubenetes configuration for this deployment.

The subdirectories contain the Dockerfiles and scripts for the images used for this deployment.

All the images for this deployment are pushed to the data8 Docker Hub organization and are named data8/jupyterhub-k8s-<name> where <name> is the name of the containing folder for that image.

Development

Current work on this project lives in a ZenHub board for this repo. You must install the browser extension to see the board.

After installing the extension, navigate to the issue board or press b. You'll see a screen that looks something like this:

screenshot 2016-11-04 13 24 21

  • Icebox contains future tasks that haven't been prioritized.
  • This week contains tasks that we plan to finish this week.
  • In Progress contains tasks that someone is currently working on. All of these tasks have at least one person assigned to them.
  • When the task is complete, we close the related issue.

Epics are groups of tasks that correspond to a complete feature. To see only issues that belong to a specific Epic, you can click / unclick the "Filter by this epic" button on the Epic.

Workflow

  1. As tasks / issues first get created, they land in the Icebox pipeline and are categorized into an Epic if needed.
  2. During our weekly planning meetings we'll move tasks from Icebox to This Week.
  3. When team members start actively working on a task, they'll assign themselves to the task and move it into the In Progress pipeline.
  4. When team members finish a task, they'll make a Pull Request for the task. When the PR gets merged, they'll close the task to take it off the board.

Cal Blueprint

![bp](https://cloud.githubusercontent.com/assets/2468904/11998649/8a12f970-aa5d-11e5-8dab-7eef0766c793.png "BP Banner")

This project was worked on in close collaboration with Cal Blueprint. Cal Blueprint is a student-run UC Berkeley organization devoted to matching the skills of its members to our desire to see social good enacted in our community. Each semester, teams of 4-5 students work closely with a non-profit to bring technological solutions to the problems they face every day.

jupyterhub-k8s's People

Contributors

ryanlovett avatar yuvipanda avatar saladraider avatar derrickmar avatar samlau95 avatar allanlwu avatar gunjanbaid avatar marklescroart avatar sumukh avatar papajohn 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.