Deis (pronounced DAY-iss) is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds on Kubernetes to provide a lightweight, Heroku-inspired workflow.
Deis Builder v2 is changing quickly. Your feedback and participation are more than welcome, but be aware that this project is considered a work in progress.
This package provides a the Deis Builder, a git server to respond to git pushes from clients. When it receives a push, it takes the following high level steps:
- Accepts the code and writes to the local file system
- Calls
git archiveto produce a tarball (i.e. a.tar.gzfile) on the local file system - Saves the tarball according to the following rules:
- If the
DEIS_MINIO_SERVICE_HOSTandDEIS_MINIO_SERVICE_PORTenvironment variables exist, uses themcclient to save to the Minio server athttp://$DEIS_MINIO_SERVICE_HOST:$DEIS_MINIO_SERVICE_HOST - Otherwise, if the
DEIS_OUTSIDE_STORAGE_HOSTandDEIS_OUTSIDE_STORAGE_PORTenvironment variables exist, uses themcclient to save to S3 server (or server that adheres to the S3 API) athttps://$DEIS_OUTSIDE_STORAGE_HOST:$DEIS_OUTSIDE_STORAGE_PORT(this functionality is currently waiting for merge at deis#21).
- Starts a builder pod according to these rules:
- If a
Dockerfileis present, starts adockerbuilderpod, configured to download the code to build from the URL computed in the previous step (dockerbuilderand Dockerfile builder are not currently supported. See deis/dockerbuilder#1 for prototypedockerbuildercode). - Otherwise, starts a
slugbuilderpod, configured to download the code to build from the URL computed in the previous step.
First, install helm and boot up a kubernetes cluster. Next, add the
deis repository to your chart list:
$ helm repo add deis https://github.com/deis/chartsThen, install the Deis chart!
$ helm install deis/deisThe chart will install the entire Deis platform onto Kubernetes. You can monitor all the pods that it installs by running:
$ kubectl get pods --namespace=deisOnce this is done, SSH into a Kubernetes minion, and run the following:
$ curl -sSL http://deis.io/deis-cli/install.sh | sh
$ sudo mv deis /bin
$ kubectl get service deis-workflow
$ deis register 10.247.59.157 # or the appropriate CLUSTER_IP
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ eval $(ssh-agent) && ssh-add ~/.ssh/id_rsa
$ deis keys:add ~/.ssh/id_rsa.pub
$ deis create --no-remote
Creating Application... done, created madras-radiator
$ deis pull deis/example-go -a madras-radiator
Creating build... ..o
If you want to hack on a new feature, rebuild your code, build the deis/builder image and push it to a Docker registry. The $DEIS_REGISTRY environment variable must point to a registry accessible to your Kubernetes cluster. If you're using a locally hosted Docker registry, you may need to configure the Docker engines on your Kubernetes nodes to allow --insecure-registry 192.168.0.0/16 (or the appropriate address range).
$ make build docker-build docker-pushNext, you'll want to remove the deis-builder replication controller and re-create it to run your new image.
kubectl delete --namespace=deis rc deis-builder
make kube-rcThe following steps assume that you have the Docker CLI and Kubernetes CLI installed and correctly configured.
make deploy kube-service
Copyright 2013, 2014, 2015 Engine Yard, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
