This is the Faces demo application. It has a single-page web GUI that presents a grid of cells, each of which should show a grinning face on a light blue background. Spoiler alert: installed exactly as committed to this repo, that isn't what you'll get -- many, many things can go wrong, and will. The point of the demo is let you try to fix things.
In here you will find:
-
create-cluster.sh
, a shell script to create ak3d
cluster and prep it by runningsetup-cluster.sh
. -
setup-cluster.sh
, a shell script to set up an empty cluster with Linkerd, Emissary-ingress, and the Faces app.-
These things are installed in a demo configuration: read and think carefully before using this demo as background for a production installation! In particular:
-
We deploy Emissary with only one replica of everything, using a currently-unofficial chart to also skip support for
v1
andv2
Emissary CRDs. -
We only configure HTTP, not HTTPS.
These are likely both bad ideas for a production installation.
-
-
-
DEMO.md
, a Markdown file for the resilience demo presented live for a couple of events. The easiest way to useDEMO.md
is to run it with demosh.
-
Make sure
$KUBECONFIG
is set correctly. -
If you need to, run
bash create-cluster.sh
to create a newk3d
cluster to use.- Note:
create-cluster.sh
will delete any existingk3d
cluster named "faces".
- Note:
-
If you already have an empty cluster to use, you can run
bash setup-cluster.sh
to initialize it. -
Play around!! Assuming that you're using k3d, the Faces app is reachable at http://localhost/faces/ and the Linkerd Viz dashboard is available at http://localhost/
-
If you're not using k3d, instead of
localhost
use the IP or DNS name of theemissary-ingress
service in theemissary
namespace. -
Remember, HTTPS is not configured.
-
-
To run the demo as we've given it before, check out DEMO.md. The easiest way to use that is to run it with demosh.
The Faces architecture is fairly simple:
-
The
faces-gui
workload, reached on the/faces/
path, just returns the HTML and Javascript for the GUI. The GUI is a single-page webapp that displays a grid of cells: for each cell, the GUI calls theface
workload. -
The
face
workload, reached on the/face/
path, calls thesmiley
workload to get a smiley face and thecolor
workload to get a color. It then composes the responses together and returns the smiley/color combination to the GUI for display. -
The
smiley
workload returns a smiley face. By default, this is a grinning smiley, U+1F603, but you can set theSMILEY
environment variable to any key in theSmileys
map fromconstants.go
to get a different smiley. -
The
color
workload returns a color. By default, this is a light blue, but you can set theCOLOR
environment variable to any key in theColors
map fromconstants.go
to get a different color, or to any arbitrary hex color code (e.g.#ff0000
for bright red).The named colors in the
Colors
map are meant to work for normal color vision and for various kinds of colorblindness, and are taken from the "Bright" color scheme shown in the "Qualitative // Color Schemes" section of https://personal.sron.nl/~pault/. For (much) more information, read the comments inpkg/faces/constants.go
. Feedback here is welcome, since the Faces authors have normal color vision...