Remarque :

Déployer Oracle FLEXCUBE sur OKE

Introduction

Oracle FLEXCUBE Universal Banking nécessite plusieurs étapes pour qu'un environnement soit opérationnel. Etant une application JEE (Java Enterprise Edition), elle inclut une base logicielle minimale à installer, telle que la base de données et le serveur d'applications. Pour cet exemple, Oracle WebLogic et Oracle Database sont utilisés dans le cadre de la pile technique. Pour activer un système complet et en cours d'exécution, un déploiement standard doit suivre les étapes suivantes :

1. Install Oracle Database
2. Install Oracle Weblogic Fusion Middleware Infrastructure
3. Install Oracle FLEXCUBE database artifacts
4. Install Oracle FLEXCUBE application server artifacts
5. Configure initial setup
6. Tune database
7. Tune application
8. Personalize as per business needs

Un programme d'installation d'application effectue les étapes initiales. Le processus peut être répété, mais il prend également beaucoup de temps, ce qui signifie que, en fonction de la complexité de l'environnement à créer, le déploiement du système peut prendre plusieurs jours. Une façon d'améliorer ce processus est d'automatiser la plupart d'entre eux et c'est là que les stratégies de mise en conteneur peuvent bénéficier de ces types d'architectures.

Les 7 premières étapes énumérées précédemment peuvent être entièrement automatisées à l'aide de conteneurs, tels que des images Docker et une combinaison d'outils pour le maintenir et le gérer. Les données configurées dans la base de données deviennent un artefact prédéfini réplicable et la couche d'application est transformée en une image déjà réglée et stockée en tant que copie maître. Oracle Cloud Infrastructure (OCI) fournit ensuite des éléments pour répliquer à tout moment un environnement complet basé sur cette copie maître du système.

Remarque :

Objectifs

Prérequis

Remarque :

Tâche 1 : création d'un serveur d'administration WebLogic

Commençons par un simple POD de serveur d'administration WebLogic dans votre cluster Kubernetes.

Tâche 2 : obtention du mot de passe de base de données au format AES256

Vérifiez la sauvegarde de la base de données FLEXCUBE et obtenez le mot de passe de la base de données au format AES256.

Tâche 3 : Exécuter un déploiement manuel avec kubectl

Vous pouvez déployer FLEXCUBE (fcubs) dans votre cluster OKE à l'aide de la commande kubectl. Elle peut être effectuée sur votre machine locale si vous avez configuré l'accès au cluster OKE pour l'outil de commande kubectl.

Comprenons le fichier integrated145.yaml

Le fichier yaml contient quelques paramètres importants pour créer le pod : inclut le nom du déploiement, reconnaît l'adresse IP/le nom d'hôte interne, où choisir l'image à partir de WebLogic, la connexion JDBC et l'accès à la base de données chiffré.

yaml1.png

Dans le même fichier yaml, il est également défini le dimensionnement attendu par le pod, en tenant compte du nombre de ressources nécessaires et jusqu'à la limite qu'il peut augmenter en cas d'augmentation de la consommation.

yaml2.png

Les ports à exposer sont également définis dans le fichier yaml, ce qui permet une sécurité personnalisée. L'utilisateur métier peut accéder à l'application, à la console WebLogic par l'administrateur, aux services Web par les développeurs, etc.

yaml3.png

Remarque : dans ce scénario, nous avons créé tous les services dans le même POD. Pour évoluer, nous devons tout faire. Une bonne façon de casser un monolithe serait d'instancier différents pods à l'aide de différents ports exposés dans différents serveurs WebLogic. Par conséquent, les pods peuvent être mis à l'échelle indépendamment.

Par exemple, un POD de services Web fortement utilisé dans les intégrations peut nécessiter et utiliser 10 coeurs et évoluer si nécessaire, tandis que l'application (déployée dans l'autre pod) nécessite seulement 2 coeurs et a un comportement plus "constant".

