DBB サーバー・コンテナーの定義と展開

DBB オペレーターおよび DBB カスタム・リソース定義 (CRD) を Red Hat® OpenShift Container Platform (OCP) クラスターにインストールするには、『DBB オペレーター (CASE) バンドルのインストール』 を参照してください。 この資料では、DBB サーバーを試用するため、または POC 用にインストールする方法も説明します。 実稼働環境の場合は、 IBM Db2®で実行するようにコンテナーを構成することをお勧めします。

この資料では、OCP で DBB サーバー設定をカスタマイズするための CRD について説明しています。

DBB サーバーの構成

PoC または試用版を実行する場合は、素早いセットアップと開始に必要なすべての要素が含まれる、基本構成を利用できます。 実動サーバーを実行する場合は、ユーザー・レジストリーと Db2 のインスタンスの両方を構成する必要があります。 以下のカスタム・リソース (CR) は、POC または試用のために使用されるデフォルト構成を定義しています。

apiVersion: dbb.ibm.com/v1
kind: DBBServer
metadata:
  name: <name>
  namespace: <namespace>
spec:
  license:
    accept: true
  useLocalDerby: true
  derbyPVClaimSpec:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 20Gi
    storageClassName: dbb-derby
  logsPVClaimSpec:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
    storageClassName: dbb-logs

この CR では、必要なライセンス承諾を true に設定しています (ライセンスは CASE バンドルに含まれています)。 CR では、それが Derby データベースを使用していることを示しており、Derby データベースおよびログ・ファイルの永続的なボリューム要求を定義しています。 これらクレームは、デフォルトのストレージ・クラスを使用します。 したがって、OCP 管理者は、デフォルトのストレージ・クラスを定義しておく必要があります。

初めてインストールする場合は、続いて以下の構成手順を実行します。 旧リリースからアップグレードする場合は、 『Dependency Based Build コンテナーのマイグレーション』の指示を確認し、従ってください。

カスタム・リソース・フィールド

このセクションは、DBB サーバーの CR での各エレメントの使用方法について説明します。

種類とバージョン

ほとんどの定義と同様に、DBB CR は ApiVersion (現在は dbb.ibm.com/v1) と Kind (DBBServer) で始まります。

  • kind (必須) このオブジェクトのリソース・タイプを表します。 常に DBBServer です。

  • apiVersion (必須) このリソースを処理するために使用されるスキーマのバージョンを定義します。 常に dbb.ibm.com/v1 です。

メタデータ

リソースのメタデータには、「name」と 「namespace」 のフィールドが含まれています。 他のメタデータ・フィールドは、OCP によって使用または追加される場合がありますが、DBB サーバー・インスタンスの作成時には必要ありません。 『metav1.ObjectMeta』を参照してください。

  • name (必須) この DBB サーバーのインスタンス名です。 OCP クラスター内にオペレーターによって他のリソースが作成されるため、この名前はプレフィックスとして使用されます。

  • namespace (必須) 成果物が作成される名前空間です。 この 「name」 と「namespace」が以前に実行依頼された DBBServer と同一である場合、新規インスタンスが作成されるのではなく、既存のオブジェクトが構成で更新されます。

仕様

