Oracle SOA Suiteドメインの作成および構成

  1. Oracle SOA Suiteドメインを準備します。
    1. Oracle SOA Suiteドメインをホストできるネームスペースを作成します。ドメインを管理するには、ネームスペースにweblogic-operator=enabledというラベルを付けます。
      kubectl create namespace soans
      kubectl label namespace soans weblogic-operator=enabled
      
    2. Kubernetes永続ボリュームおよび永続ボリューム要求を作成します。
      1. a.Oracle SOA Suiteドメイン・ホーム・ディレクトリを作成します。uid:gidが1000:0のユーザーがホスト・システムにすでに存在するかどうかを確認します:
        sudo getent passwd 1000

        このコマンドがユーザー名(最初のフィールド)を返す場合は、次のuseraddコマンドをスキップできます。そうでない場合は、useraddを使用してoracleユーザーを作成します:

        sudo useradd -u 1000 -g 0 oracle

        Oracle SOA Suiteドメイン・ホームに使用するディレクトリを作成します:

        sudo mkdir /scratch/k8s_dir
        sudo chown -R 1000:0 /scratch/k8s_dir
        
      2. create-pv-pvc-inputs.yamlには、デフォルトで次の値があります:
        • baseName: domain
        • domainUID: soainfra
        • namespace: soans
        • weblogicDomainStoragePath: /scratch/k8s_dir

        変更が必要な場合は、確認して更新します。

        cp create-pv-pvc-inputs.yaml create-pv-pvc-inputs-domain.yaml
              vi create-pv-pvc-inputs-domain.yaml
      3. create-pv-pvc.shスクリプトを実行して、更新された`create-pv-pvc-inputs-domain.yaml`を使用してPVおよびPVC構成ファイルを作成します:
        cd ${WORKDIR}/create-weblogic-domain-pv-pvc
        ./create-pv-pvc.sh -i create-pv-pvc-inputs-domain.yaml -o output-domain
      4. 前のステップで作成した構成ファイルを使用して、PVおよびPVCを作成します:
        kubectl create -f  output-domain/pv-pvcs/soainfra-domain-pv.yaml
        kubectl create -f  output-domain/pv-pvcs/soainfra-domain-pvc.yaml
    3. Oracle SOA Suiteドメインのデータベースをインストールします。

      このステップは、スタンドアロン・データベースがまだ設定されておらず、コンテナでデータベースを使用する場合にのみ必要です。KubernetesでOracle Databaseサービスを作成するには、ここを参照してください。このガイドでは、helmチャートを使用したKubernetes上の単一インスタンス・データベースを使用して、Oracle Database Operatorを使用せずにデータベースをプロビジョニングします。

      1. Oracle Database GitHubリポジトリをクローニングします:
        cd ${WORKDIR}
        git clone https://github.com/oracle/docker-images.git
        cd docker-images/OracleDatabase/SingleInstance/helm-charts
        
      2. Oracleデータベースのデータ・ファイルおよび構成は、コンテナの/opt/oracle/oradataパスに格納されます。永続ボリューム要求のストレージ・クラスを構成して、デプロイメント間のデータの永続性を維持する必要があります。永続性が必要ない場合は、次のステップをスキップし、–setオプションを使用してpersistencenullにオーバーライドできます。永続ボリューム要求に必要なストレージ・クラスを作成するには、次のステップに従います:
        1. データベースの永続性に使用するディレクトリを作成します。
          sudo mkdir /scratch/k8s_dir_db
          sudo chown -R 54321 /scratch/k8s_dir_db
          
        2. 次の値を使用して永続ボリュームを作成するためにcreate-pv-pvc-inputs.yamlを更新します:
          • baseName: db
          • namespace: default
          • weblogicDomainStorageSize: 100Gi
          • weblogicDomainStoragePath: /scratch/k8s_dir_db
          cd ${WORKDIR}/create-weblogic-domain-pv-pvc
          cp create-pv-pvc-inputs.yaml create-pv-pvc-inputs-db.yaml
          sed -i -e "s/baseName: domain/baseName: db/g" create-pv-pvc-inputs-db.yaml
          sed -i -e "s/namespace: soans/namespace: default/g" create-pv-pvc-inputs-db.yaml
          sed -i -e "s/k8s_dir/k8s_dir_db/g" create-pv-pvc-inputs-db.yaml
          sed -i -e "s/10Gi/100Gi/g" create-pv-pvc-inputs-db.yaml
          
        3. create-pv-pvc.shスクリプトを実行して、更新されたcreate-pv-pvc-inputs-db.yamlを使用してPV構成ファイルを作成します:
          cd ${WORKDIR}/create-weblogic-domain-pv-pvc
          ./create-pv-pvc.sh -i create-pv-pvc-inputs-db.yaml -o output-db
          

          ノート:

          helmチャートではStorageClass名を使用し、PVCを作成するため、PVCを作成しないでください。
        4. 前述のスクリプトはPVとPVCの両方に対して作成されますが、前のステップで作成したPV構成ファイルのみを使用します:
          kubectl create -f  output-db/pv-pvcs/soainfra-db-pv.yaml
          
          1. helm-chartsを使用してコンテナにデータベースを作成します:
            cd ${WORKDIR}/docker-images/OracleDatabase/SingleInstance/helm-charts
            helm  install db19c \
                    --set persistence.storageClass=soainfra-db-storage-class \
                    --set imagePullPolicy=IfNotPresent \
                    oracle-db
            
          2. 「DATABASE IS READY TO USE」というメッセージが表示されるまで、データベース・デプロイメントのログを確認します:
            kubectl  logs deployment.apps/db19c-oracle-db -f
            
          3. SYSユーザーのパスワードを取得します:
            kubectl get secret db19c-oracle-db -o jsonpath={.data.oracle_pwd} | base64 --decode; echo
            

            helm-chartは、create-domain-inputs.yamlファイルのrcuDatabaseURLパラメータとして使用される接続文字列db19c-oracle-db.default.svc.cluster.local:1521/ORCLPDB1を使用して、データベースにアクセスするために必要なサービスを作成します。データベースの作成に異なるHelmリリース名または構成パラメータを使用した場合は、それに応じて接続文字列を更新します。

          4. ドメイン・タイプ(soaosbなど)のOracle SOA Suiteスキーマを作成します。
            1. データベースのSYSDBAユーザー名とパスワードを含むシークレットを作成します。

              kubectl -n default create secret generic oracle-rcu-secret \
                 --from-literal='sys_username=sys' \
                 --from-literal='sys_password=REPLACE-WITH-SYS-PASSWORD' \
                 --from-literal='password=REPLACE-WITH-SCHEMA-PASSWORD'
              

              Oracle SOA Suiteスキーマをインストールするには、次の入力を指定してcreate-rcu-schema.shスクリプトを実行します:

              • -s <RCU接頭辞>
              • -t <SOAドメイン・タイプ>
              • -d <Oracle Database URL>
              • -i <SOASuiteイメージ>
              • -n <ネームスペース>
              • -c <SYSDBAユーザー名とパスワードおよびRCUスキーマ所有者のパスワードを含む資格証明シークレットの名前>
              • -r <カンマ区切り変数>
              • -l <タイムアウト制限(秒)。(オプション)。(デフォルト: 300)>

              例:

              ccd ${WORKDIR}/create-rcu-schema
              ./create-rcu-schema.sh \
              -s SOA1 \
              -t soaosb \
              -d db19c-oracle-db.default.svc.cluster.local:1521/ORCLPDB1 \
              -i container-registry.oracle.com/middleware/soasuite:14.1.2.0-<17 or 21>-<ol8 or ol9>-<tag> \
              -n default \
              -b EBR \
              -c oracle-rcu-secret \
              -r SOA_PROFILE_TYPE=SMALL,HEALTHCARE_INTEGRATION=NO
              
        5. ドメインの作成に必要なKubernetesシークレットを作成します。
          1. ドメインと同じKubernetesネームスペースで、ドメインのKubernetesシークレットを作成します。この例では、ユーザー名はweblogic、パスワードはWelcome1、ネームスペースはsoansです:
            cd ${WORKDIR}/create-weblogic-domain-credentials
            ./create-weblogic-credentials.sh \
                 -u weblogic \
                 -p Welcome1 \
                 -n soans    \
                 -d soainfra \
                 -s soainfra-domain-credentials
            
          2. ドメインと同じKubernetesネームスペースで、RCUのKubernetesシークレットを作成します:
            • スキーマ・ユーザー: SOA1
            • スキーマ・パスワード: REPLACE-WITH-SCHEMA-PASSWORD
            • DB sysユーザー・パスワード: REPLACE-WITH-SYS-PASSWORD
            • ドメイン名: soainfra
            • ドメイン・ネームスペース: soans
            • シークレット名: soainfra-rcu-credentials
            cd ${WORKDIR}/create-rcu-credentials
            ./create-rcu-credentials.sh \
                  -u SOA1 \
                  -p REPLACE-WITH-SCHEMA-PASSWORD \
                  -a sys \
                  -q REPLACE-WITH-SYS-PASSWORD \
                  -d soainfra \
                  -n soans \
                  -s soainfra-rcu-credentials
            

          これで、Oracle SOA Suiteドメインの作成を開始する準備ができました。

  2. Oracle SOA Suiteドメインを作成します。
    1. Oracle SOA Suiteドメイン・デプロイメントのサンプル・スクリプトは、${WORKDIR}/create-soa-domain/domain-home-on-pvにあります。create-domain-inputs.yaml(またはそのコピー)を編集して、ドメインの詳細を指定する必要があります。

      create-domain-inputs.yamlをドメイン作成の次の値で更新します:

      • domainType: soaosb
      • initialManagedServerReplicas:1
      cd ${WORKDIR}/create-soa-domain/domain-home-on-pv/
      
      cp create-domain-inputs.yaml create-domain-inputs.yaml.orig
      
      sed -i -e "s:domainType\: soa:domainType\: soaosb:g" create-domain-inputs.yaml
      sed -i -e "s:initialManagedServerReplicas\: 2:initialManagedServerReplicas\: 1:g" create-domain-inputs.yaml
      sed -i -e "s:image\: soasuite\:release-version:image\: container-registry.oracle.com/middleware/soasuite\:14.1.2.0-<17 or 21>-<ol8 or ol9>-<tag>:g" create-domain-inputs.yaml
      
    2. create-domain.shスクリプトを実行して、ドメインを作成します:
      cd ${WORKDIR}/create-soa-domain/domain-home-on-pv/
      ./create-domain.sh -i create-domain-inputs.yaml -o output
      
    3. Kubernetesドメイン・オブジェクトを作成します:

      create-domain.shが成功すると、output/weblogic-domains/soainfra/domain.yamlが生成され、これを使用してKubernetesリソース・ドメインを作成し、ドメインおよびサーバーを起動できます:

      cd ${WORKDIR}/create-soa-domain/domain-home-on-pv
      kubectl create -f output/weblogic-domains/soainfra/domain.yaml
      
    4. soainfraという名前のKubernetesドメイン・オブジェクトが作成されていることを確認します:
      kubectl get domain -n soans
      NAME       AGE
      soainfra   3m18s
      
    5. ドメインを作成すると、イントロスペクト・ポッドが作成されます。これにより、ドメイン・ホームが検査され、soainfra-adminserverポッドが起動されます。soainfra-adminserverポッドが正常に起動すると、管理対象サーバー・ポッドがパラレルで起動されます。soansネームスペースで、ドメイン作成のステータスを確認します:
      kubectl get pods -n soans -w
      
    6. Oracle SOA Suiteドメイン・サーバーのポッドおよびサービスが作成され、準備完了状態であることを確認します:
      kubectl get all -n soans
      
  3. Oracle SOA Suiteドメイン・サービスにアクセスするようにTraefikを構成します。
    1. Oracle SOA Suiteドメイン・ネームスペース(soans)で作成されたイングレスを管理するようにTraefikを構成します。
      helm upgrade traefik traefik/traefik \
        --reuse-values \
        --namespace traefik \
        --set "kubernetes.namespaces={traefik,soans}" \
        --wait
      
    2. サンプルのHelmチャートを使用して、ドメイン・ネームスペースにドメインのイングレスを作成します:
      cd ${WORKDIR}
      export LOADBALANCER_HOSTNAME=$(hostname -f)
      helm install soa-traefik-ingress charts/ingress-per-domain \
      --namespace soans \
      --values charts/ingress-per-domain/values.yaml \
      --set "traefik.hostname=${LOADBALANCER_HOSTNAME}" \
      --set domainType=soaosb
      
    3. ドメインごとに作成されたイングレスの詳細を確認します:
      kubectl describe ingress soainfra-traefik -n soans
      
  4. Oracle SOA SuiteドメインURLにアクセスできることを確認します。
    1. 環境のLOADBALANCER_HOSTNAMEを取得します:
      export LOADBALANCER_HOSTNAME=$(hostname -f)
      
    2. ドメイン・タイプsoaosbのOracle SOA Suiteドメインで次のURLが使用可能であることを確認します:

      資格証明

      ユーザー名: weblogic

      パスワード: Welcome1

      http://${LOADBALANCER_HOSTNAME}:30305/em
      http://${LOADBALANCER_HOSTNAME}:30305/servicebus
      http://${LOADBALANCER_HOSTNAME}:30305/soa-infra
      http://${LOADBALANCER_HOSTNAME}:30305/soa/composer
      http://${LOADBALANCER_HOSTNAME}:30305/integration/worklistapp
      http://${LOADBALANCER_HOSTNAME}:30305/ess
      http://${LOADBALANCER_HOSTNAME}:30305/EssHealthCheck