lundi 15 octobre 2018

Oracle Database sur Openshift

Ici, nous allons mettre en oeuvre la database Oracle 12.2.0.1 sur Openshift.
Pour les essais, on prendra minishift.
On peut trouver la procédure sur le lien suivant:
https://docs.okd.io/latest/minishift/getting-started/index.html


Augmenter la taille de la base:
En effet, la base de donnée Oracle 12.2.0.1 demande environ 13 Gb pour la construction de l'image.
Dans /etc/docker/editer ou créer le fichier daemon.json :
# cat daemon.json 
{
  "storage-driver": "devicemapper",
  "storage-opts": [
    "dm.basesize=50G"
  ]
}
Redémarrer docker :
# systemctl restart docker

Vérification du Base Device Size par la commande docker info:
# docker info | grep Base
 Base Device Size: 53.69GB

Nous pouvons maintenant nous lancer dans la construction de l'image docker Oracle Database 12.2.0.1.
Cette image va être construite à partir des sources de Oracle:
https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance

Télécharger le zip :
https://github.com/oracle/docker-images
$ mkdir oracle12ee
$ cd oracle12ee
$ wget https://github.com/oracle/docker-images/archive/master.zip
$ unzip master.zip
Il faut aussi le binaire linuxx64__database.zip de Oracle à mettre dans le bon répertoire dockerfiles

Lancer le script:
$ cd $HOME/oracle12e/docker-images-master/OracleDatabase/SingleInstance/dockerfiles
$ ./buildDockerImage.sh 

Usage: buildDockerImage.sh -v [version] [-e | -s | -x] [-i] [-o] [Docker build option]
Builds a Docker Image for Oracle Database.
  
Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -i: ignores the MD5 checksums
   -o: passes on Docker build option

* select one edition only: -e, -s, or -x

LICENSE UPL 1.0

Copyright (c) 2014-2018 Oracle and/or its affiliates. All rights reserved.
Pour construire l'image d'une base de données Oracle "Enterprise Edition" dans la version 12.2.0.1:
$ sudo ./buildDockerImage.sh -v 12.2.0.1 -e
Sauvegarder l'image
# docker save -o oracle12.2.0.1-ee oracle/database
Restaurer l'image sur votre repository docker local de votre serveur Openshift:
# docker load -i oracle12.2.0.1-ee oracle/database
Maintenant, nous allons pusher l'image vers la registry d'openshift:
Connaitre l'adresse IP de la registry:
$ minishift openshift registry
172.30.1.1:5000
Seter l'environnement:
$ minishift oc-env
export PATH="/home/serge/.minishift/cache/oc/v3.10.0/linux:$PATH"
# Run this command to configure your shell:
# eval $(minishift oc-env)
$ eval $(minishift oc-env)
Se connecter sur minishift:
$ docker login -u `oc whoami` -p `oc whoami --show-token` 172.30.1.1:5000
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/f074170/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
Création d'un nouveau projet:
$ oc new-project oracle --display-name=Oracle
Tag de l'image avec le nom de la registry:
$ docker tag oracle/database:12.2.0.1-ee 172.30.1.1:5000/oracle/database
Push vers la registry:
$ docker push 172.30.1.1:5000/oracle/database
Il est possible d'utiliser skopeo pour copier l'image entre registry.

Déployer l'image dans openshift:
$ oc new-app --image-stream=database --name=oracle12ee
Exposer les services:
$ oc expose service oracle12ee
Résoudre les pbs de droits avec minishift:
$ ./minishift addon apply anyuid
-- Applying addon 'anyuid':.
 Add-on 'anyuid' changed the default security context constraints to allow pods to run as any user.
 Per default OpenShift runs containers using an arbitrarily assigned user ID.
 Refer to https://docs.okd.io/latest/architecture/additional_concepts/authorization.html#security-context-constraints and
 https://docs.okd.io/latest/creating_images/guidelines.html#openshift-origin-specific-guidelines for more information.

Résoudre les pbs de droits avec OPENSHIFT:

$ oc create serviceaccount useroot

$ oc adm policy add-scc-to-user anyuid -z useroot

$ oc patch dc/oracle12ee --patch '{"spec":{"template":{"spec":{"serviceAccountName": "useroot"}}}}'
 
 
Liens:
https://blog.dbi-services.com/oracle-database-on-openshift/
https://geraldonit.com/2017/08/21/creating-an-oracle-database-docker-image/
https://medium.com/@adilsonbna/importing-an-external-docker-image-into-red-hat-openshift-repository-c25894cd3199
https://piotrminkowski.wordpress.com/tag/openshift/
https://blog.openshift.com/understanding-service-accounts-sccs/

Aucun commentaire:

Enregistrer un commentaire