Coder Social home page Coder Social logo

datawire / blackbird Goto Github PK

View Code? Open in Web Editor NEW
43.0 8.0 4.0 561 KB

Reference architecture for a Kubernetes continuous deployment workflow

License: Apache License 2.0

Python 1.04% HTML 3.31% CSS 18.18% JavaScript 51.80% Shell 22.62% Java 3.06%
kubernetes telepresence ambassador forge

blackbird's Introduction

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 [email protected].

blackbird's People

Contributors

dansipple avatar endrec avatar plombardi89 avatar rhs avatar richarddli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blackbird's Issues

implement Joyride

4 places:

  • "Demo microservices". Text: These are sample microservices written in Python and Java that can be easily modified to try different aspects of the reference architecture.
  • "Get started". Text: These walkthroughs illustrate key features of the reference architecture.
  • "Diagnostics". Text: The reference architecture integrates the Ambassador API Gateway, which includes real-time diagnostics of its configuration.
  • "Help". Text: Need help? Chat with us online, read more documentation, or speak with an expert.

GKE question

On my Mac, I see this:

Warning: datawire/blackbird/telepresence 0.75 is already installed
info: Configuring Blackbird to use the latest Ambassador API Gateway
1) yes
2) no
Are you using a Google Kubernetes Engine (GKE) cluster? yes

I didn't actually see the options. Could we do something like:

info: Configuring Blackbird to use the latest Ambassador API Gateway
Are you using a Google Kubernetes Engine (GKE) cluster [y/n]?

That seems to be more common.

create installation script

We want to enable the following to set up Blackbird:

curl http://github.com/datawire/install.sh | sh

This script should:

  • Check local dependencies (kubectl, Docker, connect to the right version of a Kube cluster)
  • git checkout https://github.com/datawire/blackbird/
  • Install Telepresence & Forge
  • If on GKE, do kubectl create clusterrolebinding my-cluster-admin-binding --clusterrole=cluster-admin [email protected]
  • Update the Ambassador version (or maybe install Ambassador? Currently Forge is used for this.)
  • cd blackbird
  • Tells you to run forge setup and forge deploy

create floating widget

The widget should float around and be moveable, like the Intercom widget.

Functionally, it should:

  1. Get the JSON object from $SERVER/ambassador/?json=true
  2. Search for all prefixes that begin with dev-
  3. Display a list to the user of all the top-level links that begin with dev-.

For example, in the attached JSON, there are prefixes that include:

/dev-xyz/
/dev-xyz/python-api
/dev-xyz/java-spring-api

We would only want:

/dev-xyz/

to be displayed.

Some errors after initialization

Hello there and thanks for this promising tool!

I'm facing some 403 on the websocket connection (probably from Envoy...) and also the diagnostics page is responding upstream request timeout.

Don't know if it's a problem from my Kubernetes cluster or something else...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.