Observação:

Implantar o Oracle FLEXCUBE no OKE

Introdução

O Oracle FLEXCUBE Universal Banking requer que várias etapas sejam executadas antes de ter um ambiente ativo e em execução. Sendo um aplicativo Java Enterprise Edition (JEE), ele inclui uma base de software mínima a ser instalada, como banco de dados e servidor de aplicativos. Para este exemplo, o Oracle WebLogic e o Oracle Database são usados como parte da pilha técnica. Para ativar um sistema completo e em execução, uma implantação padrão seguiria estas etapas:

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

Um instalador de aplicativo executa as etapas iniciais. O processo é repetível, mas também é demorado, o que significa que, dependendo da complexidade do ambiente a ser criado, pode levar vários dias para implantar o sistema. Uma maneira de melhorar esse processo é automatizar a maioria dele e é aí que as estratégias de conteinerização podem beneficiar esses tipos de arquiteturas.

As primeiras 7 etapas listadas antes podem ser totalmente automatizadas usando contêineres, como imagens do Docker e uma combinação de ferramentas para manter e gerenciar isso. Os dados configurados no banco de dados tornam-se um artefato de seed replicável e a camada do aplicativo é transformada em uma imagem já ajustada e armazenada como uma cópia mestre. O Oracle Cloud Infrastructure (OCI) então fornece elementos para replicar a qualquer momento, um ambiente completo baseado nessa cópia mestre do sistema.

Observação:

Objetivos

Pré-requisitos

Observação:

Tarefa 1: Criar um Servidor de Administração WebLogic

Vamos começar com um POD de Servidor Admin simples WebLogic no seu cluster do Kubernetes.

Tarefa 2: Obter a senha do banco de dados no formato AES256

Verifique o backup do banco de dados FLEXCUBE e obtenha a senha do banco de dados no formato AES256.

Tarefa 3: Executar uma implantação manual com o kubectl

Você pode implantar o FLEXCUBE (fcubs) no cluster do OKE com o comando kubectl. Ele poderá ser feito na sua máquina local se você tiver configurado o acesso ao cluster do OKE para a ferramenta de comando kubectl.

Vamos entender o arquivo integrated145.yaml

O arquivo yaml contém alguns parâmetros importantes para criar o pod: inclui o nome da implantação, reconhece o IP interno/nome do host, onde selecionar a imagem de WebLogic, a conexão jdbc e o acesso do banco de dados criptografado.

yaml1.png

No mesmo arquivo yaml, também é definido o tamanho esperado pelo pod, considerando o número de recursos necessários e até o limite que ele pode crescer em caso de aumento do consumo.

yaml2.png

As portas a serem expostas também são definidas no arquivo yaml, o que permite uma segurança personalizada. O aplicativo pode ser acessado pelo usuário comercial, pela console WebLogic pelo administrador, pelos serviços web pelos desenvolvedores, e assim por diante.

yaml3.png

Observação: Neste cenário, criamos todos os serviços no mesmo POD. Para escalar, temos que escalar tudo. Uma boa maneira de quebrar um monólito seria instanciar diferentes pods usando diferentes portas sendo expostas em diferentes servidores WebLogic. Consequentemente, os pods podem ser dimensionados de forma independente.

Como exemplo, um POD de serviços Web fortemente usado em integrações pode exigir e usar 10 núcleos e escala sempre que necessário, enquanto o aplicativo (implantado no outro pod) exigirá apenas 2 núcleos e terá um comportamento mais "constante".

Este é o arquivo 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

Observação: Resiliência - A implantação do FLEXCUBE é resiliente; portanto, se o WebLogic ou o FLEXCUBE ficar inativo, o cluster do Kubernetes será carregado e executado novamente. O responsável por isso é a investigação de vida dentro do arquivo integrated145.yaml. Remova o comentário das linhas a seguir se quiser ativar um cheque no contêiner.

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

Vamos entender alguns arquivos de script

Alguns arquivos são necessários para:

FLEXCUBE-Package.zip

Este pacote é um arquivo zip. Ele contém todos os scripts necessários para configurar e executar a instância do FLEXCUBE. O conteúdo deste pacote está na pasta scripts.zip. Este pacote contém:

Observação: A pasta extra-scripts.zip contém mais scripts que serão úteis para tarefas adicionais. Não faz parte do núcleo deste tutorial.

Preparar o arquivo YAML

Nesta etapa, você precisa configurar o arquivo integrated145.yaml. Esse arquivo YAML é responsável por implantar o aplicativo, o acesso ao aplicativo por meio de um balanceador de carga e criar um armazenamento para persistência. A configuração é basicamente colocar as informações do banco de dados no arquivo YAML.

  1. Localize esta linha no arquivo integrated145.yaml:

    integrado-yaml-line1

  2. Role e localize a seguinte linha: sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

  3. Altere x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com com seu ponto final DBaaS.

  4. Role e localize a seguinte linha: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

  5. Altere o valor {AES256} com sua senha gerada na etapa anterior.

Execute o arquivo integrated145.yaml

Aplicativo FLEXCUBE na Porta 7004

interface flexcube

Serviço SOAP na Porta 7005

serviço de sabão

Tarefa 4: Automatizar a implantação do FLEXCUBE

Vamos fazer essa tarefa com o Visual Builder Studio. Essa ferramenta faz parte do OCI e é semelhante ao Jenkins. Portanto, se você usar o Jenkins, poderá configurar o CI/CD com ajustes secundários.

  1. Crie seu Compromisso para o projeto FLEXCUBE Git. Configure o projeto FLEXCUBE Git na configuração do Visual Builder Studio (ou Jenkins).

    vbst-git-config.png

  2. Crie duas variáveis no pipeline.

    • JDBCString: Contém a String JDBC. Exemplo: jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

    • JDBCPassword: Contém um formato de senha AES256. Exemplo: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

    No Visual Builder, você pode criar as variáveis como esta:

    vbst-config-parameters.png

  3. Crie as duas etapas a seguir no pipeline: Etapa da CLI do OCI: Necessária para criar a conexão com o tenant do cluster do OKE e Etapa do UNIX Shell: Necessária para executar o processo de implantação.

    1. Na Configuração do Job no Visual Builder Studio, clique em Adicionar Novo e selecione OCICli. Você precisa colocar os parâmetros do OCI para autorizar o Visual Builder Studio a operar com sua tenancy e cluster do OKE.

      • OCID do Usuário
      • Impressão Digital: Configure o acesso à CLI do OCI e faça upload de uma chave pública
      • OCID da Tenancy
      • Chave Privada: O par de chaves privadas da chave pública submetida a upload na Impressão Digital
      • Região: A região do cluster do OKE
      • Frase-senha: se você tiver uma senha em sua chave privada
    2. Clique em Adicionar Novo e selecione Shell do UNIX. Adicione este script na caixa:

      #  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
      
      

      Observação: Obtenha o OCID do OKE no seu tenant e adicione a linha "oci ce cluster...". O arquivo integrated145-devops.yaml é semelhante ao arquivo integrated145.yaml, mas preparado para o CI/CD.

      No Visual Builder Studio, os seguintes detalhes são exibidos:

      vbst-steps-config.png

  4. Inicie seu pipeline e aguarde a implantação. Você pode listar os serviços disponíveis com o seguinte comando:

    kubectl get svc

    NOME TYPE CLUSTER-IP IP EXTERNO PORTA(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

Tarefa 5: Atualizar tabelas de banco de dados para configurar sua instância do FLEXCUBE

Tarefa 6: Excluir a implantação do FLEXCUBE

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.