Hinweis:

Oracle FLEXCUBE auf OKE bereitstellen

Einführung

Oracle FLEXCUBE Universal Banking erfordert mehrere Schritte, bevor eine Umgebung hochgefahren und gestartet wird. Als Java Enterprise Edition-(JEE-)Anwendung umfasst sie eine minimale zu installierende Softwarebasis, wie Datenbank- und Anwendungsserver. In diesem Beispiel werden Oracle WebLogic und Oracle Database als Teil des technischen Stacks verwendet. Um ein voll funktionsfähiges System zu aktivieren, führt ein Standard-Deployment folgende Schritte aus:

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

Ein Anwendungsinstallationsprogramm führt die ersten Schritte aus. Der Prozess kann wiederholt werden, ist aber auch zeitaufwendig. Das bedeutet, dass es je nach Komplexität der zu erstellenden Umgebung einige Tage dauern kann, bis das System bereitgestellt wird. Eine Möglichkeit, diesen Prozess zu verbessern, besteht darin, den größten Teil davon zu automatisieren. Hier können Containerisierungsstrategien von diesen Architekturen profitieren.

Die ersten 7 oben genannten Schritte können vollständig mit Containern wie Docker-Images und einer Kombination von Tools zur Wartung und Verwaltung automatisiert werden. Die in der Datenbank konfigurierten Daten werden zu einem replizierbaren Seed-Artefakt, und der Anwendungslayer wird in ein Image umgewandelt, das bereits als Master-Kopie optimiert und gespeichert wurde. Oracle Cloud Infrastructure (OCI) stellt dann Elemente bereit, die jederzeit repliziert werden können, eine vollständige Umgebung, die auf dieser Masterkopie des Systems basiert.

Hinweis:

Ziele

Voraussetzungen

Hinweis:

Aufgabe 1: WebLogic-Admin-Server erstellen

Beginnen wir mit einem einfachen WebLogic-Admin-Server-POD in Ihrem Kubernetes-Cluster.

Aufgabe 2: Datenbankkennwort im AES256-Format abrufen

Prüfen Sie das Backup der FLEXCUBE-Datenbank, und rufen Sie das Datenbankkennwort im Format AES256 ab.

Aufgabe 3: Manuelles Deployment mit kubectl ausführen

Mit dem Befehl kubectl können Sie FLEXCUBE (fcubs) in Ihrem OKE-Cluster bereitstellen. Sie kann auf Ihrem lokalen Rechner ausgeführt werden, wenn Sie Zugriff auf das OKE-Cluster für das kubectl-Befehlstool konfiguriert haben.

Sehen wir uns die Datei integrated145.yaml an.

Die YAML-Datei enthält einige wichtige Parameter zum Erstellen des Pods: Umfasst den Deployment-Namen, erkennt die interne IP/Hostnamen, wo das Image aus WebLogic, die JDBC-Verbindung und den verschlüsselten Datenbankzugriff ausgewählt werden soll.

yaml1.png

In derselben YAML-Datei wird auch die vom Pod erwartete Größe definiert. Dabei wird die Anzahl der erforderlichen Ressourcen berücksichtigt, und bis zu dem Limit, das bei einer Erhöhung des Verbrauchs anwachsen kann.

yaml2.png

Die bereitzustellenden Ports werden auch in der YAML-Datei definiert, was eine personalisierte Sicherheit ermöglicht. Auf die Anwendung kann der Geschäftsbenutzer, die WebLogic-Konsole durch den Administrator, Webservices durch Entwickler usw. zugreifen.

yaml3.png

Hinweis: In diesem Szenario wurden alle Services in demselben POD erstellt. Um zu skalieren, müssen wir alles skalieren. Eine gute Möglichkeit, einen Monolith zu brechen, besteht darin, unterschiedliche Pods mit verschiedenen Ports zu instanziieren, die in verschiedenen WebLogic-Servern verfügbar gemacht werden. Folglich können die Pods unabhängig skaliert werden.

Als Beispiel könnte ein Webservices-POD, der stark in Integrationen verwendet wird, 10 Cores erfordern und bei Bedarf skalieren, während die Anwendung (im anderen Pod bereitgestellt) nur 2 Cores benötigt und ein "konstanteres" Verhalten aufweist.

Dies ist die Datei 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

Hinweis: Resilienz - Das FLEXCUBE-Deployment ist resilient. Wenn also WebLogic oder FLEXCUBE heruntergefahren wird, wird das Kubernetes-Cluster geladen und erneut ausgeführt. Die Ursache hierfür ist die Livenessprobe innerhalb der Datei integrated145.yaml. Heben Sie die Kommentarzeichen für die folgenden Zeilen auf, wenn Sie einen Check in Ihrem Container aktivieren möchten.

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

