Distribuire il contenitore Docker del gateway applicazioni Oracle
Il gateway applicazioni può essere distribuito utilizzando OVA o Docker. Scopri come distribuire il contenitore Docker di Oracle App Gateway.
Requisiti indispensabili
- Scaricare l'immagine del 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 in cui si desidera lavorare. Potrebbe essere necessario modificare il compartimento per trovare il dominio desiderato. Quindi, fare 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 un 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 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 immagine Docker
.tar.gz, è necessario utilizzare i comandi seguenti per estrarre l'immagine prima di poter creare il contenitore. - Caricare il file
.tar.gznel registro Docker locale. Comando:$ docker load -i <.tar.gz file> - Verificare che l'immagine sia visibile nel registro Docker locale. Comando:
$ docker images
Crea contenitore gateway applicazioni
Impostazione delle 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 su 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>. URL necessario per accedere all'istanza IAM.NGINX_DNS_RESOLVER=<resolver ip>. Configurare il server dei nomi trovato nel file/etc/resolv.conf. Il valore predefinito è127.0.0.1.
Esegui Docker
La cartella locale viene attivata 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 networking host senza mapping di porte
Se il numero di porta configurato per l'host Gateway applicazioni è inferiore a 1024, è necessario utilizzare Bridge Networking per il Docker, insieme al mapping delle porte. Vedere l'esempio di comando Bridge Networking with Port Mapping riportato di seguito per eseguire il contenitore 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-BUILDNUMBEREsempio di networking 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: Docker aggiorna internamente iptables/firewalld con gli instradamenti per la porta, quando viene eseguito il comando sopra riportato.
Passi container extra
- I certificati SSL configurati devono essere copiati nella posizione specificata in Proprietà aggiuntive. Andare a Sicurezza, App Gateway, <Gateway>, Host, Proprietà aggiuntive e prendere nota della posizione.
- Eseguire comandi come quelli riportati di seguito. 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 container è stato creato correttamente?
Eseguire il comando:
$ docker ps -ae assicurarsi cheSTATUSsia Su nell'elenco corrispondente al nome del contenitore. -
Se il contenitore STATUS mostra l'uscita, come controllare 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 dal 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, puoi modificare i file utilizzando l'editor Nano.
-
È 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 App Gateway.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 che si desidera rimuovere o aggiungere la variabile NGINX.