gpe_mw_ansible.3scale_multitenant

:scrollbar: :data-uri: :toc2: :linkattrs:

= 3scale_multitenant

:numbered:

== Übersicht

Diese Arbeitslast stellt einen zentralen 3scale API Manager in einem einzelnen OCP-Namespace bereit.

Diese Arbeitslast muss nur einmal pro OCP-Cluster ausgeführt werden.

Sie ermöglicht auch die Verwaltung (z. B.: Erstellung / Löschung) einer konfigurierbaren Anzahl von API Mietern in der Installation des 3scale API Managers.

Diese Rolle kann in den folgenden Situationen nützlich sein:

. Lehrer geleitete Schulungen (ILTs), Hackathon und Workshops: + Angenommen, eine bestimmte Anzahl von Studierenden in einer ILT benötigt 3scale, dann wird ein zentraler, multi-mandantenfähiger Red Hat 3scale API Manager bereitgestellt, wobei jedem Studierenden sein eigener Mieter zugewiesen wird. + Der Studierende erhält administrative Anmeldedaten für seinen zugewiesenen Mieter. + Dieser Ansatz kann wünschenswerter sein als die Alternative, bei der jeder Studierende seinen eigenen 3scale API Manager bereitstellt.

. Red Hat 3scale Befähigung + Einige Lernziele könnten sein:

.. Demonstration der Bereitstellung von 3scale auf OCP. .. Integration mit einem externen SMTP-Anbieter zum Versenden von E-Mails und zur Unterstützung eines Benutzer-Selbstregistrierungs-Workflows. .. Aufruf der REST Admin API von 3scale mithilfe von OAuth2 Zugriffs- und Aktualisierungstokens.

=== Voraussetzungen

. Die in diesem Labor bereitgestellte Version von 3scale (v2.4) ist bekannt dafür, dass sie auf der OpenShift Container Platform 4.8 läuft. + Diese Version von OpenShift sollte bereits vor der Ausführung dieser Ansible-Rolle vorinstalliert sein.

. Stellen Sie sicher, dass das oc-Befehlszeilenwerkzeug, das Ihrer Ziel-OCP-Cluster-Version entspricht, bereits als Cluster-Administrator authentifiziert ist.

. Diese Ansible-Rolle benötigt die Installation der python-Module lxml und openshift auf dem Zielhost, der dieses Ansible ausführt. z. B.: +


dnf install python3-lxml

dnf install python3-openshift


== API Manager

Die in diesem Abschnitt beschriebene Ansible-Rolle kann einen 3scale API Manager mithilfe von OpenShift Vorlagen bereitstellen.

=== Bekannte Probleme

. link:https://issues.redhat.com/browse/THREESCALE-5725[API Manager auf FIPS-konformem OpenShift] . Zielreparatur: 3scale 2.12

=== Ressourcenanforderungen

Diese Ansible-Rolle ermöglicht die Bereitstellung von 3scale in unterschiedlichen Größen, basierend auf dem Wert der folgenden Ansible-Variablen: is_production

. Ressourcennutzung: is_production = true .. Das Cluster-Kontingent für CPU und RAM ist standardmäßig ziemlich hoch eingestellt: ... CPU-Limit: 30 Kerne ... RAM-Limit: 30 Gi .. Die CPU- und RAM-Limits, die in der 3scale API Manager-Vorlage definiert sind, sind ebenfalls recht hoch. .. Diese Standardeinstellungen sind absichtlich hoch angesetzt, um eine hohe Durchsatzrate zu ermöglichen.

. Ressourcennutzung: is_production = false + Das ist die Standardeinstellung. Die Ressourcen, die zur Bereitstellung von 3scale benötigt werden, sinken auf etwa 12 Gi RAM und 6 CPU.

=== SMTP-Anbieter Sie sollten sich bei einem SMTP-Anbieter registrieren, um dem 3scale API Manager die Möglichkeit zu geben, E-Mails zu versenden.

In 3scale werden die SMTP-Einstellungen global konfiguriert und von allen API Mietern genutzt.

Einige SMTP-Anbieter mit Kostenlosen Plänen, mit denen diese Ansible-Rolle getestet wurde, sind unten aufgeführt:

. SocketLabs: Bietet derzeit einen kostenlosen Plan, der link:https://www.socketlabs.com/signup/[2000 E-Mails pro Monat] zulässt. . SendGrid: Bietet derzeit einen kostenlosen Plan, der link:https://sendgrid.com/pricing/[100 E-Mails pro Tag] zulässt.

=== Umgebungsvariablen Alle Umgebungsvariablen sind optional.

Wenn keine Umgebungsvariablen angegeben sind, wird ein 3scale API Manager Steuerplane bereitgestellt, der mindestens einen RWX PVC erwartet und nicht mit einem SMTP-Anbieter integriert ist.

