Nota:

Despliegue de Oracle FLEXCUBE en OKE

Introducción

Oracle FLEXCUBE Universal Banking requiere que se realicen varios pasos antes de activar y ejecutar un entorno. Al ser una aplicación Java Enterprise Edition (JEE), incluye una base de software mínima que se va a instalar, como el servidor de aplicaciones y bases de datos. Para este ejemplo, Oracle WebLogic y Oracle Database se utilizan como parte de la pila técnica. Para activar un sistema completo y en ejecución, un despliegue estándar seguiría estos pasos:

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 instalador de aplicaciones realiza los pasos iniciales. El proceso se puede repetir, pero también requiere tiempo, lo que significa que, en función de la complejidad del entorno que se va a crear, puede tardar varios días en desplegar el sistema. Una forma de mejorar este proceso es automatizar la mayor parte de él y ahí es donde las estrategias de contenedorización pueden beneficiar a este tipo de arquitecturas.

Los primeros 7 pasos mencionados anteriormente se pueden automatizar por completo mediante contenedores, como imágenes de Docker y una combinación de herramientas para mantenerlas y gestionarlas. Los datos configurados en la base de datos se convierten en un artefacto inicial replicable y la capa de aplicación se transforma en una imagen ya ajustada y almacenada como copia maestra. A continuación, Oracle Cloud Infrastructure (OCI) proporciona elementos para replicar en cualquier momento, un entorno completo basado en esa copia maestra del sistema.

Nota:

Objetivos

Requisitos

Nota:

Tarea 1: Creación de un servidor de administración WebLogic

Comencemos con un POD de servidor de administración WebLogic simple en el cluster de Kubernetes.

Tarea 2: obtener la contraseña de la base de datos en formato AES256

Compruebe la copia de seguridad de la base de datos FLEXCUBE y obtenga la contraseña de la base de datos en formato AES256.

Tarea 3: Ejecución de un despliegue manual con kubectl

Puede implementar FLEXCUBE (fcubs) en el cluster de OKE con el comando kubectl. Se puede realizar en el equipo local si ha configurado el acceso al cluster de OKE para la herramienta de comandos kubectl.

Entendamos el archivo integrated145.yaml

El archivo yaml contiene algunos parámetros importantes para crear el pod: incluye el nombre de despliegue, reconoce la IP/nombre de host interno, donde seleccionar la imagen de WebLogic, la conexión jdbc y el acceso a la base de datos cifrada.

yaml1.png

En el mismo archivo yaml, también se define el tamaño esperado por el pod, considerando el número de recursos necesarios y hasta el límite que puede crecer en caso de aumento del consumo.

yaml2.png

Los puertos que se van a exponer también se definen en el archivo yaml, lo que permite una seguridad personalizada. El usuario de negocio, la consola WebLogic, el administrador, los servicios web los desarrolladores, etc., pueden acceder a la aplicación.

yaml3.png

Nota: En este escenario, hemos creado todos los servicios en el mismo POD. Para escalar, tenemos que escalar todo. Una buena forma de romper un monolito sería instanciar diferentes pods utilizando diferentes puertos expuestos en diferentes servidores WebLogic. Por lo tanto, los pods se pueden escalar de forma independiente.

Por ejemplo, un POD de servicios web muy utilizado en integraciones podría requerir y utilizar 10 núcleos y escalar siempre que sea necesario, mientras que la aplicación (desplegada en el otro pod) solo necesitará 2 núcleos y tendrá un comportamiento más "constante".

Este es el archivo 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

Nota: Resiliencia: el despliegue de FLEXCUBE es resiliente; por lo tanto, si WebLogic o FLEXCUBE cae, el cluster de Kubernetes se cargará y se volverá a ejecutar. El responsable de esto es el liveprobe dentro del archivo integrated145.yaml. Elimine el comentario de las siguientes líneas si desea activar una protección en el contenedor.

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

Entendamos algunos archivos de script

Algunos archivos son necesarios para:

FLEXCUBE-Package.zip

Este paquete es un archivo zip. Contiene todos los scripts necesarios para configurar y ejecutar la instancia de FLEXCUBE. El contenido de este paquete está en la carpeta scripts.zip. Este paquete contiene:

Nota: La carpeta extra-scripts.zip contiene algunos scripts más que serán útiles para tareas adicionales. No es una parte del núcleo de este tutorial.

Preparar el archivo YAML

En este paso, debe configurar el archivo integrated145.yaml. Este archivo YAML es responsable de desplegar la aplicación, el acceso a la aplicación a través de un equilibrador de carga y crear un almacenamiento para la persistencia. La configuración es básicamente para colocar la información de la base de datos en el archivo YAML.

  1. Busque esta línea en el archivo integrated145.yaml:

    integrado-yaml-line1

  2. Desplácese y busque la siguiente línea: sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

  3. Cambie x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com con el punto final DBaaS.

  4. Desplácese y busque la siguiente línea: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

  5. Cambie el valor {AES256} con la contraseña generada en el paso anterior.

Ejecute el archivo integrated145.yaml

Aplicación FLEXCUBE en el puerto 7004

interfaz flexcube

Servicio SOAP en el puerto 7005

servicio de jabón

Tarea 4: Automatización del despliegue de FLEXCUBE

Vamos a realizar esta tarea con Visual Builder Studio. Esta herramienta forma parte de OCI y es similar a Jenkins. Por lo tanto, si utiliza Jenkins, puede configurar la integración y el despliegue continuos con ajustes menores.

  1. Cree su cita para el proyecto FLEXCUBE Git. Debe configurar el proyecto FLEXCUBE Git en la configuración de Visual Builder Studio (o Jenkins).

    vbst-git-config.png

  2. Cree dos variables en el pipeline.

    • JDBCString: contiene la cadena JDBC. Ejemplo: jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

    • JDBCPassword: contiene un formato de contraseña AES256. Ejemplo: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

    En Visual Builder, puede crear las variables siguientes:

    vbst-config-parameters.png

  3. Cree los dos pasos siguientes en el pipeline: Paso de CLI de OCI: necesario para crear la conexión con el inquilino del cluster de OKE y Paso de shell de UNIX: necesario para ejecutar el proceso de despliegue.

    1. En Configuración de trabajo en Visual Builder Studio, haga clic en Agregar nuevo y seleccione OCICli. Debe colocar los parámetros de OCI para autorizar que Visual Builder Studio funcione con su arrendamiento y cluster de OKE.

      • OCID de usuario
      • Huella: configure el acceso a la CLI de OCI y cargue una clave pública
      • OCID de arrendamiento
      • Clave privada: el par de claves privadas de la clave pública cargada en la huella digital
      • Región: región del cluster de OKE
      • Frase de contraseña: si tiene una contraseña en su clave privada
    2. Haga clic en Agregar nuevo y seleccione Shell UNIX. Agregue este script en el cuadro:

      #  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
      
      

      Nota: Obtenga el OCID de OKE en su inquilino y agregue la línea "oci ce cluster...". El archivo integrated145-devops.yaml es similar al archivo integrated145.yaml, pero está preparado para CI/CD.

      En Visual Builder Studio, se muestran los siguientes detalles:

      vbst-steps-config.png

  4. Inicie el pipeline y espere a que se realice el despliegue. Puede mostrar los servicios disponibles con el siguiente comando:

    kubectl get svc

    NAME TYPE IP DE CLUSTER ID EXTERNO PUERTOS 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

Tarea 5: Actualizar tablas de base de datos para configurar la instancia de FLEXCUBE

Tarea 6: Supresión del despliegue de FLEXCUBE

Confirmaciones

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.