Define and deploy multi-container apps in Kubernetes, from source
Forge uses your Kubernetes manifest and Dockerfile -- so it’s easy to use and learn.
Dynamically configure your Kubernetes manifests with Jinja2 templates
Define service dependencies, so you can deploy a multi-service application with one command
Native integration with Ambassador lets you easily do canary deployments
Forge is a single binary that runs anywhere: in your CI system, on your laptop, or anywhere else.
Create a service template in source control that defines how your application is built in a Dockerfile, and how it's deployed with a Kubernetes manifest. Here's a sample Python service template:
$ git clone https://github.com/datawire/hello-world-python.git
Add a service.yaml to your service that specifies the service name, any dependencies, and as many different deployment configurations as you want.
name: hello-world profiles: default: endpoint: /hello/ max_memory: 0.5G max_cpu: 0.5 canary: endpoint: /hello/ weight: 10.0 max_memory: 0.5G max_cpu: 0.5
Install and configure the Forge binary (if you want, you can even check this into source control, too).
$ curl https://s3.amazonaws.com/datawire-static-files/forge/$(curl https://s3.amazonaws.com/datawire-static-files/forge/latest.url)/forge -o /tmp/forge $ chmod a+x /tmp/forge $ sudo mv /tmp/forge /usr/local/bin $ forge setup
Deploy the service into Kubernetes:
$ forge deploy
Install Ambassador, the Envoy-based Kubernetes API Gateway, and automatically deploy a canary version of your service.
$ forge --profile canary deploy