Der API Manager wird im folgenden Namespace bereitgestellt: 3scale-mt-api0.

. amp_master_passwd + Optional. Standardwert = master.

. master_access_token + Optional. Standardwert = wtqhhsly.

. default_tenant_access_token + Optional. Standardwert = 3832cnj371woiduh.

. is_production + Optional. Standardwert = false.

. use_rwo_for_cms + Optional. Standardwert ist false. + Der 3scale Steuerplane besteht aus einem Content Management System (CMS), das typischerweise für verbesserte Leistung in einer Produktionsumgebung skalierbar ist. Dieses CMS erfordert anschließend einen Zugang im ReadWriteMany-Modus für seinen entsprechenden "system-storage" PVC. In einer Bereitstellung des API Managers auf OCP 4.*, wo AWS EBS für den Speicher verwendet wird, ist ein ReadWriteMany-Zugangsmodus link:https://docs.openshift.com/container-platform/4.2/storage/understanding-persistent-storage.html#pv-access-modes_understanding-persistent-storage[nicht verfügbar]. In diesem Szenario setzen Sie diese Umgebungsvariable auf: true. Dadurch wird die Vorlage für den 3scale-Steuerplane so modifiziert, dass ReadWriteOnce (und nicht ReadWriteMany) angegeben wird. Wenn Sie dies auf true setzen, versuchen Sie nicht, mehr als eine Instanz des system-app-Pods zu erstellen.

. SMTP-Konfigurationen, die es dem API Manager ermöglichen, E-Mails zu versenden + E-Mails werden umfassend genutzt, um die verschiedenen Anmeldeflüsse zum 3scale Entwicklerportal zu unterstützen. + Die Integration zwischen einem SMTP-Anbieter und 3scale erfolgt global für den gesamten API Manager.

.. smtp_userid + Optional. Der Standardwert ist null. Wenn null, wird die Integration zwischen dem 3scale API Manager und dem SMTP-Anbieter nicht konfiguriert.

.. smtp_host .. smtp_port .. smtp_authentication .. smtp_passwd .. smtp_domain

. adminEmailUser + Optional. Standardwert = jdoe.

. adminEmailDomain + Optional. Standardwert = redhat.com.

. RESUME_CONTROL_PLANE_GWS + Optional. Standardwert = true. + Der 3scale API Manager umfasst standardmäßig eine Staging- und Produktions-Gateway. Diese beiden Gateways werden normalerweise nicht verwendet, um API-Richtlinien auf Anfragen anzuwenden, da die "Datenebene" (auch als Gateways bekannt) normalerweise in einer anderen Umgebung bereitgestellt wird. Allerdings wird das Staging-Gateway von der Systemanbieter-Webanwendung für Einzelheiten zu API Gateway-Richtlinien benötigt. Daher ist der Standardwert: true.

. OCP_AMP_ADMIN_ID + Optional. Der Standardwert = api0. + OCP-Benutzer, der den OCP-Namespace besitzt, in dem sich der API Manager befindet. Ein Cluster-Kontingent wird diesem Benutzer zugewiesen. HINWEIS: Dieser OCP-Benutzer muss nicht unbedingt existieren.

=== Ausführung

. API Manager bereitstellen: +


$ $ ansible-playbook playbooks/apimanager.yml

. Alle API Manager-Routen im Namespace 3scale-mt-api0 auflisten: +


$ oc get route -n 3scale-mt-api0

. Optional: API Manager löschen: +


$ ansible-playbook playbooks/apimanager.yml -e ACTION=uninstall

== API-Mieter Mit der Bereitstellung des 3scale API Managers wird ein _Standard_mieter erstellt.

Falls erforderlich, kann die in diesem Abschnitt beschriebene Ansible-Rolle zusätzliche Mieter erstellen.

=== Umgebungsvariablen Alle Umgebungsvariablen sind optional.

Wenn keine Umgebungsvariablen angegeben sind, wird ein einzelner Mieter (genannt: ocp01) im API Manager mit einem Mieter-Administrator-Benutzer von: api01 / admin erstellt. Entsprechende Gateways werden auch in einem Namespace namens: ocp01 erstellt.

. orgName + Optional: Standardwert = ocp01 + Gibt den Namen des Mieters sowie den Namen des Namespaces an, in dem die entsprechenden Gateways bereitgestellt werden. + Nützlich, wenn die Absicht darin besteht, einen einzelnen Mieter mit einem bestimmten Namen zu erstellen.

. tenant_admin_user_name_base + Optional. Standardwert = api. + Basisname der API-Benutzer, die Administratoren ihrer API-Mieter (und Administratoren ihrer eigenen API-Gateways) sein werden. z. B.; wenn die gewünschten API-Benutzernamen: api01, api02, api03 ....... sind, dann sollte der Wert dieser Variablen: "api" sein.

