Déployer le conteneur Docker de la passerelle d'application Oracle
La passerelle d'application peut être déployée à l'aide d'OVA ou de Docker. Voyez comment déployer le conteneur Docker de la passerelle d'application Oracle.
Préalables
- Téléchargez l'image Docker de la passerelle d'application. Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Domaines. Cliquez sur le nom du domaine d'identité dans lequel vous voulez travailler. Vous devrez peut-être modifier le compartiment pour trouver le domaine souhaité. Cliquez ensuite sur Paramètres, puis sur Téléchargements.
- Créez un fichier de portefeuille contenant l'ID client et la clé secrète client de la passerelle d'application qui a été créée dans la console d'administration. Nommez le fichier de portefeuille cwallet.sso et copiez-le dans le dossier local afin que le conteneur puisse utiliser le fichier. Note : L'outil de portefeuille peut être téléchargé à partir de la console IAM. Dans la console IAM, développez le tiroir de navigation, sélectionnez Paramètres, puis Téléchargements.
- Installez Docker (Commande :
$ yum install docker-engine
). - Ajoutez l'utilisateur courant au groupe Docker (Commande :
$ sudo usermod -a -G docker $USER
).
Extraire l'image Docker
.tar.gz
, vous devez utiliser les commandes suivantes pour extraire l'image avant de créer le conteneur. - Chargez le fichier
.tar.gz
dans le registre Docker local. Commande :$ docker load -i <.tar.gz file>
- Vérifiez que l'image figure dans le registre Docker local. Commande :
$ docker images
Créer le conteneur de la passerelle d'application
Définir les variables d'environnement de la passerelle d'application
Pour exécuter le conteneur Docker de la passerelle d'application, les variables d'environnement suivantes doivent être définies dans le fichier appgateway-env
. Important : Aucune validation n'est effectuée sur ces valeurs. Si vous configurez des valeurs non valides, la création du conteneur Docker de la passerelle d'application échoue.
-
CG_APP_TENANT=<nom de locataire>
IDCS_INSTANCE_URL=<url instance idcs>
. URL requise pour accéder à l'instance GIA.NGINX_DNS_RESOLVER=<ip résolveur>
. Configurez le serveur de noms trouvé dans le fichier/etc/resolv.conf
. La valeur par défaut est127.0.0.1
.
Exécuter Docker
Le dossier local est monté en tant que volume et est accessible dans le conteneur Docker.
Le fichier de portefeuille (qui contient l'ID client et la clé secrète client) que vous avez créé en tant que condition préalable (cwallet.sso
) doit être copié dans le dossier local afin que le conteneur puisse référencer le fichier.
$ 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>
Exemple de conteneur avec réseaux hôtes sans mappage de port
Si le numéro de port configuré pour l'hôte de la passerelle d'application est inférieur à 1024, vous devez utiliser les réseaux de pont pour Docker, ainsi que le mappage de port. Voir l'exemple de commande Réseaux de pont avec mappage de port ci-dessous pour exécuter le conteneur 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
Exemple de réseaux de pont avec mappage de port
Voici un exemple de réseaux de pont avec mappage de port (ports 80 à 65535).
Préalable : Avant d'utiliser la configuration de réseaux de pont, ajoutez/mettez à jour les valeurs iptables
à true
dans le fichier /etc/docker/daemon.json
. Cela permet au démon Docker de modifier les règles de filtre iptables requises pour le mappage de port.
$ 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
Note : Docker met à jour en interne les règles iptables/firewalld avec les routes du port, lorsque la commande ci-dessus est exécutée.
Étapes de conteneur supplémentaires
- Les certificats SSL configurés doivent être copiés à l'emplacement spécifié dans Propriétés supplémentaires. Allez à Sécurité, Passerelles d'application, <Passerelle>, Hôtes, Propriétés supplémentaires et notez l'emplacement.
- Exécutez des commandes comme suit. Note : L'emplacement du certificat dépend de l'emplacement que vous avez spécifié dans l'hôte des passerelles d'application.
$ 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
En savoir plus
-
Comment savoir si mon conteneur a été créé avec succès?
Exécutez la commande :
$ docker ps -a
et assurez-vous queSTATUS
est réglé à Up dans la liste correspondant au nom du conteneur. -
Si STATUS a la valeur exited, comment consulter les journaux afin de déterminer pourquoi le conteneur a été arrêté?
Exécutez la commande :
$ docker logs <container name>
. Cette commande imprime les messages du journal, notamment les messages imprimés par la passerelle d'application. -
Comment modifier le fichier cloudgate.config dans le conteneur?
Exécutez la commande :
$ docker exec -it <container name> bash
.Exécutez cette commande pour accéder au conteneur si celui-ci est exécuté avec un interpréteur de commandes Bash. Une fois dans le conteneur, vous pouvez modifier les fichiers à l'aide de l'éditeur Nano.
-
Pouvons-nous imprimer les journaux d'accès au format JSON?
Oui, vous pouvez imprimer les journaux d'accès au format JSON. Ajoutez les lignes ci-dessous dans le fichier/usr/local/nginx/conf/nginx.conf
, dans un bloc HTTP, puis redémarrez la passerelle d'application.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;
Note : Vous pouvez modifier les champs JSON qui vous intéressent en supprimant ou en ajoutant la variable NGINX.