CR の spec (仕様) セクションは、ご使用の DBB サーバーに合うように、ほとんどの構成をカスタマイズすることができます。

  • license (必須) 前述のとおり、オペレーターが CR を処理するためにライセンス/受諾が必要です。 ライセンスは、CASE バンドルに含まれます。

      license:
        accept: true
  • useLocalDerby (必須) この DBB サーバーのデプロイメントで、データベースとして Derby を使用することを示します。

      useLocalDerby: true
  • dbbProperties (オプション) サーバー構成内のデフォルトの dbb.properties ファイルをオーバーレイする複数行の文字列です。

      dbbProperties: |
        #com.ibm.dbb.web.admin defines the user with administrator-role privileges used to obtain LDAP group information via SCIM
        com.ibm.dbb.web.admin=ADMIN
        #com.ibm.dbb.web.admin.password defines the admin password used to obtain LDAP group information via SCIM. Use the Liberty securityUtility to obfuscate the password.
        com.ibm.dbb.web.admin.password={xor}HhsSFhE=
  • bootstrapProperties (オプション) サーバー構成内のデフォルトの bootstrap.properties ファイルをオーバーレイする複数行ストリングです。

      boostrapProperties: |
        com.ibm.ws.logging.trace.file.name=dbb.log
        com.ibm.ws.logging.trace.specification=*.info:com.ibm.dbb.*=debug
  • jvmOptions (オプション) サーバー構成内のデフォルトの jvm.options ファイルをオーバーレイする複数行の文字列です。

  • keystoreConfig (オプションl) サーバー構成のデフォルトの keystore 情報を指定変更する複数行の文字列です。 サーバーに署名証明書を設定するためにカスタマイズできます。 この情報は、コンテナーの開始時に /config/configDropins/overrides/keystore.xml に保管されます。

      keystoreConfig: |
        <server>
          <keyStore id="defaultKeyStore" location="/dbb/dbbdev.p12" password="{xor}Oz09azkqMQ==" type="PKCS12"/>
        </server>
  • databaseConfig (オプション) デフォルトの Derby 構成をオーバーライドする複数行の文字列です。 これは、実稼働環境で推奨されます。 この情報は、コンテナーの開始時に /config/configDropins/overrides/databaseConfig.xml に保管されます。

      databaseConfig: |
        <server>
          <featureManager>
            <feature>jdbc-4.1</feature>
          </featureManager>
    
          <jdbcDriver id="db2JDBCdriver">
            <library name="DB2Lib">
              <fileset dir="${shared.resource.dir}/db2" includes="*.jar"/>
            </library>
          </jdbcDriver>
          <dataSource id="dbbConnection" jdbcDriverRef="db2JDBCdriver" jndiName="jdbc/dbbConnection" transactional="false">
            <properties.db2.jcc databaseName="DBB" password="{xor}OzovHT4sOjsdKjYzO2sZKjFx" portNumber="50000" serverName="dbbdev.rtp.raleigh.ibm.com" user="db2inst1"/>
          </dataSource>
        </server>
  • userRegistryConfig (オプション) デフォルトの基本ユーザー・レジストリーをオーバーライドする複数行の文字列です。 これは、実稼働環境で推奨されます。 この情報は、コンテナーの開始時に /config/configDropins/overrides/userRegistryConfig.xml に保管されます。

      userRegistryConfig: |
        <server>
          <featureManager>
            <feature>appSecurity-2.0</feature>
            <feature>ldapRegistry-3.0</feature>
          </featureManager>
    
          <ldapRegistry
            id="ldap" realm="DBB" ignoreCase="true"
            host="dbbdev.rtp.raleigh.ibm.com" port="389"
            baseDN="o=ibm"
            ldapType="Custom">  
            <customFilters
              userFilter="(&amp;(uid=%v)(objectclass=inetOrgPerson))"
              groupFilter="(&amp;(cn=%v)(objectclass=groupOfNames))"
              userIdMap="*:uid"
              groupIdMap="*:cn"
              groupMemberIdMap="groupOfNames:member">
            </customFilters>
            <attributeConfiguration>
      		      <attribute name="userIdMap" propertyName="name" syntax="String" entityType="PersonAccount"></attribute>
    			         <externalIdAttribute name="userIdMap" entityType="PersonAccount" autoGenerate="false"></externalIdAttribute>
    		        </attributeConfiguration>
          </ldapRegistry>
        </server>
  • replicas (オプション) この構成で実行するサーバー数です (デフォルトは 1)。 このオプションによって、複数のサーバー間で負荷分散が可能になります。

      replicas: 1
  • env (オプション) DBBEnvVar 変数をサーバー構成に追加することができます。 これらの変数は、サーバー構成で使用するために、例えば環境変数として、または環境変数やファイルなどの「configMap の参照」フィールドで使用できます。 詳しくは、『DBBEnvVar』を参照してください。

      env:
      - name: name1
        value: abc
      - name: name2
        value: value2
        path: value.txt
  • derbyPVClaimSpec (オプション) コンテナーが停止して再開した場合、コンテナーの実行中に書き込まれたファイルや変更されたファイルは、保持されません。 データベースの更新を保持する永続的なストレージが必要になります。 このプロパティーは、Derby データベースのデフォルトの永続ボリューム要求をオーバーライドします。 このプロパティーについて詳しくは、「corev1.PersistentVolumeClaimSpec」 を参照してください。

      derbyPVClaimSpec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: dbb-derby
  • logsPVClaimSpec (オプション) コンテナーが停止して再開した場合、コンテナーの実行中に書き込まれたファイルや変更されたファイルは、保持されません。 データベースの更新を保持する永続的なストレージが必要になります。 このプロパティーは、 ログ・ファイルのデフォルトの永続ボリューム要求をオーバーライドします。 このプロパティーについて詳しくは、「corev1.PersistentVolumeClaimSpec」 を参照してください。

      logsPVClaimSpec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        storageClassName: dbb-logs
  • volumes (オプション) DBB サーバー・コンテナーにマウントしたい追加ボリュームのリストを定義します。 例えば、SSL 構成のために鍵ストアとトラストストアを含む追加のボリュームをマウントすることが必要な場合があります。 ボリュームを定義する方法の詳細については、「corev1.Volume」を参照してください。
    この例では、OCP シークレットのボリュームを定義します。

      volumes:
      - name: secret-volume
        secret:
          secretName: mydbb-dbb-secrets
  • volumeMounts (オプション) DBB サーバー・コンテナーにマウントしたい追加のボリューム・マウントのリストを定義します。 例えば、SSL 構成のために鍵ストアとトラストストアを含む追加のボリュームをマウントすることが必要な場合があります。 VolumeMount を定義する方法の詳細については、『corev1.VolumeMount』 を参照してください。 この例では、前述のボリューム例に対してマウントを定義します。 シークレットの各項目は、/etc/secret-volume 内で個別のファイルになります。

    volumeMounts:
      - name: secret-volume
        readOnly: true
        mountPath: /etc/secret-volume
  • resources (オプション) DBB サーバーのコンテナー環境に定義されたデフォルトのリソースをオーバーライドします。 ビジー状態が多いサーバーでは、使用可能リソースをより多く必要とする可能性があります。 使用可能な JVM リソースを増やすために、jvmOptions を指定することが必要な場合があります。 リソースの指定について詳しくは、 『corev1.ResourceRequirements』を参照してください。

      resources:
        limits:
          cpu: "2"
          memory: 8Gi
        requests:
          cpu: "1"
          memory: 3Gi
  • autoscaler (オプション) DBB サーバー設定に動的スケーリングを追加することができます。 実行する DBB サーバーの静的数値を設定する replicas 構成とは異なり、このオプションでは、実行するレプリカの最小数と最大数を定義して、定義されたメトリックに基づいて OCP がレプリカの開始および停止をできるようにします。 詳しくは、『DBBAutoscalerSpec』を参照してください。

    autoscaler:
      minReplicas: 1
      maxReplicas: 5
      metrics:
      - type: Resource
        resource:
          name: cpu
          targetAverageUtilization: 20

