Zum Inhalt springen

Ein privates Jitterbit-API-Gateway auf Docker ausführen

Einführung

Dieser Abschnitt enthält Beispiele für verschiedene Möglichkeiten, ein privates API-Gateway auf Docker mithilfe von 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 das System hinter einem Forward-Proxy läuft, konfigurieren Sie die Firewall Ihres Hosts so, dass Proxy-Server-Ausnahmen zulässig sind.

  • (Optional) Für die automatische Generierung von TLS-Zertifikaten eine registrierte benutzerdefinierte Gateway-Domäne und deren vollqualifizierten Domänennamen (FQDN) im Format mygateway.mydomain.com.

Interaktives Starten und Konfigurieren

Führen Sie Folgendes aus, um den Container zu starten und beantworten Sie dann die Eingabeaufforderungen (folgen Sie den Schritten zur Linux-Installationskonfiguration):

docker run --interactive --tty --name=jb-gateway \
--hostname=jb-gateway -p 80:80 -p 443:443 \
jitterbit/private-gateway

Interaktives Starten und Konfigurieren 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 direkte Kommunikation mithilfe von Container-Namen und vermeidet die Abhängigkeit von IP-Adressen. 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 Wechselwirkungen zwischen nicht zusammenhängenden Containern.

  • Benutzerdefinierte Konfigurationen: Ermöglicht spezifische Netzwerkeinstellungen, z. B. Anpassung von Subnetz und Gateway.

  • Netzwerksegmentierung: Erleichtert die Segmentierung von Netzwerkverkehr und stellt sicher, dass Container in verschiedenen Bridge-Netzwerken sich nicht gegenseitig beeinflussen.

  • Netzwerkrichtlinien: Ermöglicht die Anwendung unterschiedlicher Netzwerkregeln oder -richtlinien und bietet erweiterte Kontrolle über die Container-Kommunikation.

Vorsicht

Wenn Sie eine containergestützte 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.

Unbeaufsichtigtes Starten mit Bridge-Netzwerk und Konfigurieren 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-Kontopasswort, im Klartext oder mit base64 verschlüsselt. P@5$w0rd
UEA1Cg== (base64-codiert)
ORGANIZATION_ID Harmony-Organisations-ID-Nummer. 12345
SERVICE_URL Jitterbit-Service-URL für Ihre Region:
  • NA: https://services.jitterbit.net/apis
  • EMEA: https://services.jitterbit.eu/apis
  • APAC: https://services.jitterbit.cc/apis
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-Passwort, im Klartext oder mit base64 verschlüsselt. $(PROXY_SERVER_PASSWORD)
LETS_ENCRYPT_ENABLED Let's Encrypt aktivieren (true oder false). true
LETS_ENCRYPT_DOMAIN Let's Encrypt-Domänenname. Wenn der Domänenname Multibyte-Zeichen enthält, geben Sie dessen Punycode-Form ein. gateway.mydomain.com
LETS_ENCRYPT_EMAIL Let's Encrypt-Konto-E-Mail. youremail@<mydomain>.com
MAX_DOMAIN_PARTS Maximale Anzahl der in einem benutzerdefinierten vollqualifizierten Domänennamen (FQDN) unterstützten Subdomänen-Ebenen. 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 Anmerkung 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ügt man den Schlüssel zu einem laufenden Container hinzu:

  1. Öffne eine Shell-Sitzung auf dem Container:

    docker exec -it jb-gateway bash
    
  2. Füge den Schlüssel MaxDomainParts zu /usr/local/openresty/nginx/conf/onpremise/gatewayconfig.yaml hinzu. Beispiel:

    MaxDomainParts: 15
    
  3. Stoppe den Container und starte einen neuen Container mit demselben docker run-Befehl, bei dem MAX_DOMAIN_PARTS auf denselben Wert gesetzt ist.

Unbeaufsichtigtes Starten und Konfigurieren mit einer Umgebungsvariablendatei

Folge diesen Schritten, um den Container im Detached-Modus mit Umgebungsvariablen aus einer Datei zu starten:

  1. Im Verzeichnis, in dem Docker ausgeführt wird, erstelle ein Unterverzeichnis conf. Darin erstellst du eine Datei gateway.conf mit den folgenden Umgebungsvariablen:

    conf/gateway.conf
    ##
    # Jitterbit Private API Gateway Docker configuration
    # For more information, see https://docs.jitterbit.com/api-gateways/private/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
    # If the domain name contains multibyte characters, enter its Punycode form.
    LETS_ENCRYPT_DOMAIN=
    # Used by Lets Encrypt to issue the certificate. (Usually your email address.)
    LETS_ENCRYPT_EMAIL=
    

    Passwortsicherheit

    Seit der Private-API-Gateway-Version 11.51 können die Werte für HARMONY_PASSWORD und PROXY_PASSWORD als Base64-codierte Zeichenfolgen bereitgestellt werden. Ob im Klartext oder Base64-codiert, diese Werte werden in der Ausgabelog maskiert (mit ***).

  2. Lege die Variablenwerte wie im vorherigen Beispiel fest.

  3. Führe den folgenden Befehl aus:

    docker run --detach --name=jb-gateway -p 80:80 -p 443:443 \
    -v "$(pwd)/conf:/conf" \
    jitterbit/private-gateway
    
  4. (Optional) Teste das Gateway.

Test

Du kannst ein laufendes Docker-Private-API-Gateway mit einer Integritätsprüfung oder dem Self-Test-Utility testen.

Integritätsprüfung

Um sicherzustellen, dass ein Private-API-Gateway wie erwartet funktioniert, teste zunächst die Service-URL einer API Manager-API mit dem Cloud-Gateway und teste dann die URL des Private-API-Gateways für denselben Endpunkt:

  1. Erstelle und veröffentliche eine API in API Manager in der Organisation, die mit dem Private-API-Gateway verknüpft ist.

  2. Sende mit einem API-Test-Tool oder Befehl eine HTTPS-GET-Anfrage an die Service-URL der API.

    Beispiel: Bei Organisationsname JBExample, Organisations-ID 123456, URL-Präfix development, API-Versionsnummer 1 und Service-Root healthProbe wäre die Service-URL der API https://JBExample123456.jitterbit.net/development/v1/healthProbe in der NA-Region.

  3. Führe den Aufruf erneut durch, ersetze aber deinen Organisationsnamen und die ID sowie den Harmony-Regionsdomain-Namen (jitterbit.net, jitterbit.cc oder jitterbit.eu) durch die Subdomäne und Domain des Gateways.

    Mit dem vorherigen Beispiel mit einer Gateway-Domain von mysubdomain.example.com ergibt sich eine Private-API-Gateway-URL von https://mysubdomain.example.com/development/v1/healthProbe.

Self-Test-Utility

Das integrierte Self-Test-Utility 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 der Funktion Nur SSL erstellt, was bedeutet, dass der Zugriff auf die Private-API-Gateway-URL nur über HTTPS getestet wird. Um Zugriff über HTTP zu ermöglichen, kannst du die Funktion Nur SSL in der API-Konfiguration deaktivieren, nachdem die Test-API erstellt wurde.

Eine API-URL muss in deinem Abonnement verfügbar sein, damit das Self-Test erfolgreich ist.

Führe das Self-Test-Utility wie folgt aus:

  1. Öffne eine Shell-Sitzung auf einem laufenden Container:

    docker exec -it jitterbit-gateway bash
    
  2. Starte das Self-Test-Utility:

    /usr/bin/jitterbit-api-gateway-config --test