ノート:

OKEへのOracle FLEXCUBEのデプロイ

イントロダクション

Oracle FLEXCUBE Universal Bankingでは、環境を起動して実行する前に、いくつかのステップを実行する必要があります。Java Enterprise Edition (JEE)アプリケーションであるため、データベースやアプリケーション・サーバーなど、インストールする最小限のソフトウェア・ベースが含まれます。この例では、Oracle WebLogicとOracle Databaseが技術スタックの一部として使用されます。システムの完全稼働を有効にするために、標準デプロイメントは次のステップに従います。

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

アプリケーション・インストーラが初期ステップを実行します。このプロセスは繰り返し可能ですが、時間がかかるため、作成される環境の複雑さに応じて、システムのデプロイに数日かかる場合があります。このプロセスを改善する1つの方法は、ほとんどのプロセスを自動化することであり、コンテナ化戦略によってこのようなタイプのアーキテクチャにメリットがもたらされることです。

前述の最初の7つのステップは、Dockerイメージやそれを保守および管理するためのツールの組合せなどのコンテナを使用して完全に自動化できます。データベースで構成されたデータはレプリケート可能なシード・アーティファクトになり、アプリケーション・レイヤーはすでにチューニングされ、マスター・コピーとして格納されているイメージに変換されます。その後、Oracle Cloud Infrastructure (OCI)は、システムのマスター・コピーに基づく完全な環境である、いつでもレプリケートできる要素を提供します。

ノート:

目的

前提条件

ノート:

タスク1: WebLogic管理サーバーの作成

まず、Kubernetesクラスタ内の単純なWebLogic管理サーバーPODから始めます。

タスク2: AES256形式のデータベース・パスワードの取得

FLEXCUBEデータベースのバックアップを確認し、データベース・パスワードをAES256形式で取得します。

タスク3: kubectlを使用した手動デプロイメントの実行

kubectlコマンドを使用して、OKEクラスタにFLEXCUBE (fcubs)をデプロイできます。kubectlコマンド・ツールのOKEクラスタへのアクセスを構成している場合は、ローカル・マシンで実行できます。

integrated145.yamlファイルを理解しましょう

yamlファイルには、ポッドを作成するためのいくつかの重要なパラメータが含まれています。デプロイメント名、内部IP/ホスト名を認識し、WebLogicからイメージを選択する場所、jdbc接続および暗号化されたデータベース・アクセスが含まれます。

yaml1.png

同じyamlファイルでは、ポッドで想定されるサイズも定義されています。これは、必要なリソースの数と、消費量の増加に備えて増やすことができる制限までを考慮しています。

yaml2.png

公開されるポートもyamlファイルで定義されるため、パーソナライズされたセキュリティが可能になります。アプリケーションには、ビジネス・ユーザー、管理者によるWebLogicコンソール、開発者によるWebサービスなどがアクセスできます。

yaml3.png

ノート: このシナリオでは、すべてのサービスを同じPODで作成しました。スケーリングするには、すべてスケーリングする必要があります。モノリスを破る適切な方法は、異なるWebLogicサーバーで公開されている異なるポートを使用して、異なるポッドをインスタンス化することです。そのため、ポッドは個別にスケーリングできます。

たとえば、統合で頻繁に使用されるWebサービスPODでは、アプリケーション(他のポッドにデプロイ)が2つのコアのみを必要とし、より「一定」な動作を必要とする一方で、必要に応じて10のコアとスケーリングが必要となる場合があります。

これは 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

ノート: 回復性 - FLEXCUBEデプロイメントは回復性があるため、WebLogicまたはFLEXCUBEがダウンした場合、Kubernetesクラスタがロードされ、再度実行されます。これは、integrated145.yamlファイル内のlivenessprobeです。コンテナのチェックインをアクティブ化する場合は、次の行をコメント解除します。

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

いくつかのスクリプト・ファイルを理解しましょう

次のために必要なファイルがあります。

FLEXCUBE - Package.zip

