JDeveloperを使用してOracle SOA SuiteおよびOracle Service BusアプリケーションをKubernetes上のOracle SOA Suiteにデプロイします

この項では、Oracle SOA SuiteおよびOracle Service Busコンポジット・アプリケーションをOracle JDeveloperからKubernetes上のOracle SOA Suite環境にデプロイする方法について説明します。

次の手順を実行し、JDeveloperを使用してKubernetes上のOracle SOA Suite環境にデプロイします:

  1. Oracle SOAクイックスタート・コンテナ・イメージを作成します。
    1. Oracle SOAクイックスタート・バイナリfmw_14.1.2.0.0_soa_quickstart_generic.jarおよびfmw_14.1.2.0.0_soa_quickstart_generic2.jarをダウンロードし、両方のバイナリをフォルダ$WORKDIR/create-soa-domain/jdev-support/containerfilesにコピーします。

      デフォルトでは、スクリプトはdockerを使用してOracle SOAクイックスタート・イメージを構築します。podmanを使用するには、次のステップに進む前に、次のパラメータを設定します:

      $ export BUILD_CLI=podman$ export BUILD_OPTS="--format docker"
    2. 次に、Oracle Container RegistryからプルできるOracle JDK17イメージcontainer-registry.oracle.com/java/jdk:17が必要です。Oracle Container Registryにナビゲートし、Oracle Accountを使用してサインインし、Oracle Standard Termsに同意します。Oracleアカウントがまだない場合は、新しいアカウントを作成します。ログイン後、ビルド・ホストでdockerまたはpodman loginコマンドを使用します:
      $ podman login container-registry.oracle.com
      Username: <Oracle Account Username>
      Password: <auth token>
      Login successful.
      
    3. 正常にログインしたら、次のコマンドを実行してJDKイメージをプルします:
      $ podman pull container-registry.oracle.com/java/jdk:17
      
    4. 次のコマンドを実行して、JDeveloperのOracle SOAクイックスタート・イメージを作成します:
      $ sh build.sh -t 14.1.2.0.0

      このステップでは、Oracle SOAクイックスタート・イメージoracle/soajeveloper:14.1.2.0.0と、VNCサーバー・アクセスに必要なパッケージを作成します。

  2. Oracle SOAクイックスタート・イメージoracle/soajeveloper:14.1.2.0.0をコンテナ・レジストリにプッシュして、ドメインをホストしているKubernetesクラスタがプルできるようにします。
    $ podman tag oracle/soajeveloper:14.1.2.0.0 your-registry.com/oracle/soajeveloper:14.1.2.0.0
    $ podman push your-registry/oracle/soajeveloper:14.1.2.0.0
    
  3. SOA/Oracle Service Busコンポジット・プロジェクトを共有の場所(/share/appsなど)に配置します。oracleユーザー(uid: 1000およびgid: 0)にディレクトリ/share/appsに対する権限を付与して、コンテナ内でアクセス可能で書込み可能になるようにします。
    $ sudo chown -R 1000:0 /share/apps
  4. /share/appsに配置したSOA/Oracle Service Busコンポジット・プロジェクトを使用して、PersistentVolumeおよびPersistentVolumeClaim (soadeploy-pv.yamlおよびsoadeploy-pvc.yaml)を作成します。
    1. 提供されているサンプル(soadeploy-pv.yaml)を使用してPersistentVolumeを作成します。このサンプルはNFSを使用します(hostPathまたはその他のサポートされているPVタイプを使用できます):
      apiVersion: v1
      kind: PersistentVolume
      metadata:
      name: soadeploy-pv
      spec:
      storageClassName: soadeploy-storage-class
      capacity:
         storage: 10Gi
      accessModes:
         - ReadWriteMany
      # Valid values are Retain, Delete or Recycle
      persistentVolumeReclaimPolicy: Retain
      # hostPath:
      nfs:
         server: X.X.X.X
         path: "/share/apps"
      
    2. PersistentVolumeClaim soadeploy-pvc.yamlを作成します:
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
      name: soadeploy-pvc
      namespace: soans
      spec:
      storageClassName: soadeploy-storage-class
      accessModes:
         - ReadWriteMany
      resources:
         requests:
            storage: 10Gi      
      
      $ kubectl apply -f soadeploy-pvc.yaml
  5. Kubernetesポッドでイメージyour-registry.com/oracle/soajeveloper:14.1.2.0.0をプルするために資格証明が必要な場合は、イメージ・プル・シークレットを作成します。
    $ kubectl create secret docker-registry image-secret -n <domain-namespace> --docker-server=your-registry.com --docker-username=xxxxxx --docker-password=xxxxxxx  --docker-email=my@company.com
    
  6. スクリプトjdev_helper.shを使用して、JDeveloper環境をドメイン・ネームスペースと同じネームスペースに作成する必要があります。
    $ cd jdev_support/scripts
    $ ./jdev_helper.sh -h
    
       This is a helper script for SOA jdeveloper access setup in container environment.
    
       Please see README.md for more details.
    
       Usage:
    
          jdev_helper.sh [-c persistentVolumeClaimName] [-m mountPath]  [-n namespace] [-i image] [-u imagePullPolicy] [-t serviceType] [-d vncpassword] [-k killvnc] [-h]"
    
          [-c | --claimName]                : Persistent volume claim name.
    
          [-m | --mountPath]                : Mount path of the persistent volume in jdevhelper deployment.
    
          [-n | --namespace]                : Domain namespace. Default is 'default'.
    
          [-i | --image]                    : Container image for the jdevhelper deployment (optional). Default is 'ghcr.io/oracle/oraclelinux:8'.
    
          [-u | --imagePullPolicy]          : Image pull policy for the helper deployment (optional). Default is 'IfNotPresent'.
    
          [-p | --imagePullSecret]          : Image pull secret for the helper deployment (optional). Default is 'None'.
    
          [-t | --serviceType]              : Kubernetes service type for VNC port. Default is 'NodePort'. Supported values are NodePort and LoadBalancer.
    
          [-d | --vncpassword]              : Password for VNC access. Default is 'vncpassword'.
    
          [-k | --killvnc                   : Removes the Kubernetes resources created in the namespace created for SOA JDeveloper access through VNC.
    
          [-h | --help]                     : This help.
    

    前述のPersistentVolumeClaim、イメージ・プル・シークレットおよびOracle SOAクイックスタート・イメージを使用したサンプル・コマンドは次のとおりです:

    ./jdev_helper.sh -n soans -i your-registry.com/oracle/soajeveloper:14.1.2.0.0  -t NodePort -d welcome -p image-secret -c soadeploy-pvc

    出力:

    [2024-07-12T10:05:17.250564395Z][INFO] Creating deployment 'jdevhelper' using image 'your-registry.com/oracle/soajeveloper:14.1.2.0.0', persistent volume claim 'soadeploy-pvc' and mount path '/shared'.
    deployment.apps "jdevhelper" deleted
    deployment.apps/jdevhelper created
    service/jdevhelper unchanged
    [2024-07-12T10:05:30.917075513Z][INFO] =========================================== VNC environment details ====================================================
    [2024-07-12T10:05:30.920164769Z][INFO] VNCSERVER started on DISPLAY= <NODE PORT>
    [2024-07-12T10:05:30.921882024Z][INFO] To start using Oracle JDeveloper ==> connect via VNC viewer with <NODE NAME>:<NODE PORT>
    [2024-07-12T10:05:30.924094226Z][INFO]
    [2024-07-12T10:05:30.928925615Z][INFO] Your projects/applications hosted at persistentvolumeClaim soadeploy-pvc, are available for JDeveloper access at /shared
    [2024-07-12T10:05:30.930312223Z][INFO] ========================================================================================================================
    [2024-07-12T10:05:30.931901926Z][INFO] Navigate to the following location from VNCViewer on terminal
    [2024-07-12T10:05:30.933337276Z][INFO] $ cd /u01/oracle/jdeveloper/jdev/bin
    [2024-07-12T10:05:30.934801172Z][INFO]
    [2024-07-12T10:05:30.936312907Z][INFO] For example, to connect to secure Oracle SOA Domain with DemoTrust, run the following command:
    [2024-07-12T10:05:30.939333282Z][INFO] $ ./jdev -J-Dweblogic.security.SSL.ignoreHostnameVerify=true -J-Dweblogic.security.TrustKeyStore=DemoTrust
    [2024-07-12T10:05:30.941008547Z][INFO]
    [2024-07-12T10:05:30.949161692Z][INFO] While creating Application Server Connection, use Administration server pod name and internal configured ports.
    [2024-07-12T10:05:30.951463685Z][INFO] For example 'WebLogic Hostname' value is 'soainfra-adminserver'
    [2024-07-12T10:05:30.956109261Z][INFO] 'SSL Port' is '9002' for secure domain or 'Port' is '7001' for non-secure domain
    [2024-07-12T10:05:30.957739730Z][INFO] ========================================================================================================================
    [2024-07-12T10:05:30.959372215Z][INFO]
    [2024-07-12T10:05:30.960767620Z][INFO]
    [2024-07-12T10:05:30.962397769Z][INFO] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    [2024-07-12T10:05:30.963984357Z][INFO] >>>>>> To cleanup the Kubernetes resources created for Oracle JDeveloper access through VNC
    [2024-07-12T10:05:30.965782926Z][INFO] >>>>>> Run: $ ./jdev_helper.sh -k -n soans
    [2024-07-12T10:05:30.967358203Z][INFO] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $   
    

    パスワードwelcomeを使用し、presistenceVolumeClaimNameを使用せずにVNCアクセス可能なJDeveloper環境を作成するサンプル・コマンド:

    $ ./jdev_helper.sh -n soans -i your-registry.com/oracle/soajdeveloper:14.1.2.0.0 -t NodePort -d welcome -p image-secret 

    サンプル出力:

     [2024-07-08T17:59:38.277941559Z][INFO] CAUTION!!!! The presistenceVolumeClaimName is not provided. Projects/applications stored in this setup is ephemeral and not persistent
     [2024-07-08T17:59:38.279462462Z][INFO] CAUTION!!!! In case you want the projects/applications created to be persistent, recommended to pass a persistentVolumeClaimName with option -c
     [2024-07-08T17:59:38.281126958Z][INFO] Creating deployment 'jdevhelper' using image 'your-registry.com/oracle/soajdeveloper:14.1.2.0.0', persistent volume claim '' and mount path '/shared'.
     deployment.apps "jdevhelper" deleted
     deployment.apps/jdevhelper created
     service/jdevhelper unchanged
     [2024-07-08T17:59:51.926915480Z][INFO] =========================================== VNC environment details ====================================================
     [2024-07-08T17:59:51.928832925Z][INFO] VNCSERVER started on DISPLAY= <NODE PORT>
     [2024-07-08T17:59:51.930804513Z][INFO] To start using Oracle JDeveloper ==> connect via VNC viewer with <NODE NAME>:<NODE PORT>
     [2024-07-08T17:59:51.932756905Z][INFO]
     [2024-07-08T17:59:51.935113101Z][INFO] Your projects/applications created are ephemeral and not persistent as no persistentvolumeClaim is used
     [2024-07-08T17:59:51.937168808Z][INFO] ========================================================================================================================
     [2024-07-08T17:59:51.940554959Z][INFO] Navigate to the following location from VNCViewer on terminal
     [2024-07-08T17:59:51.942509904Z][INFO] $ cd /u01/oracle/jdeveloper/jdev/bin
     [2024-07-08T17:59:51.944227450Z][INFO]
     [2024-07-08T17:59:51.945968141Z][INFO] For example, to connect to secure Oracle SOA Domain with DemoTrust, run the following command:
     [2024-07-08T17:59:51.948112907Z][INFO] $ ./jdev -J-Dweblogic.security.SSL.ignoreHostnameVerify=true -J-Dweblogic.security.TrustKeyStore=DemoTrust
     [2024-07-08T17:59:51.950122988Z][INFO]
     [2024-07-08T17:59:51.952409522Z][INFO] While creating Application Server Connection, use Administration server pod name and internal configured ports.
     [2024-07-08T17:59:51.954187243Z][INFO] For example 'WebLogic Hostname' value is 'soainfra-adminserver'
     [2024-07-08T17:59:51.955624588Z][INFO] 'SSL Port' is '9002' for secure domain. 'Port' is '7001' for non-secure domain
     [2024-07-08T17:59:51.956996289Z][INFO] ========================================================================================================================
     [2024-07-08T17:59:51.958355926Z][INFO]
     [2024-07-08T17:59:51.959729069Z][INFO]
     [2024-07-08T17:59:51.961092794Z][INFO] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
     [2024-07-08T17:59:51.962525360Z][INFO] >>>>>> To cleanup the Kubernetes resources created for Oracle JDeveloper access through VNC
     [2024-07-08T17:59:51.963854601Z][INFO] >>>>>> Run: $ ./jdev_helper.sh -k -n soans
     [2024-07-08T17:59:51.965774791Z][INFO] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
     $
    
  7. Oracle JDeveloperの使用を開始するには、jdev_helper.sh出力から取得された<NODE NAME>:<NODE PORT>を使用してVNCビューアを介して接続します。
  8. VNCViewerから次の場所に移動します:
    $ cd /u01/oracle/jdeveloper/jdev/bin
  9. 次のコマンドを実行し、DemoTrustなどを使用してセキュアなOracle SOAドメインに接続します:
    $ ./jdev -J-Dweblogic.security.SSL.ignoreHostnameVerify=true -J-Dweblogic.security.TrustKeyStore=DemoTrust
    
  10. アプリケーション・サーバー接続の作成時、管理サーバー・ポッド名および内部構成済ポートを使用します。たとえば、WebLogic Hostname値はsoainfra-adminserverです。セキュア・ドメインの場合、SSLポートは9002で、非セキュア・ドメインの場合、ポートは7001です。
  11. VNCを介したOracle JDeveloperアクセス用に作成されたKubernetesリソースをクリーンアップするには、次のコマンドを実行します:
    $ ./jdev_helper.sh -k -n <domain namespace>