Forge

Define and deploy multi-container apps in Kubernetes, from source

Star Fork
Get Started
0.3.22
Forge 0.3.22 is now available
Read the CHANGELOG

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.

Are you a Kubernetes application developer who wants to deploy your application from source into Kubernetes? Are you looking to have the same deployment workflow for both your CI system and your dev environment?

With Forge, you can:

  1. 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
  2. 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
                                      
  3. 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
  4. Deploy the service into Kubernetes:

    
    $ forge deploy
                                    
  5. Install Ambassador, the Envoy-based Kubernetes API Gateway, and automatically deploy a canary version of your service.

    
    $ forge --profile canary deploy
                                    

Stay Updated