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: trueuseLocalDerby (必須) この DBB サーバーのデプロイメントで、データベースとして Derby を使用することを示します。
useLocalDerby: truedbbProperties (オプション) サーバー構成内のデフォルトの
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.*=debugjvmOptions (オプション) サーバー構成内のデフォルトの
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="(&(uid=%v)(objectclass=inetOrgPerson))" groupFilter="(&(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: 1env (オプション) DBBEnvVar 変数をサーバー構成に追加することができます。 これらの変数は、サーバー構成で使用するために、例えば環境変数として、または環境変数やファイルなどの「configMap の参照」フィールドで使用できます。 詳しくは、『DBBEnvVar』を参照してください。
env: - name: name1 value: abc - name: name2 value: value2 path: value.txtderbyPVClaimSpec (オプション) コンテナーが停止して再開した場合、コンテナーの実行中に書き込まれたファイルや変更されたファイルは、保持されません。 データベースの更新を保持する永続的なストレージが必要になります。 このプロパティーは、Derby データベースのデフォルトの永続ボリューム要求をオーバーライドします。 このプロパティーについて詳しくは、「corev1.PersistentVolumeClaimSpec」 を参照してください。
derbyPVClaimSpec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: dbb-derbylogsPVClaimSpec (オプション) コンテナーが停止して再開した場合、コンテナーの実行中に書き込まれたファイルや変更されたファイルは、保持されません。 データベースの更新を保持する永続的なストレージが必要になります。 このプロパティーは、 ログ・ファイルのデフォルトの永続ボリューム要求をオーバーライドします。 このプロパティーについて詳しくは、「corev1.PersistentVolumeClaimSpec」 を参照してください。
logsPVClaimSpec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: dbb-logsvolumes (オプション) DBB サーバー・コンテナーにマウントしたい追加ボリュームのリストを定義します。 例えば、SSL 構成のために鍵ストアとトラストストアを含む追加のボリュームをマウントすることが必要な場合があります。 ボリュームを定義する方法の詳細については、「corev1.Volume」を参照してください。
この例では、OCP シークレットのボリュームを定義します。volumes: - name: secret-volume secret: secretName: mydbb-dbb-secretsvolumeMounts (オプション) DBB サーバー・コンテナーにマウントしたい追加のボリューム・マウントのリストを定義します。 例えば、SSL 構成のために鍵ストアとトラストストアを含む追加のボリュームをマウントすることが必要な場合があります。 VolumeMount を定義する方法の詳細については、『corev1.VolumeMount』 を参照してください。 この例では、前述のボリューム例に対してマウントを定義します。 シークレットの各項目は、
/etc/secret-volume内で個別のファイルになります。volumeMounts: - name: secret-volume readOnly: true mountPath: /etc/secret-volumeresources (オプション) DBB サーバーのコンテナー環境に定義されたデフォルトのリソースをオーバーライドします。 ビジー状態が多いサーバーでは、使用可能リソースをより多く必要とする可能性があります。 使用可能な JVM リソースを増やすために、
jvmOptionsを指定することが必要な場合があります。 リソースの指定について詳しくは、 『corev1.ResourceRequirements』を参照してください。resources: limits: cpu: "2" memory: 8Gi requests: cpu: "1" memory: 3Giautoscaler (オプション) 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: 2maxReplicas このデプロイメントで開始する DBB サーバーの最大数を指定する数値。
maxReplicas: 10metrics
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 に使用される名前空間を選択してモニターすることができます。
oc クライアントを使用して、クラスターにログインします。
oc login https://<your_cluster_hostname> -u <username> -p <password>名前空間を作成し、DBB OCP リソース用にプロジェクトを設定するか、ステップ 3 の
「--namespace <namespace>」オプションを使用します。oc create namespace <namespace>注:固有の名前空間は、複数の DBB サーバーのデプロイメントでは必須ではありませんが、使用することをお勧めします。
CR のデプロイ
oc apply -f dbbserver_cr.yaml
DBB サーバー・セットアップの検証
OpenShift クラスター・コンソールにログインします。
左側のメニューの 「Workloads」 タブを展開し、 **「Pods」**をクリックします。
「Pods」 ページで、ドロップダウン・リストからプロジェクトを選択します。
ポッドの
<cr_name>「-dbb-deployment-1-<id>」は**「Running」**状況になっているはずです。 ポッドをクリックし、エラーが発生していないか「YAML またはログ (YAML or logs)」を確かめます。左側のメニューの **「Networking」**タブをクリックして、 **「Routes」**をクリックします。
dbb-serverルートのロケーション URL をメモしておいてください。 この URL のホスト名を後ほどのステップで使用します。https://<hostname>/dbb/rest/collectionに移動します。構成済みのいずれかの DBBAdmins 認証情報を使ってログインします。
コレクションが何もリストされていない状態で、「DBB コレクション (DBB Collections)」という見出しが表示されます。
サンプル・コレクションを作成します。
https://<hostname>/dbb/rest/collection/setupに移動します。 「OK - セットアップ完了 (OK - Setup completed)」と表示されることを確認します。https://<hostname>/dbb/rest/collectionに移動します。 コレクションのリスト (「Collection1」、「Collection2」、および「Collection3」) が表示されることを確認します。各コレクションにナビゲートし、論理ファイルと論理依存関係を確認します。
トラブルシューティング
ポッド内の 「YAML」 タブまたは 「Logs」 タブを確認します。 サーバーが稼働している場合は、そのポッドの端末を開き、 /logs で生成されたログ・ファイルを確認してサーバーに関する問題を特定します。