mirror of https://github.com/helm/helm
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.7 KiB
130 lines
4.7 KiB
# Deployment Manager
|
|
|
|
Deployment Manager lets you define and deploy simple declarative configuration
|
|
for your Kubernetes resources (e.g., pods, replication controllers, services, etc.).
|
|
|
|
You can also use Python or [Jinja](http://jinja.pocoo.org/) to create powerful
|
|
parameterizable abstract types called **Templates**. You can create general
|
|
abstract building blocks to reuse, like a
|
|
[Replicated Service](examples/guestbook/replicatedservice.py), or create
|
|
more concrete types like a [Redis cluster](examples/guestbook/redis.jinja).
|
|
|
|
You can find more examples of Templates and configurations in our
|
|
[examples](examples).
|
|
|
|
Deployment Manager uses the same concepts and languages as
|
|
[Google Cloud Deployment Manager](https://cloud.google.com/deployment-manager/overview),
|
|
but creates resources within your Kubernetes cluster, not on the Google Cloud Platform.
|
|
|
|
Please join us on [the Google Group](https://groups.google.com/forum/#!forum/kubernetes-sig-config) and/or in [the Slack chat room](https://kubernetes.slack.com/messages/sig-configuration/) for the
|
|
Kubernetes configuration SIG.
|
|
|
|
## Getting started
|
|
|
|
There are two ways to get started...
|
|
|
|
* The quick way simply installs Deployment Manager in your cluster using
|
|
kubectl. This is the fastest way to get started and takes only a few seconds.
|
|
|
|
* The interesting way bootstraps Deployment Manager, by building and running a
|
|
local instance on your machine, and then using it to install another instance
|
|
in your cluster. You might want to go this way if you're interested in contributing
|
|
to Deployment Manager.
|
|
|
|
Both assume that you have a Kubernetes cluster up and running, and that you can
|
|
run `kubectl` commands against it. They both also assume that that you're working
|
|
with a clone of the repository installed in the src folder of your GOPATH, per
|
|
convention.
|
|
|
|
Instructions for the quick install follow here. Instructions for bootstrapping
|
|
Deployment Manager can be found in [examples/bootstrap/README.md](examples/bootstrap/README.md).
|
|
|
|
### Quick Install
|
|
|
|
For the quick install, you're going to use `kubectl` to create the replication
|
|
controllers and services that comprise a Deployment Manager instance from a predefined
|
|
configuration file, as follows:
|
|
|
|
```
|
|
kubectl create -f install.yaml
|
|
```
|
|
|
|
That's it. You should now be able to see Deployment Manager running in your cluster
|
|
using:
|
|
|
|
```
|
|
kubectl get pod,rc,service
|
|
```
|
|
|
|
If you see replication controllers named expandybird-rc, manager-rc and resourcifier-rc
|
|
with pods that are READY, and services with corresponding names, then Deployment
|
|
Manager is up and running.
|
|
|
|
Note that you can also tear down Deployment Manager using the same file, with:
|
|
|
|
```
|
|
kubectl delete -f install.yaml
|
|
```
|
|
|
|
The easiest way to interact with Deployment Manager, now that it's up and running,
|
|
is to use a `kubectl` proxy:
|
|
|
|
```
|
|
kubectl proxy --port=8001 &
|
|
```
|
|
|
|
This command will start a proxy that lets you interact with the Kubernetes api
|
|
server through port 8001 on you local host. However, there are other ways to access
|
|
Deployment Manager. We won't go into them here, but if you know how to access
|
|
services running on Kubernetes, you should be able to use any of the supported
|
|
methods to access Deployment Manager.
|
|
|
|
### Deploying your first application (Guestbook)
|
|
|
|
Next, you're going to deploy the canonical guestbook example to your Kubernetes
|
|
cluster.
|
|
|
|
```
|
|
client --name guestbook --service=http://localhost:8001/api/v1/proxy/namespaces/default/services/manager-service:manager examples/guestbook/guestbook.yaml
|
|
```
|
|
|
|
You should now have guestbook up and running. To verify, get the list of services
|
|
running on the cluster:
|
|
|
|
```
|
|
kubectl get service
|
|
```
|
|
|
|
You should see frontend-service running. If your cluster supports external
|
|
load balancing, it will have an external IP assigned to it, and you should be
|
|
able to navigate to it in your browser to see the guestbook in action.
|
|
|
|
## Building the container images
|
|
|
|
This project runs Deployment Manager on Kubernetes as three replicated services.
|
|
By default, prebuilt images stored in Google Container Registry are used to create
|
|
them. However, you can build your own container images and push them to your own
|
|
project in the registry.
|
|
|
|
To build and push your own images to Google Container Registry, first set the
|
|
environment variable PROJECT to the name of a project known to gcloud. Then, run
|
|
the following command:
|
|
|
|
```
|
|
make push
|
|
```
|
|
|
|
## Design of Deployment Manager
|
|
|
|
There is a more detailed [design document](docs/design/design.md)
|
|
available.
|
|
|
|
## Status of the project
|
|
|
|
The project is still under active development, so you might run into issues. If
|
|
you do, please don't be shy about letting us know, or better yet, contributing a
|
|
fix or feature. We use the same contribution conventions as the main Kubernetes
|
|
repository.
|
|
|
|
|