Il s'agit du fichier integrated145.yaml :

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: flexcubeclaim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: oci-bv
  resources:
    requests:
      storage: 500Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: integrated145-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: integrated145
  template:
    metadata:
      labels:
        app: integrated145
    spec:
      hostname: integrated145
      hostAliases:
      - ip: "127.0.0.1"
        hostnames:
        - "fcubs.oracle.com"
      containers:
      - name: integrated145
        image: gru.ocir.io/idvkxij5qkne/oraclefmw-infra:12.2.1.4.0_jdk8u281_pt34080315_apr22
        command: [ "/bin/sh", "-c"]
        args:
         [ "sleep 180; su - gsh ; cd /; yum -y install wget; wget https://objectstorage.us-ashburn-1.oraclecloud.com/p/dX80UuetlAvWOEbvQNMBv47H3ZPR-zZHJJmTsu_GQ66icfgFaPSSu_97j8q3Fyrp/n/idcci5ks1puo/b/flexcubeBucketNewVersion/o/initializeConfig.sh; yum -y install unzip; sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99; while true; do sleep 30; done;" ]
        ports:
        - name: port7001
          containerPort: 7001
        - name: port7002
          containerPort: 7002
        - name: port7003
          containerPort: 7003
        - name: port7004
          containerPort: 7004
        - name: port7005
          containerPort: 7005
        - name: port7006
          containerPort: 7006
        - name: port7007
          containerPort: 7007
        - name: port7008
          containerPort: 7008
        - name: port7009
          containerPort: 7009
        - name: port7010
          containerPort: 7010
        - name: port7011
          containerPort: 7011
        - name: port7012
          containerPort: 7012
        - name: port7013
          containerPort: 7013
        - name: port7014
          containerPort: 7014
        - name: port7015
          containerPort: 7015
        - name: port7016
          containerPort: 7016
        - name: port7017
          containerPort: 7017
        - name: port7018
          containerPort: 7018
        - name: port7019
          containerPort: 7019
        - name: port7020
          containerPort: 7020
        - name: port5556
          containerPort: 5556
#        livenessProbe:
#          httpGet:
#            path: /console
#            port: 7001
#          initialDelaySeconds: 3000
#          timeoutSeconds: 30
#          periodSeconds: 300
#          failureThreshold: 3
        volumeMounts:
          - name: data
            mountPath: /scratch/gsh/kernel145
            readOnly: false
        resources:
          requests:
            cpu: "5"
            memory: "36Gi"
            #ephemeral-storage: "500Gi"
          limits:
            cpu: "8"
            memory: "64Gi"
            #ephemeral-storage: "500Gi"
#      restartPolicy: Always
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: flexcubeclaim
      imagePullSecrets:
      - name: ocirsecret
---
apiVersion: v1
kind: Service
metadata:
  name: integrated145-service
  labels:
    app: integrated145
#  annotations:
#    service.beta.kubernetes.io/oci-load-balancer-internal: "true"
#    service.beta.kubernetes.io/oci-load-balancer-shape: "100Mbps"
#    service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaa.........................zjyrza"
spec:
  selector:
    app: integrated145
  ports:
    - port: 7004
      targetPort: 7004
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: integrated145-service-weblogic
  labels:
    app: integrated145
#  annotations:
#    service.beta.kubernetes.io/oci-load-balancer-internal: "true"
#    service.beta.kubernetes.io/oci-load-balancer-shape: "100Mbps"
#    service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaa.........................zjyrza"
spec:
  selector:
    app: integrated145
  ports:
    - port: 7001
      targetPort: 7001
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name:  or Jenkins
  labels:
    app: integrated145
#  annotations:
#    service.beta.kubernetes.io/oci-load-balancer-internal: "true"
#    service.beta.kubernetes.io/oci-load-balancer-shape: "100Mbps"
#    service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaa.........................zjyrza"
spec:
  selector:
    app: integrated145
  ports:
    - port: 7005
      targetPort: 7005
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: integrated145-webservices2
  labels:
    app: integrated145
#  annotations:
#    service.beta.kubernetes.io/oci-load-balancer-internal: "true"
#    service.beta.kubernetes.io/oci-load-balancer-shape: "100Mbps"
#    service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaa.........................zjyrza"
spec:
  selector:
    app: integrated145
  ports:
    - port: 7009
      targetPort: 7009
  type: LoadBalancer

Remarque : Résilience - Le déploiement FLEXCUBE est résilient. Par conséquent, si WebLogic ou FLEXCUBE tombe en panne, le cluster Kubernetes se charge et s'exécute à nouveau. Le responsable de cela est le livenessprobe dans le fichier integrated145.yaml. Annulez la mise en commentaire des lignes suivantes si vous souhaitez activer une réinsertion dans votre conteneur.

#        livenessProbe:
#          httpGet:
#            path: /console
#            port: 7001
#          initialDelaySeconds: 3000
#          timeoutSeconds: 30
#          periodSeconds: 300
#          failureThreshold: 3
.
.
.
#      restartPolicy: Always

Comprenons quelques fichiers script

Certains fichiers sont requis pour :

FLEXCUBE-Package.zip

Ce package est un fichier ZIP. Il contient tous les scripts nécessaires pour configurer et exécuter l'instance FLEXCUBE. Le contenu de ce package se trouve dans le dossier scripts.zip. Ce package contient :

Remarque : le dossier extra-scripts.zip contient d'autres scripts qui seront utiles pour d'autres tâches. Ce n'est pas une partie du cœur de ce tutoriel.

Préparer le fichier YAML

