Documentation Revamp (#496)
Added a new documentation structure with details of concepts, tutorials and examples
This commit is contained in:
@@ -1,181 +1,10 @@
|
||||
---
|
||||
title: "Installation Guide"
|
||||
date: 2017-09-07T20:10:05-07:00
|
||||
draft: false
|
||||
weight: 20
|
||||
chapter : true
|
||||
---
|
||||
|
||||
Welcome! This guide will get you up and running with Fission on a
|
||||
Kubernetes cluster.
|
||||
|
||||
### Cluster preliminaries
|
||||
|
||||
If you don't have a Kubernetes cluster, [here's a quick guide to set
|
||||
one up](../kubernetessetup).
|
||||
|
||||
Let's ensure you have the Kubernetes CLI and Helm installed and
|
||||
ready. If you already have helm, [skip ahead to the fission install](#install-fission).
|
||||
|
||||
#### Kubernetes CLI
|
||||
|
||||
Ensure you have the Kubernetes CLI.
|
||||
|
||||
You can get the Kubernetes CLI for OSX like this:
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
|
||||
Or, for Linux:
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
|
||||
Ensure you have access to a cluster; use kubectl to check your
|
||||
Kubernetes version:
|
||||
|
||||
```
|
||||
$ kubectl version
|
||||
```
|
||||
|
||||
We need at least Kubernetes 1.6 (older versions may work, but we don't
|
||||
test them).
|
||||
|
||||
#### Helm
|
||||
|
||||
Helm is an installer for Kubernetes. If you already use helm, [skip to
|
||||
the next section](#install-fission).
|
||||
|
||||
First, you'll need the helm CLI:
|
||||
|
||||
On __OS X__:
|
||||
```
|
||||
$ curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-darwin-amd64.tar.gz
|
||||
|
||||
$ tar xzf helm-v2.7.0-darwin-amd64.tar.gz
|
||||
|
||||
$ mv darwin-amd64/helm /usr/local/bin
|
||||
```
|
||||
|
||||
On __Linux__:
|
||||
```
|
||||
$ curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz
|
||||
|
||||
$ tar xzf helm-v2.7.0-linux-amd64.tar.gz
|
||||
|
||||
$ mv linux-amd64/helm /usr/local/bin
|
||||
```
|
||||
|
||||
Next, install the Helm server on your Kubernetes cluster:
|
||||
|
||||
```
|
||||
$ helm init
|
||||
```
|
||||
|
||||
### Install Fission
|
||||
|
||||
#### Minikube
|
||||
|
||||
```
|
||||
$ helm install --namespace fission --set serviceType=NodePort https://github.com/fission/fission/releases/download/0.5.0/fission-all-0.5.0.tgz
|
||||
```
|
||||
|
||||
The serviceType variable allows configuring the type of Kubernetes
|
||||
service outside the cluster. You can use `ClusterIP` if you don't
|
||||
want to expose anything outside the cluster.
|
||||
|
||||
#### Cloud hosted clusters (GKE, AWS, Azure etc.)
|
||||
|
||||
```
|
||||
$ helm install --namespace fission https://github.com/fission/fission/releases/download/0.5.0/fission-all-0.5.0.tgz
|
||||
```
|
||||
|
||||
#### Minimal version
|
||||
|
||||
The fission-all helm chart installs a full set of services including
|
||||
the NATS message queue, influxDB for logs, etc. If you want a more
|
||||
minimal setup, you can install the fission-core chart instead:
|
||||
|
||||
```
|
||||
$ helm install --namespace fission https://github.com/fission/fission/releases/download/0.5.0/fission-core-0.5.0.tgz
|
||||
```
|
||||
|
||||
### Install the Fission CLI
|
||||
|
||||
#### OS X
|
||||
|
||||
Get the CLI binary for Mac:
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
For Windows, you can use the linux binary on WSL. Or you can download
|
||||
this windows executable: [fission.exe](https://github.com/fission/fission/releases/download/0.5.0/fission-cli-windows.exe)
|
||||
|
||||
### Set environment vars
|
||||
|
||||
Set the FISSION_URL and FISSION_ROUTER environment variables.
|
||||
FISSION_URL is used by the fission CLI to find the server.
|
||||
(FISSION_ROUTER is only needed for the examples below to work.)
|
||||
|
||||
#### Minikube
|
||||
|
||||
If you're using minikube, use these commands:
|
||||
|
||||
```
|
||||
$ export FISSION_URL=http://$(minikube ip):31313
|
||||
$ export FISSION_ROUTER=$(minikube ip):31314
|
||||
```
|
||||
#### Cloud setups
|
||||
|
||||
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:
|
||||
|
||||
##### AWS
|
||||
```
|
||||
$ export FISSION_URL=http://$(kubectl --namespace fission get svc controller -o=jsonpath='{..hostname}')
|
||||
$ export FISSION_ROUTER=$(kubectl --namespace fission get svc router -o=jsonpath='{..hostname}')
|
||||
```
|
||||
|
||||
##### GCP
|
||||
```
|
||||
$ 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}')
|
||||
```
|
||||
|
||||
### Run an example
|
||||
|
||||
Finally, you're ready to use Fission!
|
||||
|
||||
```
|
||||
$ fission env create --name nodejs --image fission/node-env:0.5.0
|
||||
|
||||
$ curl -LO https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/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!
|
||||
```
|
||||
|
||||
### What's next?
|
||||
|
||||
If something went wrong, we'd love to help -- please [drop by the
|
||||
slack channel](http://slack.fission.io) and ask for help.
|
||||
|
||||
Check out the
|
||||
[examples](https://github.com/fission/fission/tree/master/examples)
|
||||
for some example functions.
|
||||
# Installation
|
||||
|
||||
### Installing and upgrading Fission
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
title: "Installation Guide"
|
||||
draft: false
|
||||
weight: 20
|
||||
---
|
||||
|
||||
Welcome! This guide will get you up and running with Fission on a
|
||||
Kubernetes cluster.
|
||||
|
||||
### Cluster preliminaries
|
||||
|
||||
If you don't have a Kubernetes cluster, [here's a quick guide to set
|
||||
one up](../kubernetessetup).
|
||||
|
||||
Let's ensure you have the Kubernetes CLI and Helm installed and
|
||||
ready. If you already have helm, [skip ahead to the fission install](#install-fission).
|
||||
|
||||
#### Kubernetes CLI
|
||||
|
||||
Ensure you have the Kubernetes CLI.
|
||||
|
||||
You can get the Kubernetes CLI for OSX like this:
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
|
||||
Or, for Linux:
|
||||
```
|
||||
$ 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
|
||||
```
|
||||
|
||||
Ensure you have access to a cluster; use kubectl to check your
|
||||
Kubernetes version:
|
||||
|
||||
```
|
||||
$ kubectl version
|
||||
```
|
||||
|
||||
We need at least Kubernetes 1.6 (older versions may work, but we don't
|
||||
test them).
|
||||
|
||||
#### Helm
|
||||
|
||||
Helm is an installer for Kubernetes. If you already use helm, [skip to
|
||||
the next section](#install-fission).
|
||||
|
||||
First, you'll need the helm CLI:
|
||||
|
||||
On __OS X__:
|
||||
```
|
||||
$ curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-darwin-amd64.tar.gz
|
||||
|
||||
$ tar xzf helm-v2.7.0-darwin-amd64.tar.gz
|
||||
|
||||
$ mv darwin-amd64/helm /usr/local/bin
|
||||
```
|
||||
|
||||
On __Linux__:
|
||||
```
|
||||
$ curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz
|
||||
|
||||
$ tar xzf helm-v2.7.0-linux-amd64.tar.gz
|
||||
|
||||
$ mv linux-amd64/helm /usr/local/bin
|
||||
```
|
||||
|
||||
Next, install the Helm server on your Kubernetes cluster:
|
||||
|
||||
```
|
||||
$ helm init
|
||||
```
|
||||
|
||||
### Install Fission
|
||||
|
||||
#### Minikube
|
||||
|
||||
```
|
||||
$ helm install --namespace fission --set serviceType=NodePort https://github.com/fission/fission/releases/download/0.5.0/fission-all-0.5.0.tgz
|
||||
```
|
||||
|
||||
The serviceType variable allows configuring the type of Kubernetes
|
||||
service outside the cluster. You can use `ClusterIP` if you don't
|
||||
want to expose anything outside the cluster.
|
||||
|
||||
#### Cloud hosted clusters (GKE, AWS, Azure etc.)
|
||||
|
||||
```
|
||||
$ helm install --namespace fission https://github.com/fission/fission/releases/download/0.5.0/fission-all-0.5.0.tgz
|
||||
```
|
||||
|
||||
#### Minimal version
|
||||
|
||||
The fission-all helm chart installs a full set of services including
|
||||
the NATS message queue, influxDB for logs, etc. If you want a more
|
||||
minimal setup, you can install the fission-core chart instead:
|
||||
|
||||
```
|
||||
$ helm install --namespace fission https://github.com/fission/fission/releases/download/0.5.0/fission-core-0.5.0.tgz
|
||||
```
|
||||
|
||||
### Install the Fission CLI
|
||||
|
||||
#### OS X
|
||||
|
||||
Get the CLI binary for Mac:
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
For Windows, you can use the linux binary on WSL. Or you can download
|
||||
this windows executable: [fission.exe](https://github.com/fission/fission/releases/download/0.5.0/fission-cli-windows.exe)
|
||||
|
||||
### Set environment vars
|
||||
|
||||
Set the FISSION_URL and FISSION_ROUTER environment variables.
|
||||
FISSION_URL is used by the fission CLI to find the server.
|
||||
(FISSION_ROUTER is only needed for the examples below to work.)
|
||||
|
||||
#### Minikube
|
||||
|
||||
If you're using minikube, use these commands:
|
||||
|
||||
```
|
||||
$ export FISSION_URL=http://$(minikube ip):31313
|
||||
$ export FISSION_ROUTER=$(minikube ip):31314
|
||||
```
|
||||
#### Cloud setups
|
||||
|
||||
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:
|
||||
|
||||
##### AWS
|
||||
```
|
||||
$ export FISSION_URL=http://$(kubectl --namespace fission get svc controller -o=jsonpath='{..hostname}')
|
||||
$ export FISSION_ROUTER=$(kubectl --namespace fission get svc router -o=jsonpath='{..hostname}')
|
||||
```
|
||||
|
||||
##### GCP
|
||||
```
|
||||
$ 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}')
|
||||
```
|
||||
|
||||
### Run an example
|
||||
|
||||
Finally, you're ready to use Fission!
|
||||
|
||||
```
|
||||
$ fission env create --name nodejs --image fission/node-env:0.5.0
|
||||
|
||||
$ curl -LO https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/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!
|
||||
```
|
||||
|
||||
### What's next?
|
||||
|
||||
If something went wrong, we'd love to help -- please [drop by the
|
||||
slack channel](http://slack.fission.io) and ask for help.
|
||||
|
||||
Check out the
|
||||
[examples](https://github.com/fission/fission/tree/master/examples)
|
||||
for some example functions.
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: "Kubernetes Quick Install"
|
||||
draft: false
|
||||
weight: 21
|
||||
---
|
||||
|
||||
This is a quick guide to help you get started running Kubernetes on
|
||||
your laptop (or on the cloud).
|
||||
|
||||
(This isn't meant as a production Kuberenetes guide; it's merely
|
||||
intended to give you something quickly so you can try Fission on it.)
|
||||
|
||||
## Minikube
|
||||
|
||||
Minikube is the usual way to run Kubernetes on your laptop:
|
||||
|
||||
### Install and start Kubernetes on OSX:
|
||||
|
||||
```
|
||||
$ 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.16.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
|
||||
|
||||
$ minikube start
|
||||
```
|
||||
|
||||
### Or, install and start Kubernetes on Linux:
|
||||
|
||||
```
|
||||
$ 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.16.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
|
||||
|
||||
$ minikube start
|
||||
```
|
||||
|
||||
## Google Container Engine
|
||||
|
||||
Alternatively, you can use [Google Container Engine's](https://cloud.google.com/container-engine/) free trial to
|
||||
get a 3-node cluster. Hop over to [Google Cloud](https://cloud.google.com/container-engine/) to set that up.
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "Release notes"
|
||||
draft: false
|
||||
weight: 22
|
||||
---
|
||||
|
||||
- The fission team is on http://slack.fission.io if you have any questions.
|
||||
|
||||
### 0.4.0
|
||||
|
||||
- This release is compatible with Kubernetes 1.7 onwards.
|
||||
- We switched from ThirdPartyResources to CustomResourceDefinitions. ThirdPartyResources are removed in Kubernetes 1.8, so upgrade with caution, using the upgrade guide below.
|
||||
- Upgrade guides:
|
||||
- [Upgrade guide from 0.3.0](../upgrade/upgrade-from-v0.3)
|
||||
- To upgrade from 0.2.1, please upgrade to 0.3.0 first, following the upgrade guide in the 0.3.0 release.
|
||||
|
||||
### 0.3.0
|
||||
|
||||
Note: This release is incompatible with Kubernetes 1.8 (Because it uses ThirdPartyResources; see #314)
|
||||
|
||||
This release introduces:
|
||||
|
||||
- Build pipeline. Currently, only the Python environment supports this.
|
||||
- Workflow engine support (compatible with fission-workflows 0.1.1)
|
||||
|
||||
### v0.2.1
|
||||
|
||||
Lots of big changes in this release!
|
||||
|
||||
- Most importantly, the API has changed a lot. We switched to Kubernetes
|
||||
ThirdPartyResources, and improved various pieces of the API to support
|
||||
new environments.
|
||||
|
||||
- The old API was too different from widely used Kubernetes patterns,
|
||||
and so we decided to fully break compatibility for this release. We're still in
|
||||
alpha, so you should expect the occasional API breakage; we'll be
|
||||
better at preserving compatibility once we reach beta.
|
||||
|
||||
- The CLI is still compatible. Environments are also still compatible --
|
||||
environment images that worked before continue to work.
|
||||
|
||||
- We're creating an upgrade tool to help migrate; if you're upgrading
|
||||
v0.1.0 and can't do a fresh install, wait for the upgrade tool.
|
||||
|
||||
- We now use Helm for installation instead of a set of YAML files.
|
||||
|
||||
- The Fission "controller" is now stateless. Fission's etcd deployment
|
||||
is removed, since Fission stores state in ThirdPartyResources. Large
|
||||
function files are stored in a new function storage service, which
|
||||
uses a persistent volume.
|
||||
|
||||
- And, we've started a new docs site; for now it's just the installation
|
||||
and upgrade guides, but we'll be writing more docs soon.
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: "Upgrade"
|
||||
weight: 30
|
||||
---
|
||||
|
||||
### From v0.4.x to v0.5.0
|
||||
* [Upgrade guide](upgrade-from-v0.4)
|
||||
|
||||
### From v0.3 to v0.4.x
|
||||
* [Upgrade guide](upgrade-from-v0.3)
|
||||
|
||||
### From v0.1 to v0.2.x
|
||||
* [Upgrade guide](upgrade-from-v0.1)
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
title: "Upgrading from v0.1 to v0.2.x"
|
||||
draft: false
|
||||
weight: 31
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
|
||||
The Fission API has changed significantly in this version. The new API is incompatible with the
|
||||
old one. The CLI is compatible; if you wrote scripts using it, those should still work.
|
||||
|
||||
Below we describe a tool for migrating your state from your old install to the new one.
|
||||
|
||||
While this upgrade is going to be disruptive, we're going to do our best to make sure future
|
||||
upgrades aren't as bad.
|
||||
|
||||
## Why is this so complicated?
|
||||
|
||||
For a couple of reasons, we wanted to switch to using Kubernetes resources (ThirdPartyResources
|
||||
now, CustomResources in the next release) for storing Fission state: (a) it would allow users to
|
||||
avoid management of another database and (b) Fission would fit better into the Kubernetes
|
||||
ecosystem.
|
||||
|
||||
Concurrently with this change, we were also trying to make our versioning approach less
|
||||
opinionated, so it would work with other tools.
|
||||
|
||||
Thirdly, we were also enabling build pipelines (v2 Environments).
|
||||
|
||||
These changes, especially the difference in versioning approach, made maintaining compatiblity not
|
||||
worth the effort at this early stage of the project.
|
||||
|
||||
All that said, we want you to know that we care a lot about compatiblity, and we'll be more
|
||||
rigorous about it from the beta release onwards.
|
||||
|
||||
## How to Upgrade
|
||||
|
||||
1. Get the v0.2.1 CLI
|
||||
1. Get the Fission state from your old install
|
||||
1. Install Fission v0.2.1
|
||||
1. Restore Fission state into your new install
|
||||
1. Destroy your old install
|
||||
|
||||
### Get the new CLI
|
||||
|
||||
#### OS X
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/v0.2.1-rc/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/v0.2.1-rc/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
For Windows, you can use the linux binary on WSL. Or you can download
|
||||
this windows executable: [fission.exe](https://github.com/fission/fission/releases/download/v0.2.1-rc/fission-cli-windows.exe)
|
||||
|
||||
### Get Fission state from v0.1 install
|
||||
|
||||
```
|
||||
fission --server <your V1 server> upgrade dump --file state.json
|
||||
```
|
||||
|
||||
You can skip the --server argument if you have the environment
|
||||
variable `$FISSION_URL` set to point at a v0.1 Fission server.
|
||||
|
||||
This will create a JSON file with all your fission state in the
|
||||
current directory.
|
||||
|
||||
### Install the new version
|
||||
|
||||
Read the [install guide](../install). You can follow all of it, except that you will need to
|
||||
ensure your two installs don't conflict. To do that, use separate namespaces and ensure nodeports
|
||||
don't conflict. Install with a command similar to this:
|
||||
|
||||
```
|
||||
helm install fission-all --namespace fission2 --set controllerPort=31303,routerPort=31304,natsStreamingPort=31305,functionNamespace=fission2-function
|
||||
```
|
||||
|
||||
This installs fission in the `fission2` namespace and runs functions
|
||||
in the `fission2-function` namespace.
|
||||
|
||||
### Restore your Fission state into Fission v0.2.1
|
||||
|
||||
```
|
||||
fission upgrade restore --file state.json
|
||||
```
|
||||
|
||||
This commands needs $FISSION_URL set to point to new fission installation.
|
||||
|
||||
It uses the file created in the first step. It doesn't modify state.json.
|
||||
|
||||
(Note that you can run this restore on any cluster; it doesn't have the be the same kubernetes
|
||||
cluster as your old install.)
|
||||
|
||||
### Verify
|
||||
|
||||
How exactly you do this is up to you! But, at a minimum, run `fission
|
||||
fn list` to check that all the functions you expect are there.
|
||||
|
||||
### Switch over
|
||||
|
||||
If you had exposed fission's router to the outside world, switch over to using the new install's router.
|
||||
|
||||
### Destroy your old install
|
||||
|
||||
Once you're no longer using the old install, you can destroy it by
|
||||
deleting the namespaces that was installed in.
|
||||
|
||||
```
|
||||
kubectl delete namespace fission fission-function
|
||||
```
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
---
|
||||
title: "Upgrading from v0.3 to v0.4.x"
|
||||
draft: false
|
||||
weight: 32
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
Kubernetes ThirdPartyResources ("TPR") are replaced by
|
||||
CustomResourceDefinitions ("CRD"). TPRs have been deprecated and are
|
||||
removed in Kubernetes 1.8.
|
||||
|
||||
Since Fission stores state in TPRs, we need to migrate this state from
|
||||
TPRs to CRDs while upgrading.
|
||||
|
||||
Follow the instructions below if you're upgrading a Fission 0.2.1 or
|
||||
0.3.0 cluster to 0.4. If you're using a pre-0.2 Fission cluster, use
|
||||
the [upgrade guide from 0.1 to 0.2]() and then upgrade to 0.4.0.
|
||||
|
||||
## How to Upgrade
|
||||
|
||||
1. Get the 0.4.0 CLI
|
||||
2. Get the Fission state from v0.3 install
|
||||
3. Upgrade to Fission 0.4.0
|
||||
4. Upgrade Kubernetes cluster version to 1.7.x or higher
|
||||
5. Remove all TPR definition (for Kubernetes 1.7.x)
|
||||
6. Restore Fission state into CRDs
|
||||
|
||||
### Get the new CLI
|
||||
|
||||
#### OS X
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.4.0/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
```
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.4.0/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
For Windows, you can use the linux binary on WSL. Or you can download
|
||||
this windows executable: [fission.exe](https://github.com/fission/fission/releases/download/0.4.0/fission-cli-windows.exe)
|
||||
|
||||
### Get Fission state from v0.3 install
|
||||
|
||||
```
|
||||
fission --server <your v0.3 server> tpr2crd dump --file state.json
|
||||
```
|
||||
|
||||
You can skip the --server argument if you have the environment
|
||||
variable `$FISSION_URL` set to point at a v0.3 Fission server.
|
||||
|
||||
This will create a JSON file with all your fission state in the
|
||||
current directory.
|
||||
|
||||
### Upgrade to Fission 0.4.0
|
||||
|
||||
Upgrade fission with a command similar to this:
|
||||
|
||||
```
|
||||
helm upgrade fission-all --namespace fission
|
||||
```
|
||||
|
||||
### Upgrade Kubernetes cluster version
|
||||
|
||||
Since CustomResource is only supported on Kubernetes v1.7+ and higher, please make sure
|
||||
that you upgrade to the right version that supports CustomResource.
|
||||
|
||||
### Remove all TPR definition (for Kubernetes 1.7.x)
|
||||
|
||||
** NOTICE **: This step will remove TPR definition from your kubernetes cluster. Please make sure that you dump all TPRs at the second step!
|
||||
|
||||
Though Kubernetes will migrate TPRs to CRDs automatically when TPR definition is deleted if the same name CRD exists. We still need to make sure that there is no resource gets lost during the migration. Also, since we changed the capitalization of some CRDs to CamelCase (e.g. Httptrigger -> HTTPTrigger), we need to recreate those resources by ourselves.
|
||||
|
||||
```
|
||||
fission tpr2crd delete
|
||||
```
|
||||
|
||||
### Restore your Fission state into Fission 0.4.0
|
||||
|
||||
```
|
||||
fission tpr2crd restore --file state.json
|
||||
```
|
||||
|
||||
This commands needs `$FISSION_URL` set to point to new fission installation.
|
||||
|
||||
It uses the file created in the first step. It doesn't modify state.json.
|
||||
|
||||
(Note that you can run this restore on any cluster; it doesn't have the be the same kubernetes
|
||||
cluster as your old install.)
|
||||
|
||||
### Verify
|
||||
|
||||
Let's check the migration result, first run following command to check CRD established state.
|
||||
|
||||
```
|
||||
kubectl get crd -o 'custom-columns=NAME:{.metadata.name},ESTABLISHED:{.status.conditions[?(@.type=="Established")].status}'
|
||||
```
|
||||
|
||||
The output should be like this
|
||||
|
||||
```
|
||||
NAME ESTABLISHED
|
||||
environments.fission.io True
|
||||
functions.fission.io True
|
||||
httptriggers.fission.io True
|
||||
kuberneteswatchtriggers.fission.io True
|
||||
messagequeuetriggers.fission.io True
|
||||
packages.fission.io True
|
||||
timetriggers.fission.io True
|
||||
```
|
||||
|
||||
And check that CRD resources you expect are there.
|
||||
|
||||
```
|
||||
COMMAND:
|
||||
fission [resource] list
|
||||
|
||||
RESOURCES:
|
||||
environments
|
||||
functions
|
||||
httptriggers
|
||||
kuberneteswatchtriggers
|
||||
messagequeuetriggers
|
||||
packages
|
||||
timetriggers
|
||||
```
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "Upgrading from v0.4.x to v0.5.0"
|
||||
draft: false
|
||||
weight: 33
|
||||
---
|
||||
|
||||
## How to Upgrade
|
||||
|
||||
1. Get the 0.5.0 CLI
|
||||
2. Upgrade to Fission 0.5.0
|
||||
|
||||
### Get the new CLI
|
||||
|
||||
#### OS X
|
||||
|
||||
``` bash
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
``` bash
|
||||
$ curl -Lo fission https://github.com/fission/fission/releases/download/0.5.0/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
For Windows, you can use the linux binary on WSL. Or you can download
|
||||
this windows executable: [fission.exe](https://github.com/fission/fission/releases/download/0.5.0/fission-cli-windows.exe)
|
||||
|
||||
### Upgrade to Fission 0.5.0
|
||||
|
||||
Upgrade fission with a command similar to this:
|
||||
|
||||
|
||||
|
||||
``` bash
|
||||
# find the release want to upgrade
|
||||
$ helm list
|
||||
|
||||
# upgrade to 0.5.0
|
||||
$ helm upgrade <release_name> https://github.com/fission/fission/releases/download/0.5.0/fission-all-0.5.0.tgz
|
||||
```
|
||||
Reference in New Issue
Block a user