Ein privates Jitterbit-API-Gateway auf Docker ausführen
Einführung
Dieser Abschnitt zeigt verschiedene Möglichkeiten, ein privates API-Gateway auf Docker mit Jitterbits Docker-Image auszuführen.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie Folgendes:
-
Docker installiert und ausgeführt.
-
Ein Harmony-Konto mit Benutzername, Passwort und Organisations-ID.
-
Eine gültige API Manager-API in der Organisation, die dem privaten API-Gateway zugeordnet ist.
-
Falls Sie hinter einem Forward-Proxy arbeiten, konfigurieren Sie die Firewall Ihres Hosts, um Proxy-Server-Ausnahmen zuzulassen.
-
(Optional) Für die automatische Generierung von TLS-Zertifikaten eine registrierte benutzerdefinierte Gateway-Domain und deren vollständig qualifizierten Domänennamen (FQDN) in der Form
mygateway.mydomain.com.
Interaktiver Start und Konfiguration
Führen Sie Folgendes aus, um den Container zu starten und beantworten Sie dann die Eingabeaufforderungen (die den Schritten zur Linux-Installationskonfiguration folgen):
docker run --interactive --tty --name=jb-gateway \
--hostname=jb-gateway -p 80:80 -p 443:443 \
jitterbit/private-gateway
Interaktiver Start und Konfiguration mit Bridge-Netzwerk
Führen Sie Folgendes aus, um ein Bridge-Netzwerk zu erstellen und den Container mit diesem Netzwerk verbunden zu starten, und beantworten Sie dann die Eingabeaufforderungen:
docker network create -d bridge jitterbit
docker run --interactive -tty --name=jb-gateway \
--hostname=jb-gateway -p 80:80 -p 443:443 \
--network=jitterbit \
jitterbit/private-gateway
Ein Bridge-Netzwerk bietet die folgenden Vorteile:
-
Container-Erkennung: Ermöglicht die direkte Kommunikation mit Containernamen, ohne auf IP-Adressen angewiesen zu sein. Dies vereinfacht die Kommunikation zwischen Containern und ermöglicht es privaten Agenten, frei mit privaten Gateways zu kommunizieren.
-
Bessere Isolation: Bietet verbesserte Isolation und reduziert das Risiko unbeabsichtigter Interaktionen zwischen nicht verwandten Containern.
-
Benutzerdefinierte Konfigurationen: Ermöglicht spezifische Netzwerkeinstellungen, wie z. B. Anpassungen von Subnetz und Gateway.
-
Netzwerksegmentierung: Erleichtert die Segmentierung des Netzwerkverkehrs und stellt sicher, dass Container in verschiedenen Bridge-Netzwerken sich nicht gegenseitig beeinträchtigen.
-
Netzwerkrichtlinien: Ermöglicht die Anwendung unterschiedlicher Netzwerkregeln oder -richtlinien und bietet verbesserte Kontrolle über die Container-Kommunikation.
Vorsicht
Wenn Sie eine containerisierte Multi-Gateway-Umgebung hinter einem Application Load Balancer (ALB) wie AWS ALB konfigurieren, müssen sich alle Gateway-Container auf demselben Host-Computer befinden.
Tipp
Verwenden Sie dasselbe Netzwerk, um Ihre Docker-basierten privaten Agenten auszuführen.
Unbeaufsichtigter Start mit Bridge-Netzwerk und Konfiguration mit Umgebungsvariablen
Führen Sie Folgendes aus, um ein Bridge-Netzwerk zu erstellen und den Container im abgelösten Modus mit Werten zu starten, die über Umgebungsvariablen bereitgestellt werden:
docker network create -d bridge jitterbit
docker run --detach --name=jb-gateway \
--hostname=jb-gateway -p 80:80 -p 443:443 \
--network=jitterbit \
--env "HARMONY_USERNAME=<USERNAME>" \
--env "HARMONY_PASSWORD=<PASSWORD>" \
--env "ORGANIZATION_ID=<ORG_ID>" \
--env "SERVICE_URL=<SERVICE_URL>" \
--env "PROXY_ENABLED=true|false" \
--env "PROXY_HOSTNAME=<PROXY_HOSTNAME>"
--env "PROXY_USERNAME=<PROXY_SERVER_USERNAME>" \
--env "PROXY_PASSWORD=<PROXY_SERVER_PASSWORD>" \
--env "LETS_ENCRYPT_ENABLED=true|false" \
--env "LETS_ENCRYPT_DOMAIN=<DOMAIN>" \
--env "LETS_ENCRYPT_EMAIL=<EMAIL>" \
--env "MAX_DOMAIN_PARTS=<MAX_DOMAIN_PARTS>" \
jitterbit/private-gateway
Legen Sie die Variablenwerte wie folgt fest:
| Variable | Beschreibung | Beispiel |
|---|---|---|
HARMONY_USERNAME |
Harmony-Konto-Anmeldung. | name@example.com |
HARMONY_PASSWORD |
Harmony-Kontokennwort, im Klartext oder mit base64 codiert. |
P@5$w0rdUEA1Cg== (base64-codiert) |
ORGANIZATION_ID |
Harmony-Organisations-ID-Nummer. | 12345 |
SERVICE_URL |
Jitterbit-Service-URL für Ihre Region:
|
https://services.jitterbit.eu/apis |
PROXY_ENABLED |
Proxy aktivieren (true oder false). |
true |
PROXY_HOSTNAME |
Proxy-Hostname und Port. | host.docker.internal:12121 |
PROXY_USERNAME |
Proxy-Server-Benutzername. | $(PROXY_SERVER_USERNAME) |
PROXY_PASSWORD |
Proxy-Server-Kennwort, im Klartext oder mit base64 codiert. |
$(PROXY_SERVER_PASSWORD) |
LETS_ENCRYPT_ENABLED |
Let's Encrypt aktivieren (true oder false). |
true |
LETS_ENCRYPT_DOMAIN |
Let's Encrypt-Domänenname. | gateway.mydomain.com |
LETS_ENCRYPT_EMAIL |
Let's Encrypt-Konto-E-Mail. | youremail@<mydomain>.com |
MAX_DOMAIN_PARTS |
Maximale Anzahl von Subdomänen-Ebenen, die in einem benutzerdefinierten vollständig qualifizierten Domänennamen (FQDN) unterstützt werden. Verfügbar seit Version 12.9. Das Gateway unterstützt standardmäßig bis zu 10 Subdomänen-Ebenen. Eine Erhöhung über den Standard von 10 erfordert, dass der Schlüssel MaxDomainParts bereits in gatewayconfig.yaml vorhanden ist; siehe den Hinweis unten. |
15 |
Wichtig
Der Schlüssel MaxDomainParts muss bereits in gatewayconfig.yaml vorhanden sein, bevor die Umgebungsvariable MAX_DOMAIN_PARTS wirksam wird. Das Startskript des Gateways aktualisiert nur den Wert eines vorhandenen Schlüssels MaxDomainParts; es fügt den Schlüssel nicht automatisch hinzu. So fügen Sie den Schlüssel zu einem laufenden Container hinzu:
-
Öffnen Sie eine Shell-Sitzung auf dem Container:
docker exec -it jb-gateway bash -
Fügen Sie den Schlüssel
MaxDomainPartszu/usr/local/openresty/nginx/conf/onpremise/gatewayconfig.yamlhinzu. Beispiel:MaxDomainParts: 15 -
Stoppen Sie den Container und starten Sie einen neuen mit demselben
docker run-Befehl, wobeiMAX_DOMAIN_PARTSauf denselben Wert gesetzt ist.
Unbeaufsichtigter Start und Konfiguration mit einer Umgebungsvariablendatei
Führen Sie diese Schritte aus, um den Container im Detached-Modus mit Umgebungsvariablen aus einer Datei zu starten:
-
Erstellen Sie in dem Verzeichnis, in dem Docker ausgeführt wird, ein Unterverzeichnis
conf. Erstellen Sie darin eine Dateigateway.confmit den folgenden Umgebungsvariablen:conf/gateway.conf## # Jitterbit Private API Gateway Docker configuration # For more information, see https://docs.jitterbit.com/api-gateways/private-api-gateway/docker/ ## ## Jitterbit API Gateway Configuration # # Your Harmony account username. (Usually your email address.) HARMONY_USERNAME= # Your Harmony account password. # IMPORTANT: Follow your shell's quoting and escape rules for passwords with special characters. # Example: 'P@5$w0rD' HARMONY_PASSWORD= # Your Harmony account organization ID. # Example: 12345 ORGANIZATION_ID= # The Jitterbit service URL for your Harmony account region, one of the following: # - For NA: https://services.jitterbit.net/apis # - For EMEA: https://services.jitterbit.eu/apis # - For APAC: https://services.jitterbit.cc/apis SERVICE_URL= # Since private API gateway version 12.9, maximum number of subdomain levels supported in a custom fully qualified domain name (FQDN). # If not specified, the gateway supports up to 10 subdomain levels by default. # Requires the MaxDomainParts key to already exist in gatewayconfig.yaml; see the note under "Unattended start with bridge network and configure with environment variables". # MAX_DOMAIN_PARTS= ## Proxy Configuration (Optional) # # When true, enable proxy. PROXY_ENABLED=false ## When PROXY_ENABLED=true, uncomment and set the following: # # Proxy server URL, as http://your_proxy_server:port # PROXY_HOSTNAME= # Proxy server username # PROXY_USERNAME= # Proxy server password # PROXY_PASSWORD= ## Let's Encrypt certificates # When true, enable automatic generation of TLS certificate. # IMPORTANT: You must first create a DNS record pointing to the public IP address of your server. LETS_ENCRYPT_ENABLED=true # Fully-qualified domain name of your server, matching the A record or CNAME of the DNS record. # Example: gateway.mydomain.com LETS_ENCRYPT_DOMAIN= # Used by Lets Encrypt to issue the certificate. (Usually your email address.) LETS_ENCRYPT_EMAIL=Passwortsicherheit
Seit Private API Gateway Version 11.51 können die Werte für
HARMONY_PASSWORDundPROXY_PASSWORDals Base64-codierte Zeichenketten bereitgestellt werden. Ob Klartext oder Base64-codiert, diese Werte werden in der Ausgabeprotokollierung maskiert (mit***). -
Legen Sie die Variablenwerte wie im vorherigen Beispiel fest.
-
Führen Sie den folgenden Befehl aus:
docker run --detach --name=jb-gateway -p 80:80 -p 443:443 \ -v "$(pwd)/conf:/conf" \ jitterbit/private-gateway -
(Optional) Testen Sie das Gateway.
Test
Sie können ein laufendes Docker Private API Gateway mit einer Integritätsprüfung oder dem Self-Test-Dienstprogramm testen.
Integritätsprüfung
Um sicherzustellen, dass ein Private API Gateway wie erwartet funktioniert, testen Sie zunächst die Service-URL einer API Manager-API mit dem Cloud Gateway und dann die URL des Private API Gateway für denselben Endpunkt:
-
Erstellen und veröffentlichen Sie in API Manager in der Organisation, die dem Private API Gateway zugeordnet ist, eine API.
-
Stellen Sie mit einem API-Testtool oder -Befehl eine HTTPS-GET-Anfrage an die Service-URL der API.
Beispiel: Bei Organisationsname
JBExample, Organisations-ID123456, Umgebungs-URL-Präfixdevelopment, API-Versionsnummer 1 und Service-RoothealthProbewäre die Service-URL der APIhttps://JBExample123456.jitterbit.net/development/v1/healthProbein der NA-Region. -
Führen Sie den Aufruf erneut durch, ersetzen Sie aber Ihren Organisationsnamen und die ID sowie den Harmony-Regionsdomänennamen (
jitterbit.net,jitterbit.ccoderjitterbit.eu) durch die Subdomäne und Domäne Ihres Gateways.Mit dem vorherigen Beispiel und einer Gateway-Domäne von
mysubdomain.example.comergibt sich eine Private API Gateway-URL vonhttps://mysubdomain.example.com/development/v1/healthProbe.
Self-Test-Dienstprogramm
Das integrierte Self-Test-Dienstprogramm des Gateways führt eine Reihe automatischer Tests durch, die das Importieren eines integrierten Projekts und einer API sowie den Aufruf der API über das Gateway umfassen, um eine ordnungsgemäße Konfiguration sicherzustellen.
Die API wird mit aktivierter Option Nur SSL erstellt, was bedeutet, dass der Zugriff auf die Private API Gateway-URL nur über HTTPS getestet wird. Um den Zugriff über HTTP zu ermöglichen, können Sie die Option Nur SSL in der API-Konfiguration deaktivieren, nachdem die Test-API erstellt wurde.
Eine API-URL muss in Ihrem Abonnement verfügbar sein, damit der Self-Test erfolgreich ist.
Führen Sie diese Schritte aus, um das Self-Test-Dienstprogramm auszuführen:
-
Öffnen Sie eine Shell-Sitzung auf einem laufenden Container:
docker exec -it jitterbit-gateway bash -
Führen Sie das Self-Test-Dienstprogramm aus:
/usr/bin/jitterbit-api-gateway-config --test