Cette étape consiste à configurer le fichier integrated145.yaml. Ce fichier YAML est responsable du déploiement de l'application, de l'accès à l'application via un équilibreur de charge et de la création d'un stockage pour la persistance. La configuration consiste essentiellement à placer les informations de la base de données dans le fichier YAML.

  1. Recherchez cette ligne dans le fichier integrated145.yaml :

    intégré-yaml-line1

  2. Faites défiler la page et recherchez la ligne suivante : sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

  3. Modifiez x.x.x.x :1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com avec votre adresse DBaaS.

  4. Faites défiler la page et recherchez la ligne suivante : {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

  5. Modifiez la valeur {AES256} avec le mot de passe généré à l'étape précédente.

Exécutez le fichier integrated145.yaml.

Application FLEXCUBE sur le port 7004

interface flexcube

Service SOAP sur le port 7005

service de savon

Tâche 4 : automatisation du déploiement FLEXCUBE

Effectuez cette tâche avec Visual Builder Studio. Cet outil fait partie d'OCI et est similaire à Jenkins. Par conséquent, si vous utilisez Jenkins, vous pouvez configurer l'intégration continue et le déploiement continu avec des ajustements mineurs.

  1. Créez votre rendez-vous pour le projet FLEXCUBE Git. Vous devez configurer le projet FLEXCUBE Git dans votre configuration Visual Builder Studio (ou Jenkins).

    vbst-git-config.png

  2. Créez deux variables dans le pipeline.

    • JDBCString : contient la chaîne JDBC. Exemple : jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

    • JDBCPassword : contient un format de mot de passe AES256. Exemple : {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

    Dans Visual Builder, vous pouvez créer les variables comme suit :

    vbst-config-parameters.png

  3. Créez les deux étapes suivantes dans le pipeline : Etape de l'interface de ligne de commande OCI : nécessaire pour créer la connexion avec le locataire du cluster OKE et Etape du shell UNIX : nécessaire pour exécuter le processus de déploiement.

    1. Dans Configuration de travail dans Visual Builder Studio, cliquez sur Ajouter nouveau et sélectionnez OCICli. Vous devez placer les paramètres OCI pour autoriser Visual Builder Studio à fonctionner avec votre location et votre cluster OKE.

      • OCID utilisateur
      • Empreinte : configurez l'accès à l'interface de ligne de commande OCI et téléchargez une clé publique
      • OCID de location
      • Clé privée : paire de clés privées de la clé publique téléchargée dans l'empreinte
      • Région : région de votre cluster OKE
      • Phrase de passe : si vous avez un mot de passe dans votre clé privée
    2. Cliquez sur Ajouter nouveau et sélectionnez Shell UNIX. Ajoutez ce script dans la zone :

      #  Prepare for kubectl from OCI CLI
      mkdir -p $HOME/.kube
      oci ce cluster create-kubeconfig --cluster-id <OCID of your OKE Cluster> --file $HOME/.kube/config --region us-ashburn-1 --token-version 2.0.0
      export KUBECONFIG=$HOME/.kube/config
      # Set Variables
      export JDBCString=$JDBCString
      export JDBCPassword=$JDBCPassword
      # setup the JDBC variables in integrated145-devops.yaml
      sed -i "s~--JDBCString--~$JDBCString~g" ./files/scripts/integrated145-devops.yaml
      sed -i "s~--JDBCPassword--~$JDBCPassword~g" ./files/scripts/integrated145-devops.yaml
      # Deploy integrated145
      kubectl config view
      kubectl replace -f ./files/scripts/integrated145-devops.yaml --force
      
      

      Remarque : obtenez l'OCID OKE dans votre locataire et ajoutez la ligne "oci ce cluster...". Le fichier integrated145-devops.yaml est similaire au fichier integrated145.yaml, mais préparé pour l'intégration continue et le déploiement continu.

      Dans Visual Builder Studio, les détails suivants sont affichés :

      vbst-steps-config.png

  4. Démarrez le pipeline et attendez le déploiement. Vous pouvez répertorier les services disponibles à l'aide de la commande suivante :

    kubectl get svc

    NAME TYPE CLUSTER-IP ADRESSE EXTERNE PORT(S) AGE
    integrated145-service LoadBalancer 10.x.x.x 210.x.x.x 7004:30868/TCP 200d
    integrated145-service-weblogic LoadBalancer 10.x.x.x 210.x.x.x 7001:32071/TCP 200d
    integrated145-webservices LoadBalancer 10.x.x.x 210.x.x.x 7005:30415/TCP 200d
    integrated145-webservices2 LoadBalancer 10.x.x.x 210.x.x.x 7009:30759/TCP 200d

Tâche 5 : mettez à jour les tables de base de données pour configurer votre instance FLEXCUBE.

Tâche 6 : suppression du déploiement FLEXCUBE

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour consulter la documentation produit, consultez Oracle Help Center.