-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
minor changes in code, added better description and Kubernetes example
- Loading branch information
1 parent
4ada9bf
commit ac4f9b9
Showing
2 changed files
with
125 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,117 @@ | ||
# yosoy | ||
Yo soy is a tool for stubbing distributed applications. | ||
|
||
yosoy is a HTTP service for stubbing distributed applications. It is a service which will introduce itself to the caller and print some useful information about its environment. "Yo soy" in español means "I am". | ||
|
||
yosoy is extremely useful when creating a distributed application stub and you need to see a more meaningful responses than a default nginx welcome page. | ||
|
||
yosoy will provide information like (see example below): | ||
|
||
* Request URI | ||
* Hostname | ||
* Remote IP | ||
* How many times it was called | ||
* HTTP headers | ||
* Env variables if `YOSOY_SHOW_ENVS` is set to `true`, `yes`, `on`, or `1` | ||
* Files contents if `YOSOY_SHOW_FILES` is set to a comma-separated list of (valid) files | ||
|
||
## Docker image | ||
|
||
The docker image is available on docker hub: | ||
|
||
``` | ||
lukasz/yosoy | ||
``` | ||
|
||
It exposes HTTP service on port 80. | ||
|
||
## Kubernetes example | ||
|
||
Let's take a look at a sample Kubernetes deployment file. It uses both `YOSOY_SHOW_ENVS` and `YOSOY_SHOW_FILES`. To illustrate `YOSOY_SHOW_FILES` functionality it uses Kubernetes Downward API to expose labels and annotations as volume files which are then read by yosoy. | ||
|
||
``` | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
name: camarero | ||
labels: | ||
app.kubernetes.io/name: camarero | ||
spec: | ||
replicas: 2 | ||
selector: | ||
matchLabels: | ||
app.kubernetes.io/name: camarero | ||
template: | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: camarero | ||
spec: | ||
containers: | ||
- name: yosoy | ||
image: lukasz/yosoy | ||
env: | ||
- name: YOSOY_SHOW_ENVS | ||
value: "true" | ||
- name: YOSOY_SHOW_FILES | ||
value: "/etc/podinfo/labels,/etc/podinfo/annotations" | ||
ports: | ||
- containerPort: 80 | ||
volumeMounts: | ||
- name: podinfo | ||
mountPath: /etc/podinfo | ||
volumes: | ||
- name: podinfo | ||
downwardAPI: | ||
items: | ||
- path: "labels" | ||
fieldRef: | ||
fieldPath: metadata.labels | ||
- path: "annotations" | ||
fieldRef: | ||
fieldPath: metadata.annotations | ||
``` | ||
|
||
Execute curl a couple of times and you should see: | ||
|
||
``` | ||
Request URI: / | ||
Hostname: camarero-7fd97dc5f5-545mt | ||
Remote IP: 172.18.0.1 | ||
Called: 4 | ||
HTTP headers: | ||
User-Agent: curl/7.58.0 | ||
Accept: */* | ||
Env variables: | ||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | ||
HOSTNAME=camarero-7fd97dc5f5-545mt | ||
YOSOY_SHOW_ENVS=true | ||
YOSOY_SHOW_FILES=/etc/podinfo/labels,/etc/podinfo/annotations | ||
KUBERNETES_PORT=tcp://10.96.0.1:443 | ||
KUBERNETES_PORT_443_TCP_PROTO=tcp | ||
CAMARERO_SERVICE_HOST=10.96.183.207 | ||
KUBERNETES_SERVICE_HOST=10.96.0.1 | ||
KUBERNETES_SERVICE_PORT=443 | ||
KUBERNETES_SERVICE_PORT_HTTPS=443 | ||
CAMARERO_SERVICE_PORT=80 | ||
CAMARERO_PORT_80_TCP_PROTO=tcp | ||
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443 | ||
CAMARERO_PORT_80_TCP=tcp://10.96.183.207:80 | ||
CAMARERO_PORT_80_TCP_PORT=80 | ||
KUBERNETES_PORT_443_TCP_PORT=443 | ||
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1 | ||
CAMARERO_PORT=tcp://10.96.183.207:80 | ||
CAMARERO_PORT_80_TCP_ADDR=10.96.183.207 | ||
HOME=/root | ||
File /etc/podinfo/labels: | ||
app.kubernetes.io/component="api" | ||
app.kubernetes.io/name="camarero" | ||
app.kubernetes.io/part-of="camarero" | ||
app.kubernetes.io/version="0.0.1" | ||
pod-template-hash="7fd97dc5f5" | ||
File /etc/podinfo/annotations: | ||
kubernetes.io/config.seen="2020-11-13T14:36:17.234235115Z" | ||
kubernetes.io/config.source="api" | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters