永続ボリュームまたはイメージのコンポジットを使用したデプロイ

Kubernetes永続ボリュームまたはイメージのOracle SOA SuiteおよびOracle Service Busコンポジット・アプリケーション・アーティファクトを、WebLogic Kubernetes Operatorを使用してデプロイされたOracle SOA Suite環境にデプロイする方法について学習します。

JDeveloperを使用したデプロイおよびMavenおよびAntを使用したデプロイで説明されているデプロイメント方法は、手動プロセスです。デプロイメント・アーティファクト(アーカイブ)がすでにビルドされている場合は、Kubernetes永続ボリュームまたはイメージにパッケージ化して、この自動プロセスを使用してアーティファクトをOracle SOA Suiteドメインにデプロイできます。

アーティファクトのデプロイ・スクリプトを使用する準備

アーティファクトをデプロイするためのサンプル・スクリプトは、${WORKDIR}/create-soa-domain/domain-home-on-pv/にあります。deploy-artifacts-inputs.yaml(またはそのコピー)を編集して、ドメインおよびアーティファクトの詳細を指定する必要があります。このファイルに指定する必要がある情報を理解するには、次の構成パラメータを参照してください。

構成パラメータ

入力ファイルには、次のパラメータを指定できます。

パラメータ 定義 デフォルト値
adminPort Kubernetesクラスタ内の管理サーバーのポート番号。 7001
adminServerName 管理サーバーの名前。 AdminServer
domainUID ドメインの識別に使用される一意のID。このIDには、Kubernetesサービス名で有効ではない文字を含めることはできません。 soainfra
domainType ドメインのタイプ。Oracle SOA Suiteドメインの必須入力。サポートされているドメイン・タイプ値のいずれかを指定する必要があります: soa(アーティファクトをOracle SOA Suiteドメインにデプロイ)、osb(アーティファクトをOracle Service Busドメインにデプロイ)またはsoaosb(アーティファクトをOracle SOA SuiteドメインとOracle Service Busドメインの両方にデプロイ)。 soa
soaClusterName ドメイン内のSOA WebLogic Serverクラスタ・インスタンスの名前。デフォルトでは、クラスタ名はsoa_clusterです。この構成パラメータは、soaおよびsoaosbドメイン・タイプにのみ適用されます。 soa_cluster
image SOA Suite Dockerイメージ。アーティファクトのデプロイメント・プロセスには、Oracle SOA Suite 14.1.2.0が必要です。イメージの取得または作成方法の詳細は、Oracle SOA Suite Dockerイメージの取得を参照してください。 soasuite:release-version
imagePullPolicy Oracle SOA Suite Dockerイメージ・プル・ポリシー。有効な値は、IfNotPresent、Always、Neverです。 IfNotPresent
imagePullSecretName Oracle SOA Suite DockerイメージをプルするためにDockerストアにアクセスするためのKubernetesシークレットの名前。このパラメータを指定すると、シークレットの存在が検証されます。  
weblogicCredentialsSecretName 管理サーバーのユーザー名とパスワードのKubernetesシークレットの名前。指定しない場合、値はdomainUIDから<domainUID>-weblogic-credentialsとして導出されます。 soainfra-domain-credentials
namespace ドメインが作成されたKubernetesネームスペース。 soans
artifactsSourceType デプロイ・アーティファクトのソース・タイプ。永続ボリュームで使用可能なデプロイ・アーティファクトの場合はPersistentVolume、イメージとして使用可能なデプロイ・アーティファクトの場合はImageに設定します。 Image
persistentVolumeClaimName デプロイメント・アーティファクトをホストするために作成された永続ボリューム要求の名前。指定しない場合、値はdomainUIDから<domainUID>-deploy-artifacts-pvcとして導出されます。 soainfra-deploy-artifacts-pvc
artifactsImage デプロイ・アーティファクト・イメージ。artifactsSourceTypeがImageの場合は必須です。 artifacts:release-version
artifactsImagePullPolicy デプロイ・アーティファクト・イメージ・プル・ポリシー。有効な値は、IfNotPresent、Always、Neverです。 IfNotPresent
artifactsImagePullSecretName デプロイ・アーティファクト・イメージにアクセスするためのKubernetesシークレットの名前。このパラメータを指定すると、シークレットの存在が検証されます。  
deployScriptFilesDir Oracle SOA Suiteドメインにアーティファクトをデプロイするために必要なファイル(deployScriptNameパラメータで指定されたスクリプトを含む)が配置されるホスト・マシンのディレクトリ。デフォルトでは、このディレクトリは相対パスdeployに設定されます。 deploy
deployScriptsMountPath ポッド内でアーティファクトのデプロイ・スクリプトが配置されているマウント・パス。deploy-artifacts.shスクリプトは、Kubernetesポッドでスクリプト(deployScriptNameパラメータで指定)を実行してアーティファクトをデプロイするKubernetesジョブを作成します。deployScriptFilesDirディレクトリ内のファイルはポッドのこの場所にマウントされるため、Kubernetesポッドはスクリプトおよびサポート・ファイルを使用してアーティファクトをデプロイできます。 /u01/weblogic
deployScriptName アーティファクトのデプロイ・スクリプトがOracle SOA Suiteドメインにアーティファクトをデプロイするために使用するスクリプト。Oracle SOA Suiteの場合、soaディレクトリに配置されたスクリプトが使用されます。Oracle Service Busの場合、osbディレクトリに配置されたスクリプトが使用されます。deploy-artifacts.shスクリプトは、アーティファクトをデプロイするためにこのスクリプトを実行するKubernetesジョブを作成します。スクリプトは、deployScriptsMountPathパラメータで指定されたポッド内ディレクトリにあります。 deploy.sh
soaArtifactsArchivePath Oracle SOA Suiteアーカイブが配置されるコンテナ内のディレクトリ。 /u01/sarchives
osbArtifactsArchivePath Oracle Service Busアーカイブが配置されるコンテナ内のディレクトリ。 /u01/sbarchives