Verstehen wir einige Skriptdateien

Einige Dateien sind erforderlich für:

FLEXCUBE-Package.zip

Dieses Paket ist eine ZIP-Datei. Sie enthält alle Skripte, die zum Konfigurieren und Ausführen der FLEXCUBE-Instanz erforderlich sind. Der Inhalt dieses Packages befindet sich im Ordner scripts.zip. Dieses Paket enthält:

Hinweis: Der Ordner extra-scripts.zip enthält einige weitere Skripte, die für zusätzliche Aufgaben nützlich sind. Es ist kein Teil des Kerns für dieses Tutorial.

Vorbereiten der YAML-Datei

In diesem Schritt müssen Sie die Datei integrated145.yaml konfigurieren. Diese YAML-Datei ist dafür verantwortlich, die Anwendung und den Zugriff auf die Anwendung über einen Load Balancer bereitzustellen und einen Speicher für die Persistenz zu erstellen. Die Konfiguration besteht im Wesentlichen darin, die Datenbankinformationen in die YAML-Datei aufzunehmen.

  1. Suchen Sie diese Zeile in der Datei integrated145.yaml:

    integriert-yaml-line1

  2. Scrollen Sie, und suchen Sie die folgende Zeile: sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

  3. Ändern Sie x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com mit dem DBaaS-Endpunkt.

  4. Scrollen Sie, und suchen Sie die folgende Zeile: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

  5. Ändern Sie den Wert {AES256} mit dem im vorherigen Schritt generierten Passwort.

Führen Sie die Datei integrated145.yaml aus.

FLEXCUBE-Anwendung auf Port 7004

Flexcube-Schnittstelle

SOAP-Service auf Port 7005

Seifen-Service

Aufgabe 4: FLEXCUBE-Bereitstellung automatisieren

Führen Sie diese Aufgabe mit Visual Builder Studio aus. Dieses Tool ist Bestandteil von OCI und ähnelt Jenkins. Wenn Sie also Jenkins verwenden, können Sie CI/CD mit geringfügigen Anpassungen konfigurieren.

  1. Erstellen Sie Ihren Termin für das FLEXCUBE Git-Projekt. Sie müssen das FLEXCUBE Git-Projekt in Ihrer Visual Builder Studio-(oder Jenkins-)Konfiguration konfigurieren.

    vbst-git-config.png

  2. Erstellen Sie zwei Variablen in der Pipeline.

    • JDBCString: Enthält die JDBC-Zeichenfolge. Beispiel: jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

    • JDBCPassword: Enthält ein AES256-Kennwortformat. Beispiel: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

    In Visual Builder können Sie die Variablen wie folgt erstellen:

    vbst-config-parameters.png

  3. Erstellen Sie die beiden folgenden Schritte in der Pipeline: OCI-CLI-Schritt: Verbindung mit dem Mandanten Ihres OKE-Clusters und UNIX Shell-Schritt erstellen: Deployment-Prozess muss ausgeführt werden.

    1. Klicken Sie in der Jobkonfiguration in Visual Builder Studio auf Neu hinzufügen, und wählen Sie OCICli aus. Sie müssen die OCI-Parameter angeben, um Visual Builder Studio für den Betrieb mit Ihrem Mandanten und dem OKE-Cluster zu autorisieren.

      • Benutzer-OCID
      • Fingerprint: Konfigurieren Sie den Zugriff auf OCI CLI, und laden Sie einen Public Key hoch
      • Mandanten-OCID
      • Private Key: Das Private-Key-Paar Ihres hochgeladenen Public Keys in Fingerprint
      • Region: Die Region Ihres OKE-Clusters
      • Passphrase: Wenn Sie ein Kennwort in Ihrem Private Key haben
    2. Klicken Sie auf Neu hinzufügen, und wählen Sie UNIX Shell aus. Fügen Sie dieses Skript in das Feld ein:

      #  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
      
      

      Hinweis: Rufen Sie die OKE-OCID in Ihrem Mandanten ab, und fügen Sie die Zeile "oci ce cluster..." hinzu. Die Datei integrated145-devops.yaml ähnelt der Datei integrated145.yaml, ist jedoch für CI/CD vorbereitet.

      In Visual Builder Studio werden die folgenden Details angezeigt:

      vbst-schritten-config.png

  4. Starten Sie die Pipeline, und warten Sie auf das Deployment. Mit dem folgenden Befehl können Sie die verfügbaren Services auflisten:

    kubectl get svc

    NAME TYP CLUSTER-IP EXTERNE IP 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

Aufgabe 5: Datenbanktabellen aktualisieren, um Ihre FLEXCUBE-Instanz zu konfigurieren

Aufgabe 6: FLEXCUBE-Bereitstellung löschen

Bestätigungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.