Déploiement du conteneur Docker de la passerelle d'application Oracle

Vous pouvez déployer la passerelle d'application à l'aide d'OVA ou de Docker. Découvrez comment déployer le conteneur Docker de la passerelle d'application Oracle.

Prérequis

  • Téléchargez l'image de 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. Il est possible que vous deviez changer de 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 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 le prendre en compte. Remarque : vous pouvez télécharger l'outil de portefeuille à partir de la console IAM. Dans la console IAM, développez le volet de navigation, sélectionnez Paramètres, puis Téléchargements.
  • Installez Docker (commande : $ yum install docker-engine).
  • Ajoutez l'utilisateur en cours au groupe Docker (commande : $ sudo usermod -a -G docker $USER).

Extraction de l'image Docker

Si l'image Docker est au format .tar.gz, vous devez utiliser les commandes suivantes pour extraire l'image afin de pouvoir créer le conteneur.
  1. Chargez le fichier .tar.gz dans le registre Docker local. Commande : $ docker load -i <fichier .tar.gz>
  2. Vérifiez que l'image est présente dans le registre Docker local. Commande : $ docker images

Création du conteneur de la passerelle d'application

Définition des 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=<tenant name>
  • IDCS_INSTANCE_URL=<idcs instance url>. URL requise pour accéder à l'instance IAM.
  • NGINX_DNS_RESOLVER=<resolver ip>. Configurez le serveur de noms trouvé dans le fichier /etc/resolv.conf. La valeur par défaut est 127.0.0.1.

Exécution de Docker

Utilisez la commande suivante pour exécuter Docker.
Remarque

Le dossier local est monté en tant que volume et 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 prérequis (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 mise en réseau hôte sans correspondance de ports

Voici un exemple de mise en réseau hôte sans correspondance de ports. Il concerne uniquement les numéros de port supérieurs à 1024.
Remarque

Si le numéro de port configuré pour l'hôte de la passerelle d'application est inférieur à 1024, vous devez utiliser un réseau ponté pour Docker, ainsi que la correspondance de ports. Reportez-vous à l'exemple de commande Réseau ponté avec correspondance de ports 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éseau ponté avec correspondance de ports

Voici un exemple de réseau ponté avec correspondance de ports (ports 80 à 65535).

Prérequis : avant d'utiliser la configuration de réseau ponté, ajoutez/mettez à jour iptables en le définissant sur true, dans le fichier /etc/docker/daemon.json. Le démon Docker peut ainsi modifier les règles de filtre iptables requises pour la correspondance de ports.

$ 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

Remarque : Docker met à jour en interne iptables/firewalld avec les routages du port, lorsque la commande ci-dessus est exécutée.

Etapes de conteneur supplémentaire

Si l'hôte est configuré en tant que HTTPS, les étapes supplémentaires suivantes sont requises pour copier les certificats vers le conteneur.
  1. Les certificats SSL configurés doivent être copiés vers l'emplacement spécifié dans Propriétés supplémentaires. Accédez à Sécurité, Passerelles d'application, <Passerelle>, Hôtes, Propriétés supplémentaires et notez l'emplacement.
  2. Exécutez des commandes telles que les suivantes. Remarque : l'emplacement du certificat dépend de l'emplacement indiqué 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

Informations complémentaires

  • Comment savoir si mon conteneur a été créé ?

    Exécutez la commande $ docker ps -a et assurez-vous que STATUS a la valeur Démarré dans la liste correspondant au nom de votre conteneur.

  • Si le statut du conteneur est Fermé, comment consulter les journaux afin de déterminer pourquoi le conteneur a pris fin ?

    Exécutez la commande $ docker logs <nom du conteneur>. Cette commande imprime les messages de journal qui contiennent ceux générés par la passerelle d'application.

  • Comment modifier le fichier cloudgate.config dans le conteneur ?

    Exécutez la commande $ docker exec -it <nom du conteneur> bash.

    Exécutez cette commande pour accéder au conteneur si celui-ci est en cours d'exécution avec un shell de type bash. Une fois dans le conteneur, vous pouvez modifier les fichiers à l'aide de l'éditeur Nano.

  • Est-il possible d'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 au 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;

    Remarque : vous pouvez modifier les champs JSON qui vous intéressent en enlevant ou en ajoutant la variable NGINX.