Mint Cloud Spezifikation
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 zu den Kubernetes-Umgebungen.
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 Odoo-Module für den Webshop sind hier beschrieben: Specification Website Sale Kubernetes Subscription OCA
Die Git-Integration ist hier beschreiben: Specification Git Kubernetes
Ansible
Die Manifest-Dateien kommen aus dem Ansible Build Projekt. Der Odoo Kubernetes-Controller verwendet somit die gleichen Manifest-Dateien wie Ansible.
Mailgun
Mit Mailgun können Absender-Domain registriert werden: Mailgun > Create a domain.
CrowdSec
CrowdSec bietet IP-Blocklisten im Gegenzug zu Log-Daten an.
Exoscale
Exoscale ist nur einer von Möglichen "Managed Kubernetes Providern".
Payrexx
Payrexx ist ein Schweizer Zahlungsanbieter. Es gibt bereits Integrationen für Odoo.
Codey
Codey ist ein Projekt der VSHN AG und soll eine Schweizer Alternative zu GitHub und Co beiten.
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