DBBEnvVar

この構造では、DBB サーバー環境に環境変数やファイルを追加するために必要なプロパティーを定義します。

  • name 環境変数の名前

  • value (オプション) 環境変数に割り当てられるストリング値

  • valueFrom (オプション) 値は、configMap またはシークレットの項目から割り当てられます。 詳しくは、『corev1.EnvVarSource』 を参照してください。

  • path (オプション) 環境変数の値をファイルとして保存するパスです。

例:

  • デプロイメント時に直接定義され、実行中の DBB サーバー環境で環境変数としてアクセス可能な環境変数です。

      - name: name1
          value: abc
  • 環境変数は、デプロイメントの ConfigMap に追加され、ファイルとして DBB サーバー環境に保存されます。

      - name: name2
        value: value2
        path: value.txt
  • デプロイメント ConfigMap で定義および保存され、デプロイメント時に環境変数として参照される値とマップ・キーです。

      - name: envvarname
        value: mappedvalue
        valueFrom:
          configMapKeyRef:
            name: <cr_name>-dbb-configmap
            key: mapkeyname
  • 環境変数は、既存の ConfigMap の項目から定義され、デプロイメントで環境変数として参照されます。

      - name: envvar2
        valueFrom:
         configMapKeyRef:
           name: another-configmap
           key: anotherkey
  • 環境変数は、既存のシークレットの項目から定義され、デプロイメントで環境変数として参照されます。

      - name: secretenvvar
        valueFrom:
         secretKeyRef:
           name: my-secrets
           key: hostname

