2016-11-18 01:18:34 +03:00
|
|
|
# Prow: Streamlined Kubernetes Development
|
|
|
|
|
2017-02-08 21:46:10 +03:00
|
|
|
_NOTE: Prow is experimental and does not have a stable release yet._
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
Prow is a tool for developers to create and deploy cloud-native applications on [Kubernetes][]. It
|
|
|
|
can be used to
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
- Install any application onto Kubernetes; Prow is language-agnostic and customizable.
|
|
|
|
- Work with any Kubernetes cluster that supports [Helm][]
|
|
|
|
- Intelligently manage and upgrade Helm releases
|
|
|
|
- Create Helm Charts that can be packaged for delivery to your ops team
|
2017-01-19 21:13:24 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
## Prow, the Elevator Pitch
|
2017-01-19 21:13:24 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
Prow is a tool to install applications onto a Kubernetes cluster.
|
2017-01-19 21:13:24 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
Prow has two parts: a client (prow) and a server (prowd). Prowd runs inside of your Kubernetes
|
|
|
|
cluster alongside [Tiller][helm] and packages a Docker image, uploads it to a Docker Registry and
|
|
|
|
installs a chart using that image. Prow runs on your laptop, CI/CD, or wherever you want it to run
|
|
|
|
and uploads your application to Prowd via `prow up`.
|
2017-01-19 21:13:24 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
## Usage
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
Because Prow is currently experimental, there is no stable release out yet and users are expected
|
|
|
|
to build the project from source until we get some automation up in here. Please see
|
|
|
|
[this doc][hacking] to get started hacking on Prow.
|
|
|
|
|
|
|
|
Now that's all done, start from a source code repository and let Prow create the Kubernetes
|
|
|
|
packaging:
|
2016-11-18 01:18:34 +03:00
|
|
|
|
|
|
|
```
|
|
|
|
$ cd my-app
|
|
|
|
$ ls
|
|
|
|
app.py
|
2017-01-27 22:01:11 +03:00
|
|
|
$ prow create --pack=python
|
2017-02-10 01:27:59 +03:00
|
|
|
--> Created chart/
|
|
|
|
--> Created Dockerfile
|
2016-11-18 01:18:34 +03:00
|
|
|
--> Ready to sail
|
|
|
|
```
|
|
|
|
|
|
|
|
Now start it up!
|
|
|
|
|
|
|
|
```
|
|
|
|
$ prow up
|
|
|
|
--> Building Dockerfile
|
2017-02-10 01:27:59 +03:00
|
|
|
--> Pushing 127.0.0.1:5000/my-app:08db751fccc4fc01c8b2ee96111525ea43f064f2
|
2016-11-18 01:18:34 +03:00
|
|
|
--> Deploying to Kubernetes
|
2017-02-10 01:27:59 +03:00
|
|
|
Release "my-app" does not exist. Installing it now.
|
2017-01-27 22:01:11 +03:00
|
|
|
--> code:DEPLOYED
|
2016-11-18 01:18:34 +03:00
|
|
|
```
|
|
|
|
|
2017-02-08 21:46:10 +03:00
|
|
|
That's it! You're now running your Python app in a [Kubernetes][] cluster.
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-08 21:46:10 +03:00
|
|
|
Behind the scenes, Prow handles the heavy lifting:
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-08 21:46:10 +03:00
|
|
|
- Builds a container image from application source code
|
|
|
|
- Pushes the image to a registry
|
2017-02-10 01:27:59 +03:00
|
|
|
- Packages a [Helm][] chart from application source code
|
2017-02-08 21:46:10 +03:00
|
|
|
- Installs the chart to Kubernetes, deploying the application
|
2016-11-18 01:18:34 +03:00
|
|
|
|
2017-02-08 21:46:10 +03:00
|
|
|
After deploying, you can run `prow up` again to create new releases when
|
2017-02-10 01:27:59 +03:00
|
|
|
application source code has changed.
|
2016-11-18 01:18:34 +03:00
|
|
|
|
|
|
|
|
2017-02-10 01:27:59 +03:00
|
|
|
[hacking]: docs/hacking.md
|
2017-02-08 21:46:10 +03:00
|
|
|
[Kubernetes]: https://kubernetes.io/
|
|
|
|
[Helm]: https://github.com/kubernetes/helm
|