サンプルでは、Oracle SOA SuiteコンポジットまたはOracle Service BusアプリケーションをOracle SOA Suiteドメイン・ホームにデプロイする方法を示します。

アーティファクトのデプロイ・スクリプトの実行

入力ファイルと生成されたアーティファクトを格納する出力ディレクトリを指定して、アーティファクトのデプロイ・スクリプトを実行します:

./deploy-artifacts.sh \
  -i deploy-artifacts-inputs.yaml \
  -o <path to output-directory>

このスクリプトは、次のステップを実行します:

  • アーティファクト・デプロイメント・プロセス用に生成されたKubernetes YAMLファイルのディレクトリを作成します(まだ存在しない場合)。パス名は<path to output-directory>/weblogic-domains/<domainUID>/<YYYYMMDD-hhmmss>です。ディレクトリがすでに存在する場合は、このスクリプトを実行する前にその内容を削除する必要があります。
  • ユーティリティOracle SOA Suiteコンテナを起動し、スクリプトを実行して、イメージまたは永続ボリュームで提供されたアーティファクトをデプロイするKubernetesジョブを作成します。
イメージからのアーティファクトのデプロイ
  1. アーティファクトを含むイメージを作成します。
    1. イメージにアーティファクトを作成するサンプルDockerfileは、$WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-fileにあります。これにより、Oracle SOA Suite関連のアーカイブがsoaディレクトリで使用可能になり、Oracle Service Busアーカイブがosbディレクトリで使用可能になります。
    2. soaディレクトリを作成し、デプロイするOracle SOA Suiteアーカイブをディレクトリにコピーします:
      cd $WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-file
      mkdir soa
      cp /path/sca_sampleBPEL.jar soa
      
    3. osbディレクトリを作成し、デプロイするOracle Service Busアーカイブをディレクトリにコピーします:
      cd $WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-file
      mkdir osb
      cp /path/simple_sbconfig.jar osb
      
    4. build.shを使用してイメージを作成します。このスクリプトは、デフォルトのタグrelease-version (artifacts:release-version)を使用してイメージを作成します:
      cd $WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-file
      ./build.sh  -h
        Usage: build.sh -t [tag]
        Builds a Docker Image with Oracle SOA/OSB artifacts
        Parameters:
           -h: view usage
           -t: tag for image, default is release-version
      

      タグ14.1.2.0-v1を使用したスクリプトの出力例:

        ```
        $ ./build.sh -t 14.1.2.0-v1
          Sending build context to Docker daemon  36.35kB
          Step 1/13 : FROM busybox
           ---> 16ea53ea7c65
          Step 2/13 : ARG SOA_ARTIFACTS_ARCHIVE_PATH=/u01/sarchives
           ---> Using cache
           ---> 411edf07f267
          Step 3/13 : ARG OSB_ARTIFACTS_ARCHIVE_PATH=/u01/sbarchives
           ---> Using cache
           ---> c4214b9cf0ae
          Step 4/13 : ARG USER=oracle
           ---> Using cache
           ---> c8ebcd5ee546
          Step 5/13 : ARG USERID=1000
           ---> Using cache
           ---> 5780beb0c3cf
          Step 6/13 : ARG GROUP=root
           ---> Using cache
           ---> 048e67c71f92
          Step 7/13 : ENV SOA_ARTIFACTS_ARCHIVE_PATH=${SOA_ARTIFACTS_ARCHIVE_PATH}
           ---> Using cache
           ---> 31ae33cfd9bb
          Step 8/13 : ENV OSB_ARTIFACTS_ARCHIVE_PATH=${OSB_ARTIFACTS_ARCHIVE_PATH}
           ---> Using cache
           ---> 79602bf64dc0
          Step 9/13 : RUN adduser -D -u ${USERID} -G $GROUP $USER
           ---> Using cache
           ---> 07c12cea52f9
          Step 10/13 : COPY soa/ ${SOA_ARTIFACTS_ARCHIVE_PATH}/
           ---> bfeb138516d8
          Step 11/13 : COPY osb/ ${OSB_ARTIFACTS_ARCHIVE_PATH}/
           ---> 0359a11f8f76
          Step 12/13 : RUN chown -R $USER:$GROUP ${SOA_ARTIFACTS_ARCHIVE_PATH}/ ${OSB_ARTIFACTS_ARCHIVE_PATH}/
           ---> Running in 285fb2bd8434
          Removing intermediate container 285fb2bd8434
           ---> 2e8d8c337de0
          Step 13/13 : USER $USER
           ---> Running in c9db494e46ab
          Removing intermediate container c9db494e46ab
           ---> 40295aa15317
          Successfully built 40295aa15317
          Successfully tagged artifacts:14.1.2.0-v1
          INFO: Artifacts image for Oracle SOA suite
                is ready to be extended.
                --> artifacts:14.1.2.0-v1
          INFO: Build completed in 4 seconds.
        ```
      
  2. パラメータartifactsImageのdeploy-artifacts-inputs.yamlのイメージ詳細を更新し、deploy-artifacts.shを起動してアーティファクトのデプロイメントを実行します。

    soaosbのdomainTypeのデプロイメントのサンプル出力:

    ./deploy-artifacts.sh -i deploy-artifacts-inputs.yaml -o out-deploy
     Input parameters being used
     export version="deploy-artifacts-inputs-v1"
     export adminPort="7001"
     export adminServerName="AdminServer"
     export domainUID="soainfra"
     export domainType="soaosb"
     export soaClusterName="soa_cluster"
     export soaManagedServerPort="7003"
     export image="soasuite:14.1.2.0"
     export imagePullPolicy="IfNotPresent"
     export weblogicCredentialsSecretName="soainfra-domain-credentials"
     export namespace="soans"
     export artifactsSourceType="Image"
     export artifactsImage="artifacts:14.1.2.0"
     export artifactsImagePullPolicy="IfNotPresent"
     export deployScriptsMountPath="/u01/weblogic"
     export deployScriptName="deploy.sh"
     export deployScriptFilesDir="deploy"
     export soaArtifactsArchivePath="/u01/sarchives"
     export osbArtifactsArchivePath="/u01/sbarchives"
    
     Generating out-deploy/deploy-artifacts/soainfra/20211022-152335/deploy-artifacts-job.yaml
     Checking to see if the secret soainfra-domain-credentials exists in namespace soans
     configmap/soainfra-deploy-scripts-soa-job-cm created
     Checking the configmap soainfra-deploy-scripts-soa-job-cm was created
     configmap/soainfra-deploy-scripts-soa-job-cm labeled
     configmap/soainfra-deploy-scripts-osb-job-cm created
     Checking the configmap soainfra-deploy-scripts-osb-job-cm was created
     configmap/soainfra-deploy-scripts-osb-job-cm labeled
     Checking if object type job with name soainfra-deploy-artifacts-job-20211022-152335 exists
     Deploying artifacts by creating the job out-deploy/deploy-artifacts/soainfra/20211022-152335/deploy-artifacts-job.yaml
     job.batch/soainfra-deploy-artifacts-job-20211022-152335 created
     Waiting for the job to complete...
     status on iteration 1 of 20 for soainfra
     pod soainfra-deploy-artifacts-job-20211022-152335-r7ffj status is NotReady
     status on iteration 2 of 20 for soainfra
     pod soainfra-deploy-artifacts-job-20211022-152335-r7ffj status is Completed
     configmap "soainfra-deploy-scripts-soa-job-cm" deleted
     configmap "soainfra-deploy-scripts-osb-job-cm" deleted
     The following files were generated:
       out-deploy/deploy-artifacts/soainfra/20211022-152335/deploy-artifacts-inputs.yaml
       out-deploy/deploy-artifacts/soainfra/20211022-152335/deploy-artifacts-job.yaml
    
    
     Completed
    
    kubectl get all -n soans|grep deploy
    pod/soainfra-deploy-artifacts-job-20211022-152335-r7ffj   0/2     Completed   0          15m
    job.batch/soainfra-deploy-artifacts-job-20211022-152335   1/1           43s        15m
    

    ノート:

    domainTypeがsoaosbのスクリプトを実行すると、2つのコンテナ(1つはOracle SOA Suiteアーティファクト・デプロイメント用、もう1つはOracle Service Busアーティファクト・デプロイメント用)を含むデプロイメント・ポッドが作成されます。他のコンテナの実行中に1つのコンテナのデプロイメントが完了すると、ポッド・ステータスは「準備完了」から「準備未完了」になります。両方のデプロイメントが正常に完了すると、ポッドのステータスは「完了」になります。