DBBAutoscalerSpec

  • minReplicas (オプション) このデプロイメントで開始する DBB サーバーの最小数を指定する数値。

      minReplicas: 2
  • maxReplicas このデプロイメントで開始する DBB サーバーの最大数を指定する数値。

      maxReplicas: 10
  • metrics
    OCP が、より多くのサーバーを開始するか、またはサーバーを停止するかの判別に使用するロード・メトリックを定義します。 詳しくは、『autoscaling.MetricSpec』を参照してください。

      metrics:
      - type: Resource
        resource:
          name: cpu
          targetAverageUtilization: 20

DBB サーバーのカスタム・リソースのデプロイ

CR で構成が設定されると、その CR をクラスターに適用できます。 DBB オペレーターは CR を使用して、操作される DBB サーバー用に必要な成果物 (ConfigMap、 Deployment、Route、および Service など) を作成します。 構成が完了すると、サーバーは自動的に始動されます。サーバーは、OCP コンソールの**「Workloads」 >「Pods」** の下で 、CR に使用される名前空間を選択してモニターすることができます。

  1. oc クライアントを使用して、クラスターにログインします。

    oc login https://<your_cluster_hostname> -u <username> -p <password>
  2. 名前空間を作成し、DBB OCP リソース用にプロジェクトを設定するか、ステップ 3 の 「--namespace <namespace>」 オプションを使用します。

    oc create namespace <namespace>

    注:固有の名前空間は、複数の DBB サーバーのデプロイメントでは必須ではありませんが、使用することをお勧めします。

  3. CR のデプロイ

    oc apply -f dbbserver_cr.yaml

DBB サーバー・セットアップの検証

  1. OpenShift クラスター・コンソールにログインします。

  2. 左側のメニューの 「Workloads」 タブを展開し、 **「Pods」**をクリックします。

  3. 「Pods」 ページで、ドロップダウン・リストからプロジェクトを選択します。

  4. ポッドの <cr_name>「-dbb-deployment-1-<id>」 は**「Running」**状況になっているはずです。 ポッドをクリックし、エラーが発生していないか「YAML またはログ (YAML or logs)」を確かめます。

  5. 左側のメニューの **「Networking」**タブをクリックして、 **「Routes」**をクリックします。

  6. dbb-server ルートのロケーション URL をメモしておいてください。 この URL のホスト名を後ほどのステップで使用します。

  7. https://<hostname>/dbb/rest/collection に移動します。

  8. 構成済みのいずれかの DBBAdmins 認証情報を使ってログインします。

  9. コレクションが何もリストされていない状態で、「DBB コレクション (DBB Collections)」という見出しが表示されます。

  10. サンプル・コレクションを作成します。

  • https://<hostname>/dbb/rest/collection/setup に移動します。 「OK - セットアップ完了 (OK - Setup completed)」と表示されることを確認します。

  • https://<hostname>/dbb/rest/collection に移動します。 コレクションのリスト (「Collection1」、「Collection2」、および「Collection3」) が表示されることを確認します。

  • 各コレクションにナビゲートし、論理ファイルと論理依存関係を確認します。

トラブルシューティング

ポッド内の 「YAML」 タブまたは 「Logs」 タブを確認します。 サーバーが稼働している場合は、そのポッドの端末を開き、 /logs で生成されたログ・ファイルを確認してサーバーに関する問題を特定します。