Skip to content

Commit

Permalink
Update Readme für Esch
Browse files Browse the repository at this point in the history
  • Loading branch information
hey-nicolasklein authored Feb 2, 2021
1 parent c433074 commit 657b240
Showing 1 changed file with 38 additions and 1 deletion.
39 changes: 38 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
# Voting-App
Diese Applikation soll das Architektur-Muster Cloud-Native anhand einer Voting-Applikation verdeutlichen.
Hierbei existieren zwei Frontends. Eines dient einzig zum Abgeben einer Stimme. Das zweite gibt Einblicke in die Wahl-Ergebnisse.
Beide Frotends kommunizieren dabei mit einem Serving-Layer Micro-Service. Dieser dient als Schnittstelle. Über diesen können Wahl-Ergebnisse erfragt, oder Stimmen abgegeben werden. Je nach dem welche Informationen benötigt werden, kommuniziert der Serving-Layer mit dem Calculate-Service oder Raw-Data-Service. Erster berechnet auf Basis der Wahlergebnisse Zusatzinformationen ("Welcher Kandidat hat die meisten Stimmen?", "Aus welchem Land kamen die meisten Stimmen?"). Letzterer dient als Schnittstelle zur Datenbank und übernimmt das Speichern und Abrufen der Daten.

## Architektur
Folgende Grafik erläutert den Zusammenhang zwischen den einzelnen Micro-Services.

## Getting-Started
Im Folgenden wird erläutert, wie die gesamte Voting-Applikation gestartet werden kann.

### Prerequisites
* Eine funktionsfähige Minikube Installation

```
brew install minikube
```

### Installation
1. Zunächst sollte dieses Repo gepulled und in dieses hinein navigiert werden.
1. `minikube start --vm-driver=hyperkit`<br/>
Starte Minikube mit dem Driver hyperkit. Da wir später Ingress nutzen werden, nutzen wir nicht Docker selbst als Driver.
1. `minikube addons enable ingress`<br/>
Aktiviert das Addon Ingress für unser lokales Kubernetes Cluster. Minikube nutzt dabei automatisch die eigene Ingress Implementierung.
1. `kubectl get nodes` <br/>
Hiermit müsste nun ein Node namens *Minikube* mit dem Status *Ready* augelistet werden.
1. `minikube status` <br/>
Zusätzlich kann hiermit der Status des lokalen Clusters geprüft werden.
1. `bash startup.sh` <br/>
Führt das Skript startup.sh aus. Dieses wendet `kubectl apply -f [deployment].yaml` auf alle benötigten Deployments an. Hierbei wird auch ein Ingress Controller für den *Serving-Layer* angelegt.
1. `kubectl get ingress` <br/>
Nun muss die konkrete IP-Adresse des Ingress Controllers ermittelt werden. Anschließend gilt es diese in der lokalen `Hosts` Datei zu ergänzen. Dies gelingt wie folgt.
1. `sudo vi /etc/hosts`<br/>
Hier muss nun ein Eintrag für die Adresse *voting-app.com* ergänzt werden, welcher auf die Adresse des Ingress Controllers verweist. Dies ist nötig, damit die Frontends den Serving-Layer erreichen können. Zwar sind sowohl das Voter-, als auch das Analysis-Frontend im Cluster selbst gehostet, allerdings der ausführende Browser nicht. Damit dieser ebenfalls den Serving-Layer erreichen kann nutzt er den, nach außen erreichbaren, Ingress-Controller, um über eine gleich-bleibende IP-Adresse auf den Serving-Layer zuzugreifen. Da die konkrete IP des Ingress-Controllers individuell für die Minikube-Installation ist, muss dies manuell im lokalen Hosts-File konfiguriert werden.
1. `minikube service service-frontend-voing`und `minikube service service-frontend-analysis` <br/> öffnen nun das jeweilige Frontend im Browser. Der Serving-Layer kann über die Adresse *voing-app.com* erreicht werden. Hierbei existieren die Endpunkte `/results` und `/votesByCountry`. Ein neuer Vote kann mittels POST auf den Endpunkt `/vote` mitgeteilt werden.


# Kubernetes Cheat Sheet (WIP)

## Debug
Expand Down Expand Up @@ -30,7 +67,7 @@ Add the listed ip for the given Ingress-Endpoint to your host file:
`YOUR_IP voting-app.com`

### Add host name

Für Frontend Browser
`sudo vim etc/hosts`

## Kubernetes
Expand Down

0 comments on commit 657b240

Please sign in to comment.