Zum Inhalt springen

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$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-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:

  1. Öffnen Sie eine Shell-Sitzung auf dem Container:

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

    MaxDomainParts: 15
    
  3. Stoppen Sie den Container und starten Sie einen neuen mit demselben docker run-Befehl, wobei MAX_DOMAIN_PARTS auf 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:

  1. Erstellen Sie in dem Verzeichnis, in dem Docker ausgeführt wird, ein Unterverzeichnis conf. Erstellen Sie darin 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-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_PASSWORD und PROXY_PASSWORD als Base64-codierte Zeichenketten bereitgestellt werden. Ob Klartext oder Base64-codiert, diese Werte werden in der Ausgabeprotokollierung maskiert (mit ***).

  2. Legen Sie die Variablenwerte wie im vorherigen Beispiel fest.

  3. 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
    
  4. (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:

  1. Erstellen und veröffentlichen Sie in API Manager in der Organisation, die dem Private API Gateway zugeordnet ist, eine API.

  2. Stellen Sie mit einem API-Testtool oder -Befehl eine HTTPS-GET-Anfrage an die Service-URL der API.

    Beispiel: Bei Organisationsname JBExample, Organisations-ID 123456, Umgebungs-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ühren Sie den Aufruf erneut durch, ersetzen Sie aber Ihren Organisationsnamen und die ID sowie den Harmony-Regionsdomänennamen (jitterbit.net, jitterbit.cc oder jitterbit.eu) durch die Subdomäne und Domäne Ihres Gateways.

    Mit dem vorherigen Beispiel und einer Gateway-Domäne von mysubdomain.example.com ergibt sich eine Private API Gateway-URL von https://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:

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

    docker exec -it jitterbit-gateway bash
    
  2. Führen Sie das Self-Test-Dienstprogramm aus:

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