. tenantAdminPasswd + Optional: Standardwert = admin.

. create_gws_with_each_tenant + Optional: Standardwert = true
+ Wenn wahr, wird für jeden entsprechenden Mieter im selben OCP-Cluster, in dem sich der API Manager befindet, ein OCP-Projekt mit API-Gateways erstellt.

. ocp_user_name_base + Optional. Standardwert = ocp
+ Bestimmt den Basissnamen der OCP-Benutzer, die Zugriff auf ihre entsprechenden API-Management-bezogenen Projekte haben. z. B.; wenn die OCP-Benutzernamen: user01, user02, user03 ....... sind, dann sollte der Wert dieser Variablen: "user" sein.

. START_TENANT + Optional. Standardwert = 1.

. END_TENANT + Optional. Standardwert = 1.

. use_padded_tenant_numbers + Optional. Standardwert = true + Wenn sequentielle generische Mieter erstellt werden, geben Sie an, ob die Mieternamen eine gepolsterte Nummer enthalten sollen oder nicht. z. B.; ocp01, ocp02 ... ocp10 oder ocp1, ocp2 ... ocp10. Der Standardwert ist true. Der Standardwert entspricht der Standardverwendung von gepolsterten Zahlen in: https://github.com/gpe-mw-ansible-org/rh-sso-multi-realm.

=== Ausführung

. Bereitstellen: +


$ ansible-playbook playbooks/api_tenant.yml

. Nach Abschluss der Bereitstellung des Mieters sehen Sie am Ende der Standardausgabe von Ansible ähnliche Meldungen: +


ok: [localhost] => { "msg": [ "tenant_output_dir: /home/jbride/provisioning_output/3295.openshift.opentlc.com/tenants_3scale-mt-api0", "tenant_provisioning_log_file = /home/jbride/provisioning_output/3295.openshift.opentlc.com/tenants_3scale-mt-api0/tenant_provisioning.log", "tenant_provisioning_results_file = /home/jbride/provisioning_output/3295.openshift.opentlc.com/tenants_3scale-mt-api0/tenant_info_file_1_2.txt", "start and end tenants = 1 2", "create API Gateways for each tenant = true" ] }


. Die tenant_provisioning_results_file enthält Anmeldedaten und URLs jedes bereitgestellten Mieters. + Dies ist eine tabulatorgetrennte Datei, die in Google Tabellen oder LibreOffice Calc importiert werden kann.

== API-Gateways

Wenn Ihr API Manager und die Mieter bereits bereitgestellt sind und entsprechende Apicast-Gateways für diesen Mieter gewünscht werden, dann ist dieses Ansible nützlich.

=== Umgebungsvariablen

. threescale_tenant_admin_accesstoken + Erforderlich + Wert der folgenden Variablen, als der 3scale-Mieter erstellt wurde: ADMIN_ACCESS_TOKEN. Alternativ kann ein neuer Zugriffstoken über die Administrator-Oberfläche des 3scale-Mieters erstellt werden: Zahnrad-Symbol -> Persönliche Einstellungen -> Tokens -> Zugriffstoken -> Zugriffstoken hinzufügen. Alternativ kann dies der "Provider API-Schlüssel" Ihres 3scale-Mieters sein.

. threescale_tenant_admin_hostname + Erforderlich. + URL der Ziel-3scale-Mieter-Administratorroute + z. B.: t1-admin.apps.cluster-4663.4663.sandbox758.opentlc.com

. gw_namespace + Optional. Standardwert = user1-gw.

. threescale_version + Optional. Standardwert = 3scale-2.10.0-GA-jbride. + Andere Tags sind link:https://github.com/3scale/3scale-amp-openshift-templates/tags[hier] aufgeführt.

=== Ausführung:

. Apicast-Gateways bereitstellen +


$ $ ansible-playbook playbooks/api_gw.yml
-e threescale_tenant_admin_accesstoken=$threescale_tenant_admin_accesstoken
-e threescale_tenant_admin_hostname=$threescale_tenant_admin_hostname


== Alt

=== Ansible-Setup

. Installieren Sie diese Rolle lokal +


$ ansible-galaxy install gpe_mw_ansible.3scale_multitenant --force -p $HOME/.ansible/roles

. Erstellen Sie ein Playbook: +


$ echo "

  • hosts: all become: false gather_facts: False vars_files: roles:
    • gpe_mw_ansible.3scale_multitenant " > /tmp/3scale_multitenant.yml

=== Bereitstellung des 3scale API Managers

Der OCP-Namespace für die 3scale Multi-Tenant-Anwendung wird von folgendem Benutzer verwaltet: {{OCP_AMP_ADMIN_ID}}.

