Reference architecture for a Kubernetes continuous deployment workflow
Switch branches/tags
Nothing to show
Clone or download
Latest commit c48988b Apr 13, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ambassador use templated ambassador version Feb 8, 2018
java-spring-api fix typos Jan 31, 2018
monitoring add ns Apr 13, 2018
nodejs-api add for tutorial Feb 2, 2018
python-api cleanup unused env var Feb 1, 2018
ui fix skip button bug Feb 8, 2018
.gitignore Fix merge conflicts Feb 1, 2018
LICENSE license Jan 19, 2018
README.md fix bug Feb 8, 2018
blackbird-install.sh Fixing missing sudo (issue #21) Mar 8, 2018
blackbird-uninstall.sh just delete the ns Feb 14, 2018
blackbird.sh fix bug Jan 25, 2018

README.md

Blackbird Reference Architecture

This is a reference architecture that illustrates how Telepresence, Forge, and Ambassador can be integrated to provide an end-to-end development workflow.

Note: this reference architecture is for illustrative purposes only. It is not tuned for production!

Prerequisites

  • MacOS or Linux system
  • Kubernetes 1.6 or later cluster. Unfortunately, Minikube does not have full RBAC support yet, and the reference architecture uses RBAC.
  • kubectl configured to talk to your cluster
  • A Docker registry account on Docker Hub, Google Container Registry, Amazon ECR, Quay, etc.

Quick start

Run the install script which will clone the Blackbird repository and install the Forge and Telepresence clients locally.

curl https://raw.githubusercontent.com/datawire/blackbird/master/blackbird-install.sh | bash

You'll then want to deploy the Blackbird repository into your cluster. You can do this with Forge.

cd blackbird
forge setup  # sets up your Docker credentials
forge deploy # deploys all the demo services

Note that the deployment may take awhile. The reference architecture installs demo Java, NodeJS, and Python services, so it will take a few minutes to download the necessary dependencies and build the services.

Once deployment is complete, you should have a number of pods running in the datawire namespace.

kubectl get pod -n datawire
NAME                                      READY     STATUS    RESTARTS   AGE
ambassador-77496977dd-fr8rp               2/2       Running   0          3h
java-spring-api-stable-69c97b99c9-xm9kc   1/1       Running   0          5h
nodejs-api-stable-646fbc999d-zh2qd        1/1       Running   0          5h
python-api-stable-5799cdc89d-wg85h        1/1       Running   0          5h
ui-stable-749846897c-hk466                1/1       Running   0          4h

Get the external IP address of the Ambassador service, and open that IP in your browser. You should see the Reference Architecture walk-through.

kubectl get svc ambassador -n datawire
NAME         CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
ambassador   10.43.245.71   35.129.8.157   80:31807/TCP    5h

Questions?

Join our Gitter chat or email hello@datawire.io.