永続ボリュームまたはイメージのコンポジットを使用したデプロイ
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ジョブを作成します。
- アーティファクトを含むイメージを作成します。
- イメージにアーティファクトを作成するサンプルDockerfileは、$WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-fileにあります。これにより、Oracle SOA Suite関連のアーカイブがsoaディレクトリで使用可能になり、Oracle Service Busアーカイブがosbディレクトリで使用可能になります。
soa
ディレクトリを作成し、デプロイするOracle SOA Suiteアーカイブをディレクトリにコピーします:cd $WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-file mkdir soa cp /path/sca_sampleBPEL.jar soa
osb
ディレクトリを作成し、デプロイするOracle Service Busアーカイブをディレクトリにコピーします:cd $WORKDIR/create-soa-domain/domain-home-on-pv/deploy-docker-file mkdir osb cp /path/simple_sbconfig.jar osb
- 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. ```
- パラメータ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つのコンテナのデプロイメントが完了すると、ポッド・ステータスは「準備完了」から「準備未完了」になります。両方のデプロイメントが正常に完了すると、ポッドのステータスは「完了」になります。
- 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
- 提供されているサンプル(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
- 提供されているサンプル(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
- deploy-artifacts-inputs.yamlで、artifactsSourceTypeをPersistentVolumeに更新し、persistentVolumeClaimNameの名前を指定します。
- 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