{{OCP_AMP_ADMIN_ID}} wird ein Cluster-Kontingent zugewiesen, um die Limits und Anfragen, die 3scale zugewiesen sind, zu verwalten.

. Ausführen: +


API Manager bereitstellen

$ ansible-playbook playbooks/apimanager.yml \ -e"use_rwo_for_cms=$use_rwo_for_cms"
-e"smtp_port=$smtp_port"
-e"smtp_authentication=$smtp_authentication"
-e"smtp_host=$smtp_host"
-e"smtp_userid=$smtp_userid"
-e"smtp_passwd=$smtp_passwd"


. Nach etwa 5 Minuten sollte die Bereitstellung des API Managers abgeschlossen sein. . Da der API Manager eine große Anwendung mit vielen verschiedenen Komponenten ist, werden die Komponenten in einer bestimmten Reihenfolge hochgefahren. + Anschließend bleibt Ansible während jeder Phase des Bereitstellungsprozesses in einer Warte-Schleife.

=== Benannte Mieter

Alternativ zur Möglichkeit, eine Reihe generischer Mieter zu erstellen, kann auch ein benannter Mieter einzeln erstellt werden.


orgName=openbanking-prod

ocpAdminId=ocp01 # Name des OCP-Benutzers, der Zugriff auf die entsprechenden API-Management-projekte hat.

tenantAdminId=api01 # Name des API-Benutzers, der der Administrator seiner API-Mieter (und Administrator seiner eigenen API-Gateways) sein wird.

create_gws_with_each_tenant=true # wenn wahr, wird für jeden entsprechenden Mieter im selben OCP-Cluster, in dem sich der API Manager befindet, ein OCP-Projekt mit API-Gateways erstellt.

gw_project_name=$orgName-gw

$ ansible-playbook -i localhost, -c local /tmp/3scale_multitenant.yml
-e"ACTION=tenant_mgmt"
-e"API_MANAGER_NS=$API_MANAGER_NS"
-e"adminEmailUser=$adminEmailUser"
-e"adminEmailDomain=$adminEmailDomain"
-e"create_gws_with_each_tenant=$create_gws_with_each_tenant"
-e"orgName=$orgName"
-e"ocpAdminId=$ocpAdminId"
-e"tenantAdminId=$tenantAdminId"
-e"gw_project_name=$gw_project_name"
-e"rht_service_token_user=$rht_service_token_user"
-e"rht_service_token_password=$rht_service_token_password"


==== Benutzeranmeldedaten des Mieters

Jeder Mieter wird mit einem Benutzer ausgestattet, der Administratorrechte für diesen Mieter hat.

Der Benutzername und das Passwort werden mit den folgenden in defaults/main.yml gefundenen Ansible-Variablen generiert:

. Mieter-Administrator-Benutzername: {{ tenant_admin_user_name_base }} (z. B.: api01, api02, api03 ...., api10 ) . Mieter-Administrator-Passwort: {{ tenantAdminPasswd }}

=== Veralteter WILDCARD_DOMAIN Zustand im API Manager Es kann Szenarien geben, in denen sich die DNS eines ursprünglich bereitgestellten API Managers ändert. Insbesondere ist der Wert des WILDCARD_DOMAIN-Parameters, der bei der ursprünglichen Bereitstellung Ihres API Managers verwendet wurde, nicht mehr gültig.

Ein Beispiel für ein Szenario, in dem dies auftreten kann, ist Ravello, wo die ursprüngliche Bereitstellung des 3scale API Managers als Ravello Blueprint erfasst wird. Zur Laufzeit wird eine Ravello Anwendung aus diesem Ravello Blueprint instanziiert, und die tatsächliche Laufzeit-DNS der Ravello Anwendung wird angewendet. Diese zur Laufzeit angewendete DNS wird anders sein als die bei der Erstellung des Blueprints verwendete DNS.

Um Probleme im Zusammenhang mit diesem veralteten Zustand zu beheben, müssen die folgenden Schritte ausgeführt werden:

. Aktualisieren Sie alle Routen im Namespace Ihres API Managers. . Aktualisieren Sie die veralteten URLs in der system.accounts-Tabelle in der System-MySQL-Datenbank des API Managers. . Ändern Sie den Wert der THREESCALE_SUPERDOMAIN-Variablen im ConfigMap: system-environment:

Beispiele, wie man die oben genannten Änderungen vornehmen kann, finden Sie link:https://gist.github.com/jbride/be32113707418cb43d73c9ef28a09b9d[hier].

Über das Projekt

3scale Multitenant Automated Provisioning

Installieren
ansible-galaxy install gpe_mw_ansible.3scale_multitenant
Lizenz
Unknown
Downloads
221
Besitzer
Ansible roles to support RHT middleware labs