diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..8e3b8a40 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,112 @@ + * [Running Fission on your Cluster](#running-fission-on-your-cluster) + * [Setup Kubernetes](#setup-kubernetes) + * [Mac](#install-and-start-kubernetes-on-osx) + * [Linux](#or-install-and-start-kubernetes-on-linux) + * [Verify access to the cluster](#verify-access-to-the-cluster) + * [Get and Run Fission: Minikube or Local cluster](#get-and-run-fission-minikube-or-local-cluster) + * [Get and Run Fission: GKE or other Cloud](#get-and-run-fission-gke-or-other-cloud) + * [Install the client CLI](#install-the-client-cli) + * [Run an example](#run-an-example) + +## Running Fission on your Cluster + +### Setup Kubernetes + +You can install Kubernetes on your laptop with [minikube](https://github.com/kubernetes/minikube): + +#### Install and start Kubernetes on OSX: +```bash + $ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin + $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.14.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ + $ minikube start +``` + +#### Or, install and start Kubernetes on Linux: +```bash + $ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin + $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.14.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ + $ minikube start +``` + +Or, you can use [Google Container Engine's](https://cloud.google.com/container-engine/) free trial to get a 3 node cluster. + +### Verify access to the cluster + +``` + $ kubectl version +``` + +### Get and Run Fission: Minikube or Local cluster + +If you're using minikube or no cloud provider, use these commands to +set up services with NodePort. This exposes fission on ports 31313 +and 31314. + +``` + $ kubectl create -f http://fission.io/fission.yaml + $ kubectl create -f http://fission.io/fission-nodeport.yaml +``` + +Set the FISSION_URL and FISSION_ROUTER environment variables. +FISSION_URL is used by the fission CLI to find the server. +FISSION_URL should be prefixed with a `http://`. (FISSION_ROUTER is +only needed for the examples below to work.) + +If you're using minikube, use these commands: + +``` + $ export FISSION_URL=http://$(minikube ip):31313 + $ export FISSION_ROUTER=$(minikube ip):31314 +``` + + +### Get and Run Fission: GKE or other Cloud + +If you're using GKE or any other cloud provider that supports the +LoadBalancer service type, use these commands: + +``` + $ kubectl create -f http://fission.io/fission.yaml + $ kubectl create -f http://fission.io/fission-cloud.yaml +``` + +Save the external IP addresses of controller and router services in +FISSION_URL and FISSION_ROUTER, respectively. Wait for services to +get IP addresses (check this with ```kubectl --namespace fission get +svc```). Then: + +``` + $ export FISSION_URL=http://$(kubectl --namespace fission get svc controller -o=jsonpath='{..ip}') + $ export FISSION_ROUTER=$(kubectl --namespace fission get svc router -o=jsonpath='{..ip}') +``` + +### Install the client CLI + +Get the CLI binary for Mac: + +``` + $ curl http://fission.io/mac/fission > fission && chmod +x fission && sudo mv fission /usr/local/bin/ +``` + +Or Linux: + +``` + $ curl http://fission.io/linux/fission > fission && chmod +x fission && sudo mv fission /usr/local/bin/ +``` + +### Run an example + +Finally, you're ready to use Fission! + +``` + $ fission env create --name nodejs --image fission/node-env + + $ echo 'module.exports = function(context, callback) { callback(200, "Hello, world!\n"); }' > hello.js + + $ fission function create --name hello --env nodejs --code hello.js + + $ fission route create --method GET --url /hello --function hello + + $ curl http://$FISSION_ROUTER/hello + Hello, world! +``` diff --git a/README.md b/README.md index 19c8e09f..3e29dd1b 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ Usage Hello, world! ``` +See the [examples](examples) directory for more. Running Fission on your Cluster =============================== @@ -226,9 +227,12 @@ If you're changing the CLI: Status ====== -Fission is in early alpha. Don't use it in production just yet! +Fission is in early alpha. It's not suitable for production use just +yet. -Right now, we're looking for developer feedback -- tell us which -languages you care about, what use cases you might use it for, and so -on. +We're looking for early developer feedback -- if you do use Fission, +we'd love to hear how it's working for you, what parts in particular +you'd like to see improved, and so on. Talk to us on +[slack](http://slack.fission.io) or +[twitter](https://twitter.com/fissionio).