Despliegue del contenedor Docker del gateway de aplicación de Oracle

El gateway de aplicación se puede desplegar mediante el uso de OVA o de Docker. Descubra cómo desplegar el contenedor Docker del gateway de aplicación de Oracle.

Requisitos

  • Descargue la imagen de docker del gateway de aplicación. Abra el menú de navegación y seleccione Identidad y seguridad. En Identidad, seleccione Dominios. Haga clic en el nombre del dominio de identidad en el que desea trabajar. Puede que necesite cambiar el compartimento para buscar el dominio que desee. A continuación, haga clic en Configuración y, a continuación, en Descargas.
  • Cree un archivo de cartera que contenga el identificador de cliente y el secreto de cliente del gateway de aplicación que se creó en la consola de administración. Asigne al archivo de cartera el nombre cwallet.sso y copiarlo en la carpeta local para que el contenedor pueda cargar el archivo. Nota: La herramienta de cartera se puede descargar desde la consola de IAM. En la consola de IAM, amplíe el Cajón de navegación, seleccione Configuración y, a continuación, seleccione Descargas.
  • Instale Docker (comando: $ yum install docker-engine).
  • Agregue el usuario actual al grupo Docker (comando: $ sudo usermod -a -G docker $USER).

Extracción de la imagen de Docker

Si la imagen de Docker está en formato .tar.gz, debe utilizar los siguientes comandos para extraer la imagen para poder crear el contenedor.
  1. Cargue el archivo .tar.gz en el registro de Docker local. Comando: $ docker load -i <.tar.gz file>
  2. Compruebe que puede ver la imagen en el registro de Docker local. comando: $ docker images

Creación del contenedor de gateway de aplicación

Definición de las variables de entorno de gateway de aplicación

Para ejecutar el contenedor Docker de gateway de aplicación, se deben definir las siguientes variables de entorno en el archivo appgateway-env. Importante: no se realiza ninguna validación en estos valores. Si configura valores no válidos, la fallará creación del contenedor Docker del gateway de aplicación.

  • CG_APP_TENANT=<tenant name>
  • IDCS_INSTANCE_URL=<idcs instance url>. URL necesaria para acceder a la instancia de IAM.
  • NGINX_DNS_RESOLVER=<resolver ip>. Configure el servidor de nombres que se encuentra en el archivo /etc/resolv.conf. El valor por defecto es 127.0.0.1.

Ejecutar Docker

Utilice el siguiente comando para ejecutar Docker.
Nota

La carpeta local está montada como volumen y se puede acceder a ella en el contenedor Docker.

El archivo de cartera (que contiene el identificador de cliente y el secreto de cliente) que ha creado como requisito (cwallet.sso) se debe copiar en la carpeta local para que el contenedor pueda hacer referencia al archivo.

$ docker run -it -d 
--name <container name> 
--env-file <path to env file>  
--env HOST_MACHINE=`hostname -f` 
--volume <local folder>/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=host/<User-defined bridge name> <image name>

Ejemplo de contenedor con red de host sin asignación de puerto

A continuación, se muestra un ejemplo de red de host sin asignación de puerto. Esto solo se aplica para números de puerto mayores que 1024.
Nota

Si el número de puerto configurado para el host de gateway de aplicación es menor que 1024, por lo que debe utilizar la red de puente para Docker, junto con la asignación de puerto. Consulte el siguiente ejemplo del comando Red de puente con asignación de puerto para ejecutar el contenedor Docker.
$ docker run -it -d  
--name appgateway 
--env-file appgateway-env 
--env HOST_MACHINE=`hostname -f` 
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso  
--net=host opc-delivery.docker.acme.com/idcs/appgateway:RELEASE-BUILDNUMBER

Ejemplo de red de puente con asignación de puerto

A continuación se muestra un ejemplo de red de puente con asignación de puerto (puertos del 80 al 65535).

Requisito: antes de utilizar la configuración de red de puente, agregue/actualice iptables a true, en el archivo /etc/docker/daemon.json. Esto permite al daemon de Docker editar las reglas de filtro de iptables necesarias para la asignación de puerto.

$ docker run -it -p 80:9000  -d  
--name appgateway 
--env-file /home/<username>/dev/appgateway_pool/appgateway_env --env HOST_MACHINE=`hostname -f`
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso   
--net=bridge-net  idcs.docker.acme.com/idcs/appgateway: RELEASE-BUILDNUMBER

Nota: Docker actualiza internamente iptables/firewalld con las rutas para el puerto cuando se ejecuta el comando anterior.

Pasos de contenedor adicionales

Si el host está configurado como HTTPS, se requieren los siguientes pasos adicionales para copiar los certificados en el contenedor.
  1. Los certificados SSL configurados se deben copiar en la ubicación especificada en Propiedades adicionales. Vaya a Seguridad, Gateways de aplicación, <Gateway>, Hosts, Propiedades adicionales y anote la ubicación.
  2. Ejecute comandos como los siguientes. Nota: La ubicación del certificado depende de la ubicación especificada en el host de los gateways de aplicación.
    $ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.cert appgateway:/scratch/docker/cloudgate/certs/my-appgateway.cert
    $ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.key appgateway:/scratch/docker/cloudgate/certs/my-appgateway.key

Más información

  • ¿Cómo puedo saber si mi contenedor se ha creado correctamente?

    Ejecute el comando: $ docker ps -a y asegúrese de que STATUS está Activo en la lista correspondiente al nombre del contenedor.

  • Si el STATUS del contenedor muestra que ha finalizado, ¿cómo puedo comprobar los logs para determinar por qué se ha terminado el contenedor?

    Ejecute el comando: $ docker logs <container name>. Este comando imprime los mensajes de log, los cuales contienen los mensajes de log impresos por el gateway de aplicación.

  • ¿Cómo puedo editar el archivo cloudgate.config dentro del contenedor?

    Ejecute el comando: $ docker exec -it <container name> bash.

    Ejecute este comando para acceder al contenedor si este se está ejecutando con un shell Bash. Una vez dentro del contenedor, puede editar los archivos mediante el editor Nano.

  • ¿Se pueden imprimir los logs de acceso en formato JSON?

    Sí, puede imprimir los logs de acceso en formato JSON. Agregue las líneas siguientes al archivo /usr/local/nginx/conf/nginx.conf, dentro de un bloque HTTP y, a continuación, reinicie el gateway de aplicación.
    log_format jsonf escape=json '{"remote_addr": "$remote_addr", "remote_user":
          "$remote_user", "time": [$time_local], "request": "$request", "status": $status,
          "body_bytes_sent": $body_bytes_sent, "http_referer": "$http_referer", "user_agent":
          "$http_user_agent", "x_forwarded_for": "$http_x_forwarded_for"}'; access_log                    
          /usr/local/nginx/logs/access.log jsonf;

    Nota: Puede editar los campos JSON en los que está interesado eliminando o agregando la variable NGINX.