永続ボリュームからのアーティファクトのデプロイ
  1. Oracle SOA Suiteのアーティファクトをsoaディレクトリにコピーし、Oracle Service Busを共有の場所のosbディレクトリにコピーします。たとえば、場所/shareでは、Oracle SOA Suiteのアーティファクトは/share/soaにあり、Oracle Service Busは/share/osbにあります。
    ls /share/soa
    sca_sampleBPEL.jar
    ls /share/osb/
    simple_sbconfig.jar
    
  2. 提供されているサンプル(artifacts-pv.yaml)を使用してPersistentVolumeを作成します:
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: soainfra-deploy-artifacts-pv
    spec:
      storageClassName: deploy-storage-class
      capacity:
        storage: 10Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      hostPath:
        path: "/share"
    kubectl apply -f artifacts-pv.yaml
    
  3. 提供されているサンプル(artifacts-pvc.yaml)を使用してPersistentVolumeClaimを作成します:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: soainfra-deploy-artifacts-pvc
      namespace: soans
    spec:
      storageClassName: deploy-storage-class
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 10Gi
    
    kubectl apply -f artifacts-pvc.yaml
    
  4. deploy-artifacts-inputs.yamlで、artifactsSourceTypeをPersistentVolumeに更新し、persistentVolumeClaimNameの名前を指定します。
  5. deploy-artifacts.shを起動して、persistentVolumeClaimNameに存在するアーティファクトのアーティファクトをデプロイします。

    domainTypeがsoaosbのデプロイメントの出力例:

    ./deploy-artifacts.sh -i deploy-artifacts-inputs.yaml -o out-deploy
     Input parameters being used
     export version="deploy-artifacts-inputs-v1"
     export adminPort="7001"
     export adminServerName="AdminServer"
     export domainUID="soainfra"
     export domainType="soaosb"
     export soaClusterName="soa_cluster"
     export soaManagedServerPort="7003"
     export image="soasuite:14.1.2.0"
     export imagePullPolicy="IfNotPresent"
     export weblogicCredentialsSecretName="soainfra-domain-credentials"
     export namespace="soans"
     export artifactsSourceType="PersistentVolume"
     export persistentVolumeClaimName="soainfra-deploy-artifacts-pvc"
     export deployScriptsMountPath="/u01/weblogic"
     export deployScriptName="deploy.sh"
     export deployScriptFilesDir="deploy"
     export soaArtifactsArchivePath="/u01/sarchives"
     export osbArtifactsArchivePath="/u01/sbarchives"
    
     Generating out-deploy/deploy-artifacts/soainfra/20211022-164735/deploy-artifacts-job.yaml
     Checking to see if the secret soainfra-domain-credentials exists in namespace soans
     configmap/soainfra-deploy-scripts-soa-job-cm created
     Checking the configmap soainfra-deploy-scripts-soa-job-cm was created
     configmap/soainfra-deploy-scripts-soa-job-cm labeled
     configmap/soainfra-deploy-scripts-osb-job-cm created
     Checking the configmap soainfra-deploy-scripts-osb-job-cm was created
     configmap/soainfra-deploy-scripts-osb-job-cm labeled
     Checking if object type job with name soainfra-deploy-artifacts-job-20211022-164735 exists
     Deploying artifacts by creating the job out-deploy/deploy-artifacts/soainfra/20211022-164735/deploy-artifacts-job.yaml
     job.batch/soainfra-deploy-artifacts-job-20211022-164735 created
     Waiting for the job to complete...
     status on iteration 1 of 20 for soainfra
     pod soainfra-deploy-artifacts-job-20211022-164735-66fvn status is NotReady
     status on iteration 2 of 20 for soainfra
     pod soainfra-deploy-artifacts-job-20211022-164735-66fvn status is Completed
     configmap "soainfra-deploy-scripts-soa-job-cm" deleted
     configmap "soainfra-deploy-scripts-osb-job-cm" deleted
     The following files were generated:
       out-deploy/deploy-artifacts/soainfra/20211022-164735/deploy-artifacts-inputs.yaml
       out-deploy/deploy-artifacts/soainfra/20211022-164735/deploy-artifacts-job.yaml
    
    
     Completed
    
    kubectl get all -n soans |grep deploy
    pod/soainfra-deploy-artifacts-job-20211022-164735-66fvn   0/2     Completed   0          3m1s
    job.batch/soainfra-deploy-artifacts-job-20211022-164735   1/1           37s        3m1s
    

    ノート:

    domainTypeがsoaosbのスクリプトを実行すると、2つのコンテナ(1つはOracle SOA Suiteアーティファクト・デプロイメント用、もう1つはOracle Service Busアーティファクト・デプロイメント用)を含むデプロイメント・ポッドが作成されます。他のコンテナの実行中に1つのコンテナのデプロイメントが完了すると、ポッド・ステータスは「準備完了」から「準備未完了」になります。両方のデプロイメントが正常に完了すると、ポッドのステータスは「完了」になります。

デプロイメント・ログの検証

アーティファクトのデプロイメントが成功したことを確認するには、kubectl logsコマンドを使用して出力を確認します:

ノート:

<YYYYMMDD-hhmmss><domainUID>および<namespace>を環境の値に置き換えます。

Oracle SOA Suiteアーティファクトの場合:

kubectl logs job.batch/<domainUID>-deploy-artifacts-job-<YYYYMMDD-hhmmss> -n <namespace>  soa-deploy-artifacts-job

Oracle Service Busアーティファクトの場合:

kubectl logs job.batch/<domainUID>-deploy-artifacts-job-<YYYYMMDD-hhmmss> -n <namespace>  osb-deploy-artifacts-job