このパッケージはzipファイルです。これには、FLEXCUBEインスタンスの構成および実行に必要なすべてのスクリプトが含まれています。このパッケージの内容は、scripts.zipフォルダにあります。このパッケージの内容は次のとおりです。

ノート: extra-scripts.zipフォルダには、追加のタスクに役立つスクリプトがいくつか含まれています。このチュートリアルのコアの一部ではありません。

YAMLファイルの準備

このステップでは、integrated145.yamlファイルを構成する必要があります。このYAMLファイルは、アプリケーションをデプロイし、ロードバランサを介したアプリケーションへのアクセスと、永続化のためのストレージの作成を担当します。構成は、基本的にデータベース情報をYAMLファイルに格納することです。

  1. integrated145.yamlファイル内で次の行を見つけます。

    統合-yaml-line1

  2. スクロールして次の行を見つけます: sh initializeConfig.sh jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

  3. DBaaSエンドポイントを使用してx.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.comを変更します。

  4. スクロールして次の行を見つけます: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

  5. 前のステップで生成されたパスワードで{AES256}値を変更します。

integrated145.yamlファイルを実行します

ポート7004のFLEXCUBEアプリケーション

flexcubeインタフェース

ポート7005のSOAPサービス

石鹸サービス

タスク4: FLEXCUBEデプロイメントの自動化

Visual Builder Studioでこのタスクを実行します。このツールはOCIの一部であり、Jenkinsに似ています。そのため、Jenkinsを使用する場合は、わずかな調整でCI/CDを構成できます。

  1. FLEXCUBE Gitプロジェクトのアポイントメントを作成します。Visual Builder Studio (またはJenkins)構成でFLEXCUBE Gitプロジェクトを構成する必要があります。

    vbst-git-config.png

  2. パイプラインに2つの変数を作成します。

    • JDBCString: JDBC文字列が含まれます。例: jdbc:oracle:thin:@x.x.x.x:1521/prodpdb.sub0xxxxxxxxx0.arspvcn.oraclevcn.com

    • JDBCPassword: AES256パスワード書式が含まれます。例: {AES256}AgWyiXhc7aM112gNRUwBIWf5QpTpWMlI537LrIfPWjCcmwNCsynBxxg99

    Visual Builderでは、次のような変数を作成できます。

    vbst-config-parameters.png

  3. パイプラインで次の2つのステップを作成します: OCI CLIステップ: OKEクラスタのテナントとの接続の作成に必要で、UNIXシェル・ステップ: デプロイメント・プロセスの実行に必要。

    1. Visual Builder Studio「ジョブ構成」で、「新規追加」をクリックし、OCICliを選択します。Visual Builder StudioがテナンシおよびOKEクラスタで動作することを認可するには、OCIパラメータを設定する必要があります。

      • ユーザーOCID
      • フィンガープリント: OCI CLIへのアクセスを構成し、公開キーをアップロードします
      • テナンシOCID
      • 秘密キー: アップロードした公開キーの秘密キー・ペア(フィンガープリント)
      • リージョン: OKEクラスタのリージョン
      • パスフレーズ: 秘密鍵にパスワードがある場合
    2. 「新規追加」をクリックし、「UNIXシェル」を選択します。このボックスに次のスクリプトを追加します。

      #  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
      
      

      ノート: テナントでOKE OCIDを取得し、「oci ce cluster...」行を追加します。integrated145-devops.yamlファイルは integrated145.yamlファイルに似ていますが、CI/CD用に準備されています。

      Visual Builder Studioには、次の詳細が表示されます。

      vbst-steps-config.png

  4. パイプラインを開始し、デプロイメントを待機します。次のコマンドを使用して、使用可能なサービスを一覧表示できます。

    kubectl get svc

    名前 TYPE クラスタIP 外部IP ポート 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

タスク5: データベース表の更新によるFLEXCUBEインスタンスの構成

タスク6: FLEXCUBEデプロイメントの削除

確認

その他の学習リソース

docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。