Ejecutar una puerta de enlace de API privada de Jitterbit en Docker
Introducción
Esta sección proporciona ejemplos de diferentes formas de ejecutar una puerta de enlace de API privada en Docker usando la imagen de Docker de Jitterbit.
Requisitos previos
Antes de comenzar, necesitas lo siguiente:
-
Docker instalado y en funcionamiento.
-
Una cuenta de Harmony, con su nombre de usuario, contraseña e ID de organización.
-
Una API del Administrador de API válida en la organización asociada con la puerta de enlace de API privada.
-
Si se ejecuta detrás de un proxy directo, configura el firewall de tu host para permitir excepciones del servidor proxy.
-
(Opcional) Para la generación automática de certificados TLS, un dominio de puerta de enlace personalizado registrado y su nombre de dominio completamente calificado (FQDN) en la forma
mygateway.mydomain.com.
Inicio interactivo y configuración
Ejecuta lo siguiente para iniciar el contenedor y luego responde a las indicaciones (que sigue los pasos de configuración de instalación de Linux):
docker run --interactive --tty --name=jb-gateway \
--hostname=jb-gateway -p 80:80 -p 443:443 \
jitterbit/private-gateway
Inicio interactivo y configuración con red de puente
Ejecuta lo siguiente para crear una red de puente e iniciar el contenedor conectado a esa red, y luego responde a las indicaciones:
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
Una red de puente ofrece las siguientes ventajas:
-
Descubrimiento de contenedores: Permite la comunicación directa usando nombres de contenedores, evitando la dependencia de direcciones IP. Esto simplifica la comunicación entre contenedores y permite que los agentes privados se comuniquen libremente con puertas de enlace privadas.
-
Mejor aislamiento: Proporciona un aislamiento mejorado, reduciendo el riesgo de interacciones accidentales entre contenedores no relacionados.
-
Configuraciones personalizadas: Permite configuraciones de red específicas, como personalización de subredes y puertas de enlace.
-
Segmentación de red: Facilita la segmentación del tráfico de red, garantizando que los contenedores en diferentes redes de puente no interfieran entre sí.
-
Políticas de red: Habilita la aplicación de reglas o políticas de red distintas, ofreciendo un control mejorado sobre las comunicaciones del contenedor.
Precaución
Si configuras un entorno de múltiples puertas de enlace en contenedores detrás de un equilibrador de carga de aplicaciones (ALB) como AWS ALB, todos los contenedores de puerta de enlace deben estar en la misma máquina host.
Sugerencia
Usa la misma red para ejecutar tus agentes privados basados en Docker.
Inicio desatendido con red de puente y configuración con variables de entorno
Ejecuta lo siguiente para crear una red de puente e iniciar el contenedor en modo desasociado, con valores proporcionados a través de variables de entorno:
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
Establece los valores de las variables de la siguiente manera:
| Variable | Descripción | Ejemplo |
|---|---|---|
HARMONY_USERNAME |
Inicio de sesión de la cuenta de Harmony. | name@example.com |
HARMONY_PASSWORD |
Contraseña de la cuenta de Harmony, en texto plano o codificada con base64. |
P@5$w0rdUEA1Cg== (codificado en base64) |
ORGANIZATION_ID |
Número de ID de la organización de Harmony. | 12345 |
SERVICE_URL |
URL del servicio de Jitterbit para tu región:
|
https://services.jitterbit.eu/apis |
PROXY_ENABLED |
Habilitar proxy (true o false). |
true |
PROXY_HOSTNAME |
Nombre de host del proxy y puerto. | host.docker.internal:12121 |
PROXY_USERNAME |
Nombre de usuario del servidor proxy. | $(PROXY_SERVER_USERNAME) |
PROXY_PASSWORD |
Contraseña del servidor proxy, en texto plano o codificada con base64. |
$(PROXY_SERVER_PASSWORD) |
LETS_ENCRYPT_ENABLED |
Habilitar Let's Encrypt (true o false). |
true |
LETS_ENCRYPT_DOMAIN |
Nombre de dominio de Let's Encrypt. Si el nombre de dominio contiene caracteres multibyte, ingresa su forma Punycode. | gateway.mydomain.com |
LETS_ENCRYPT_EMAIL |
Correo electrónico de la cuenta de Let's Encrypt. | youremail@<mydomain>.com |
MAX_DOMAIN_PARTS |
Número máximo de niveles de subdominio admitidos en un nombre de dominio completamente calificado (FQDN) personalizado. Disponible desde la versión 12.9. La puerta de enlace admite hasta 10 niveles de subdominio de forma predeterminada. Aumentar más allá del valor predeterminado de 10 requiere que la clave MaxDomainParts ya exista en gatewayconfig.yaml; consulta la nota a continuación. |
15 |
Importante
La clave MaxDomainParts ya debe existir en gatewayconfig.yaml antes de que la variable de entorno MAX_DOMAIN_PARTS entre en vigencia. El script de inicio de la puerta de enlace solo actualiza el valor de una clave MaxDomainParts existente; no agrega la clave automáticamente. Para agregar la clave a un contenedor en ejecución:
-
Abre una sesión de shell en el contenedor:
docker exec -it jb-gateway bash -
Agrega la clave
MaxDomainPartsa/usr/local/openresty/nginx/conf/onpremise/gatewayconfig.yaml. Por ejemplo:MaxDomainParts: 15 -
Detén el contenedor y luego inicia uno nuevo usando el mismo comando
docker runconMAX_DOMAIN_PARTSestablecido en el mismo valor.
Inicio desatendido y configuración con un archivo de variables de entorno
Sigue estos pasos para iniciar el contenedor en modo desacoplado con variables de entorno establecidas en un archivo:
-
En el directorio donde se ejecuta Docker, crea un subdirectorio
conf. En él, crea un archivogateway.confque contenga las siguientes variables de entorno: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=Seguridad de contraseña
Desde la versión 11.51 de la puerta de enlace API privada, los valores de
HARMONY_PASSWORDyPROXY_PASSWORDse pueden proporcionar como cadenas codificadas en base64. Ya sea texto plano o codificado en base64, estos valores se enmascaran (con***) en el registro de salida. -
Establece los valores de las variables como en el ejemplo anterior.
-
Ejecuta el siguiente comando:
docker run --detach --name=jb-gateway -p 80:80 -p 443:443 \ -v "$(pwd)/conf:/conf" \ jitterbit/private-gateway -
(Opcional) Prueba la puerta de enlace.
Prueba
Se puede probar una puerta de enlace API privada de Docker en ejecución usando una verificación de estado, o la utilidad de autoprueba.
Verificación de estado
Para asegurar que una puerta de enlace API privada funcione como se espera, primero prueba la URL del servicio de una API de API Manager usando la puerta de enlace en la nube y luego prueba la URL de la puerta de enlace API privada para el mismo punto de conexión:
-
En API Manager en la organización asociada con la puerta de enlace API privada, crea y publica una API.
-
Usando una herramienta de prueba de API o un comando, realiza una solicitud HTTPS GET a la URL del servicio de la API.
Por ejemplo, para el nombre de organización
JBExample, ID de organización123456, prefijo de URL de entornodevelopment, número de versión de API 1 y raíz del serviciohealthProbe, la URL del servicio de la API seríahttps://JBExample123456.jitterbit.net/development/v1/healthProbeen la región NA. -
Realiza la llamada de nuevo, pero reemplaza el nombre y la ID de tu organización y el nombre de dominio de la región de Harmony (
jitterbit.net,jitterbit.ccojitterbit.eu) con el subdominio y dominio de tu puerta de enlace.Usando el ejemplo anterior con un dominio de puerta de enlace de
mysubdomain.example.com, se obtiene una URL de puerta de enlace API privada dehttps://mysubdomain.example.com/development/v1/healthProbe.
Utilidad de autoprueba
La utilidad de autoprueba integrada de la puerta de enlace ejecuta una serie de pruebas automáticas que incluyen importar un proyecto y una API integrados y luego llamar a la API a través de la puerta de enlace para asegurar una configuración adecuada.
La API se crea con la opción Solo SSL habilitada, lo que significa que el acceso a la URL de la puerta de enlace API privada se probará solo a través de HTTPS. Para permitir el acceso a través de HTTP, puedes deshabilitar la opción Solo SSL en la configuración de API después de crear la API de prueba.
Una URL de API debe estar disponible en tu suscripción para que la autoprueba sea exitosa.
Para ejecutar la utilidad de autoprueba, sigue estos pasos:
-
Abre una sesión de shell en un contenedor en ejecución:
docker exec -it jitterbit-gateway bash -
Ejecuta la utilidad de autoprueba:
/usr/bin/jitterbit-api-gateway-config --test