Distribuire il contenitore Docker del gateway applicazioni Oracle

Il gateway applicazioni può essere distribuito utilizzando OVA o Docker. Scopri come distribuire il container Docker del gateway applicazioni Oracle.

Prerequisiti

  • Scaricare l'immagine docker del gateway applicazioni. Aprire il menu di navigazione e selezionare Identità e sicurezza. In Identità, selezionare Domini. Fare clic sul nome del dominio di Identity che si desidera utilizzare. Potrebbe essere necessario modificare il compartimento per trovare il dominio desiderato. Fare quindi clic su Impostazioni, quindi su Download.
  • Creare un file wallet contenente l'ID client e il segreto client del gateway applicazioni creato nella console di amministrazione. Assegnare al file wallet il nome cwallet.sso e copiarlo nella cartella locale in modo che il contenitore possa utilizzare il file. Nota: lo strumento wallet può essere scaricato dalla console IAM. Nella console IAM espandere il cassetto di navigazione, selezionare Impostazioni, quindi selezionare Download.
  • Installare Docker (comando: $ yum install docker-engine).
  • Aggiungere l'utente corrente al gruppo Docker (comando: $ sudo usermod -a -G docker $USER).

Estrai l'immagine Docker

Se l'immagine Docker è in formato .tar.gz, è necessario utilizzare i seguenti comandi per estrarre l'immagine prima di poter creare il contenitore.
  1. Caricare il file .tar.gz nel registro Docker locale. Comando: $ docker load -i <.tar.gz file>
  2. Verificare che l'immagine venga visualizzata nel registro Docker locale. Comando: $ docker images

Creare il contenitore del gateway applicazioni

Impostare le variabili di ambiente del gateway applicazioni

Per eseguire il contenitore Docker del gateway applicazioni, è necessario impostare le seguenti variabili di ambiente nel file appgateway-env. Importante: non viene eseguita alcuna convalida per questi valori. Se si configurano valori non validi, la creazione del contenitore Docker del gateway applicazioni non riesce.

  • CG_APP_TENANT=<tenant name>
  • IDCS_INSTANCE_URL=<idcs instance url>. L'URL richiesto per accedere all'istanza IAM.
  • NGINX_DNS_RESOLVER=<resolver ip>. Configurare il nameserver presente nel file /etc/resolv.conf. Il valore predefinito è 127.0.0.1.

Esegui Docker

Utilizzare il comando riportato di seguito per eseguire Docker.
Nota

La cartella locale viene installata come volume ed è accessibile all'interno del contenitore Docker.

Il file wallet (che contiene l'ID client e il segreto client) creato come prerequisito (cwallet.sso) deve essere copiato nella cartella locale in modo che il contenitore possa fare riferimento al file.

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

Contenitore di esempio con rete host senza mapping di porte

Di seguito è riportato un esempio di gestione della rete host senza mapping di porte. Si tratta solo di numeri di porta maggiori di 1024.
Nota

Se il numero di porta configurato per l'host del gateway applicazioni è inferiore a 1024, è necessario utilizzare Bridge Networking per il Docker, insieme al mapping delle porte. Per eseguire il contenitore Docker, vedere l'esempio di comando Bridge Networking with Port Mapping riportato di seguito.
$ 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

Esempio di rete bridge con mapping di porte

Di seguito è riportato un esempio di Bridge Networking con mapping delle porte (porte da 80 a 65535).

Prerequisito: prima di utilizzare la configurazione della rete bridge, aggiungere/aggiornare iptables a true nel file /etc/docker/daemon.json. Ciò consente al daemon Docker di modificare le regole di filtro iptables necessarie per il mapping delle porte.

$ 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: quando viene eseguito il comando precedente, Docker aggiorna internamente iptables/firewalld con gli instradamenti per la porta.

Passi container aggiuntivi

Se l'host è configurato come HTTPS, per copiare i certificati nel contenitore sono necessarie le operazioni aggiuntive riportate di seguito.
  1. I certificati SSL configurati devono essere copiati nella posizione specificata in Proprietà aggiuntive. Andare a Sicurezza, Gateway applicazioni, <Gateway>, Host, Proprietà aggiuntive e prendere nota della posizione.
  2. Eseguire comandi simili ai seguenti. Nota: la posizione del certificato dipende dalla posizione specificata nell'host gateway applicazioni.
    $ 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

Ulteriori informazioni

  • Come faccio a sapere se il mio contenitore è stato creato correttamente?

    Eseguire il comando $ docker ps -a e verificare che STATUS sia Su nella lista corrispondente al nome del contenitore.

  • Se il contenitore STATUS viene chiuso, come si controllano i log per determinare il motivo dell'interruzione del contenitore?

    Eseguire il comando: $ docker logs <container name>. Questo comando stampa i messaggi di log, che contengono i messaggi di log stampati da Gateway applicazioni.

  • Come modificare il file cloudgate.config all'interno del contenitore?

    Eseguire il comando: $ docker exec -it <container name> bash.

    Eseguire questo comando per accedere al contenitore se il contenitore è in esecuzione con una shell Bash. Una volta all'interno del contenitore, è possibile modificare i file utilizzando Nano editor.

  • È possibile stampare i log degli accessi in formato JSON?

    Sì, puoi stampare i log degli accessi in formato JSON. Aggiungere le righe seguenti al file /usr/local/nginx/conf/nginx.conf, all'interno di un blocco HTTP, quindi riavviare il gateway applicazioni.
    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: è possibile modificare i campi JSON interessati rimuovendo o aggiungendo la variabile NGINX.