Commit d628a79d authored by Nane Kratzke's avatar Nane Kratzke
Browse files

Initial setting

parent df9a23a8
# lab-rest
# Lab xy: Request-Response-basierte Interaktion mit REST
Web-APIs sind Schnittstellen, um Informationen und Anwendungsfunktionen Nutzern bzw. anderen Services über das Internet zugänglich zu machen. In diesem Lab:
- Erfahren Sie, was eine API ist und wann Sie eine verwenden sollten.
- Sie lernen, wie Sie eine REST-basierte Web-API erstellen.
- Sie lernen einige Prinzipien eines guten API-Designs kennen und wenden diese auf eine Beispiel-API an, die Buchmetadaten aus einer Datenbank bezieht.
## Inhalt
- [Lab xy: Request-Response-basierte Interaktion mit REST](#lab-xy-request-response-basierte-interaktion-mit-rest)
- [Inhalt](#inhalt)
- [Vorbereitung](#vorbereitung)
- [Übung 01: Bauen Sie einen einfachen REST-Service](#übung-01-bauen-sie-einen-einfachen-rest-service)
- [Übung 02: Ergänzen Sie die Datenbank des Tutorials](#übung-02-ergänzen-sie-die-datenbank-des-tutorials)
## Vorbereitung
1. [Forken](https://git.mylab.th-luebeck.de/cloud-native/lab-rest/-/forks/new) Sie bitte dieses GitLab-Repository in Ihren GitLab-Namensraum.
2. Installieren Sie anschließend bitte lokal auf Ihrem Rechner die Kubernetes-IDE [Lens](https://k8slens.dev/).
3. Laden Sie sich Ihre `kubeconfig` Datei im [Moodle-Kurs](https://to-be-donex) herunter.
4. Starten Sie Lens und fügen Sie der IDE die kubeconfig Datei hinzu, um auf Ihren Cluster zugreifen zu können. Sie sollten dann Ihren Namespace in dem für Sie bereitgestellten K8S-Cluster sehen.
5. Erstellen Sie anschließend in Gitlab unter `Einstellungen -> Repository -> Bereitstellungstoken` für das in Schritt 1 geforkte Repository einen Bereitstellungstoken, um selbstgebaute Container Images deployen zu können.
- **Name:** `Registry read access (deployment)`
- **Username:** `image-registry` (bitte exakt so!)
- **Scope:** `read-registry` (nicht mit read repository verwechseln!)
- Klicken Sie anschließend auf Bereitstellungstoken erstellen und kopieren Sie sich dieses geheime Token in die Zwischenablage!
6. Hinterlegen Sie nun für Gitlab Build-Pipelines dieses geheime Token unter `Einstellungen -> CI/CD -> Variables (Aufklappen) -> ADD VARIABLE` als CI/CD-Variable.
- **Key:** `CI_REGISTRY_TOKEN` (exakt so)
- **Value:** Fügen Sie hier das geheime Token (Schritt 2) aus der Zwischenablage ein.
- **Type:** `Variable` (nichts anderes)
- **Flags:** Selektieren Sie `Mask Variable` damit das geheime Token in Log-Dateien maskiert wird.
7. Hinterlegen Sie in Ihrem geforkten GitLab-Repository nun die `kubeconfig`-Datei als CI-Environment-Variable mittels `Einstellungen -> CI/CI -> Variables (Aufklappen) -> ADD VARIABLE` (setzen Sie hierfür folgende Werte)
- **Key:** `KUBECONFIG` (Exakt so eingeben)
- **Value:** Inhalt der kubeconfig (z.B. mittels Copy-Paste aus Editor)
- **Typ:** `File` (Auswählen, WICHTIG!!!)
## Übung 01: Bauen Sie einen einfachen REST-Service
Arbeiten Sie bitte dieses [Tutorial](https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask) bis zum Punkt *API Design Principles* durch. Dieses Lab ist dafür vorbereitet.
- Implementieren Sie den Webservice in der Datei `api/api.py`.
- Ein Container kann mit `api/Dockerfile` gebaut werden.
- Die `.gitlab-ci.yml` ist so konfiguriert, das automatisch deployed werden kann.
Bevor Sie starten, prüfen Sie bitte lokal auf Ihrem Rechner, ob die Grundkonfiguration funktioniert.
```Bash
pip3 install -r api/Requirements.txt
python3 api/api.py
```
Öffnen Sie dann [http://localhost:5000](http://localhost:5000) in einem Web-Browser. Sie sollten eine *"Distant Reading Archive"* Website sehen!
## Übung 02: Ergänzen Sie die Datenbank des Tutorials
flask
\ No newline at end of file
import flask
import sqlite3
app = flask.Flask(__name__)
@app.route('/', methods=['GET'])
def home():
return "<h1>Distant Reading Archive</h1><p>This site is a prototype API for distant reading of science fiction novels.</p>"
app.run()
\ No newline at end of file
File added
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment