Mint Cloud Specification
Die Mint Cloud Hosting-Platform basiert auf Odoo und Kubernetes.
Architektur
Technisch
Der Kern der Architektur bildet der Odoo Webshop. Er ist die Schnittstelle nach Aussen zum Kunden und nach Innen zum Kubernetes-Cluster.
Odoo Webshop
Die Kommunikation zwischen Odoo und der Kubernetes API erfolgt mit dem kubernetes-python-client.
Bei einem Deployment werden die Manifest-Dateien von der URL heruntergeladen. Die App-Parameter werden in ein vars.yml
geschrieben. Analog Ansible (Jinja2) werden die Manifest-Dateien mit den Werten ergänzt. Die Manifest-Dateien werden mit dem Python-Client angewendet.
Die Manifest-Dateien kommen aus dem Ansible Build Projekt. Odoo verwendet dann die gleichen Manifest-Dateien wie Ansible.
Die Odoo-Module für den Webshop sind hier beschrieben: Specification Website Sale Kubernetes Subscription OCA
Die Git-Integration ist ein entkoppelte Odoo-Modul: Specification Git Kubernetes
Mit Mailgun können Absender-Domain registriert werden: https://documentation.mailgun.com/docs/mailgun/api-reference/openapi-final/tag/Domains/#tag/Domains/operation/httpapi.(*T).CreateDomain-fm-4.
Odoo Deployment
Der Cluster ist auf das Deployment der Odoo Webapp ausgerichtet.
Workflow
Rollen: Kunde, Operator
System: Odoo, Kubernetes
ConfigMap erfassen:
- Der Operator loggt sicht im Odoo Backend ein
- Er erfasst unter Kubernetes > ConfigMaps einen Eintrag
- Er legt fest, ob die ConfigMap eine Vorlage ist
Manifest erfassen:
- Der Operator loggt sicht im Odoo Backend ein
- Er erfasst unter Kubernetes > Manifests einen Eintrag
- Ein Manifest hat einen Titel und eine URL auf die YAML-Datei
- Odoo zeigt eine Vorschau der Manifest-Datei, wenn die URL eingetragen wird
Hosting-Produkt erfassen:
- Anschliessend öffnet er Website > Produkte
- Er erfasst ein neues Produkt Odoo-Hosting als Subscription
- Im Tab Kubernetes wählt er die Vorlage ConfigMap, Environment und Manfeste zur Anwendung aus
Hosting einkaufen:
- Ein Kunde besucht Webshop
- Der Kunde legt ein Odo-Hosting in den Warenkorb
- Im Checkout-Prozess gibt der Kunde einen Appnamen ein
- Er sieht einen Hinweis, dass der Appname als Subdomain verwendet wird
- Odoo validiert die Eingabe des Appnamen
- Der Kunde bezahlt den Warenkorb
- Odoo erstellt eine subscription udn löst ein Deployment aus
- Odoo versendet eine Einladung via Mailgun unter dem App-Hostname
- Der Kunde erhält ein E-Mail mit den Zugriffsdaten
Deployment:
- Odoo legt eine Subscription an
- Für jede Auftragszeile -> Produkt -> Environments wird ein Namespace und eine App erstellt
- Der Namespace wird direkt in Kubernetes angelegt
- Beim Erstellen der App wird die ConfigMap vom Produkt kopiert
- Odoo lädt in Reihenfolge die Manifest-Dateien herunter
- Odoo wendet die Werte der ConfigMap als Jinja-Template auf die Manifest-Dateien an
- Odoo wendet die Manifest-Dateien an.
- Kubernetes erstellt die Deployments und Services.
ConfigMap exportieren:
- Der Operator loggt sich im Odoo Backend ein
- Er zeigt die Kubernetes Apps an und öffnen einen Eintrag
- Mit einem Klick auf Aktion > Export ConfigMAp erhält er ein Ansible
vars.yml
Manuelles Deployment:
- Der Operator loggt sicht im Odoo Backend ein
- Er zeigt die Kubernetes Apps an und öffnen einen Eintrag
- Er klickt auf "Apply" und "Update"
- Odoo prüft den Status des Ingress und zeigt diesen an
Integration zurücksetzen:
- Der Kunde loggt sich Odoo Portal ein
- Er öffnet die Apps-Kachel und wählt eine App aus
- In der Detailansicht wählt der die Aktion "Reset"
- Odoo triggert ein Deployment
Integration manuell zurücksetzen:
- Der Operator loggt sicht im Odoo Backend ein
- Er zeigt die Kubernetes Apps an und öffnen einen Integration-Eintrag
- Er klickt auf den "Reset" Button