Discover DomainおよびPrepare Modelツールを使用すると、特定のターゲット環境との互換性を確保するために生成されたモデルおよびその他のファイルをカスタマイズできます。 ターゲット環境のオプションには、次のものがあります:
各ツールは、コマンドライン引数-target <target-name>
を使用してターゲット環境を指定します。<target-name>
は事前構成済ターゲット環境またはユーザー定義環境を表します。 また、-output_dir <output-directory>
引数は、ターゲット環境のファイルの格納場所を指定します。
次のコマンド行は、Discover Domain Toolでこれらの引数を使用する方法を示しています:
$ $WLSDEPLOY_HOME/bin/discoverDomain.sh ... -target k8s -output_dir /etc/files
この例では、k8s
ターゲット・タイプを検出結果に適用し、それらのファイルを/etc/files
に配置します。
-variable_file
引数を使用してツールのコマンドラインで変数ファイルを指定すると、インジェクトされた変数がそのファイルに追加されます。 変数ファイルが指定されていない場合、インジェクトされた変数は<output-directory>/<target_name>_variable.properties
ファイルに書き込まれます。
これらのターゲット環境構成は、WebLogic Deploy Toolingインストールに含まれています。
これらのターゲットを使用して、モデルをカスタマイズし、WebLogic Kubernetes Operator (WKO)で使用するドメイン・リソース・ファイルを作成できます。 特定のドメイン・ホーム・ソース・タイプには3つのターゲットがあります:
wko
およびwko<version>
wko-dii
およびwko<version>-dii
wko-pv
およびwko<version>-pv
<version>
の値は、WKOのメジャー・バージョンに対応します。 たとえば、ターゲットwko4-dii
は、WKOバージョン4.0.0以降のDomain in Imageデプロイメントのモデルをカスタマイズします。
バージョン番号のないターゲット(wko-dii
など)は、現在のバージョンのWKOのモデルをカスタマイズします。 WKOの新しいバージョンがリリースされると、この関連付けが変更される可能性があるため、目的のWKOバージョンでターゲット名を使用することをお薦めします。
これらの各ターゲットは、次の追加処理を提供します:
wko_filter
フィルタは、Kubernetes環境と互換性がないモデル要素を削除し、いくつかの属性値を調整するために適用されますlax
バリデーションは、結果のモデルに適用されますwko-domain.yaml
が作成され、クラスタおよびモデルから導出されたネーミング情報が生成されますまた、wko
ターゲットは、モデル内の資格証明をKubernetesシークレットへの参照に置き換え、これらのシークレットを作成するためのスクリプトを生成します。 wko-dii
およびwko-pv
ターゲットは、モデル内の資格証明を変数参照に置き換えます。
ノート: Verrazzanoサポートは、WDT 4.0.0で非推奨になりました。
これらのターゲットを使用して、モデルをカスタマイズし、Verrazzanoで使用するKubernetesリソース・ファイルを作成できます。 特定のドメイン・ホーム・ソース・タイプには3つのターゲットがあります:
vz
vz-dii
vz-pv
これらの各ターゲットは、次の追加処理を提供します:
vz_filter
フィルタは、Kubernetes環境と互換性がないモデル要素を削除し、いくつかの属性値を調整するために適用されますlax
バリデーションは、結果のモデルに適用されますvz-application.yaml
が、モデルから導出されたクラスタおよびデータ・ソース情報とともに生成されますまた、vz
ターゲットは、モデル内の資格証明をKubernetesシークレットへの参照に置き換え、これらのシークレットを作成するためのスクリプトを生成します。 vz-dii
およびvz-pv
ターゲットは、モデル内の資格証明を変数参照に置き換えます。
このターゲット環境を適用するには、コマンドライン引数-target k8s
を指定します。 次の追加処理が行われます:
k8s_filter
フィルタは、Kubernetes環境と互換性がないモデル要素を削除し、いくつかの属性値を調整するために適用されますlax
バリデーションは、結果のモデルに適用されますターゲット環境が資格証明属性値に対してKubernetesシークレットを使用するように構成されている場合、これらの各値は@@SECRET:@@ENV:DOMAIN_UID@@<secret-suffix>:<key>
という形式を使用してトークンに置き換えられます。 例えば:
PasswordEncrypted: '@@SECRET:@@ENV:DOMAIN_UID@@-jdbc-generic1:password@@'
これらのトークンを持つモデルを使用してドメインを作成または更新する場合、環境変数DOMAIN_UID
をドメインのUIDに設定し、対応する名前を持つシークレットを作成する必要があります。 シークレット・トークンの使用方法の詳細は、「モデル・トークン」を参照してください。
一部のターゲット環境では、WebLogic管理資格証明はこのトークン形式のバリエーションを使用します。 例えば:
domainInfo:
AdminUserName: '@@SECRET:__weblogic-credentials__:username@@'
AdminPassword: '@@SECRET:__weblogic-credentials__:password@@'
この場合、トークン__weblogic-credentials__
では、これらの属性が特定のロケーションのシークレットを参照できます。 WDT_MODEL_SECRETS_NAME_DIR_PAIRS
環境変数は、__weblogic-credentials__
をこのロケーションに関連付けるように設定する必要があります。 例えば:
WDT_MODEL_SECRETS_NAME_DIR_PAIRS=__weblogic-credentials__=/etc/my-secrets
WDT_MODEL_SECRETS_NAME_DIR_PAIRS
環境変数の使用方法の詳細は、「モデル・トークン」を参照してください。
WebLogic Kubernetes Operator Model in Image環境では、環境変数DOMAIN_UID
はドメイン・リソース・ファイルの値から自動的に設定されます。 変数WDT_MODEL_SECRETS_NAME_DIR_PAIRS
は、WebLogic管理資格証明を含むディレクトリに自動的に設定されます。
Kubernetesシークレット・トークンを使用するターゲット環境では、必要なシークレットを生成するためのシェル・スクリプトが作成されます。 スクリプトの名前はcreate_k8s_secrets.sh
で、ターゲット出力ディレクトリに作成されます。 スクリプトには、各シークレットを作成するコマンドがあります。次に例を示します:
# Update <user> and <password> for weblogic-credentials
create_paired_k8s_secret weblogic-credentials <user> <password>
スクリプトは、必要に応じて正しい<user>
および<password>
値で更新する必要があります。 ターゲット環境で異なる場合は、スクリプトの最上部にあるNAMESPACE
およびDOMAIN_UID
変数を変更する必要がある場合があります。
スクリプトは、生成されたシークレット名の長さが63文字を超えているかどうかを判断するチェックを実行します。これは、Kubernetes環境で正しくマウントされないためです。 この制限を超えるシークレット名がある場合は、このスクリプト、モデル・ファイルおよびKubernetesリソース・ファイルで短縮する必要があります。 各短縮名は、他のシークレット名と区別する必要があります。
ターゲット環境に対してKubernetesカスタム・リソース定義(CRD)ファイルが作成されると、そのセクションが存在する場合は、WDTモデルの対応するセクションのコンテンツが結果の出力にマージされます。
たとえば、-target wko
オプションを使用すると、WDTモデルのkubernetes
セクションの内容が結果のCRDにマージされます(そのセクションが存在する場合)。 たとえば、モデルでこのセクションを定義できます:
kubernetes:
spec:
domainHome: /etc/domainHome
image: my-image
clusters:
- clusterName: my-cluster
replicas: 4
- clusterName: other-cluster
replicas: 6
これらのフィールドは出力ファイルの値をオーバーライドし、ファイルは改訂された値で書き換えられます。 モデル内のリスト値は、出力ファイル内の既存の値と結合されます。 たとえば、my-cluster
が元の出力ファイルにあった場合、my-cluster
のモデル・コンテンツがマージされ、replicas
値がオーバーライドされます。 my-cluster
が元の出力ファイルにない場合は、クラスタのリストに追加されます。
WebLogic Kubernetes Operatorバージョン4.0.0以降のリソース・ファイルを作成する場合は、モデルのkubernetes
セクションを異なる構造にする必要があります。 これは、これらのバージョンのリソース・ファイルに複数のドキュメントがあるためです。 この例では、domain
およびcluster
フォルダを使用して、リソース・ファイル内の対応するドキュメントにマージします:
kubernetes:
domain:
spec:
domainHome: /etc/domainHome
image: my-image
clusters:
- spec:
clusterName: my-cluster
replicas: 4
- spec:
clusterName: other-cluster
replicas: 6
VerrazzanoのCRDを作成する場合、WDTモデルのverrazzano
セクションのコンテンツは、前述の例と同様に結果の出力にマージされます。 verrazzano
セクションの3つのサブセクションはそれぞれ、CRD内の対応するドキュメントとマージされます。 この例は、3つのサブセクションを持つWDTモデルのverrazzano
セクションを示しています:
verrazzano:
application:
spec:
components:
- componentName: mydomain-mycomponent
traits:
- trait:
apiVersion: oam.verrazzano.io/v1alpha1
kind: LoggingTrait
spec:
imagePullPolicy: NEVER
weblogic:
spec:
workload:
spec:
template:
spec:
domainHome: /u01/mydomain
clusters:
- name: cluster2
clusters:
- spec:
clusterName: cluster2
replicas: 1102
configmap:
spec:
workload:
data:
wdt_jdbc.yaml: |
resources:
JDBCSystemResource:
myDs:
JdbcResource:
JDBCDriverParams:
URL: "jdbc:oracle:thin:@myhost:1521/pdborcl"
ターゲット環境は、次のロケーションのJSONファイルに構成されます:
$WLSDEPLOY_HOME/lib/targets/<target-name>/target.json
<target-name>
値は、ツールのコマンドラインの-target
引数の値に対応します。 WLSインストールには、次の環境用に事前定義されたターゲットが含まれます:
上記のロケーションで新しいtarget-name
を使用して、または$WDT_CUSTOM_CONFIG/target/<my-target-name>/target.json
などの「カスタム構成」ディレクトリを使用して、新規または拡張ターゲット環境を定義できます。
特定の環境用に既存のテンプレート・ファイルをカスタマイズできます。 推奨されるメソッドは、前述のカスタム構成ディレクトリに元のテンプレートをコピーすることです($WDT_CUSTOM_CONFIG/target/<target-name>/model.yaml
など)。 コピーしたファイルは必要に応じて編集でき、元のファイルは参照用に維持されます。
ターゲット環境ファイルの例を次に示します:
{
"model_filters" : {
"discover": [
{ "name": "vz_prep", "path": "@@TARGET_CONFIG_DIR@@/vz_filter.py" },
{ "id": "wko_filter" }
]
},
"variable_injectors" : {"PORT": {},"HOST": {},"URL": {}},
"validation_method" : "lax",
"credentials_method" : "secrets",
"exclude_domain_bin_contents": true,
"wls_credentials_name" : "__weblogic-credentials__",
"use_persistent_volume" : true,
"additional_secrets": "runtime-encryption-secret",
"additional_output" : "vz-application.yaml"
}
この例の各フィールドはオプションであり、カスタマイズできます。
model_filters
このフィールドは、結果のモデルに適用するフィルタを指定します。 これは、「モデル・フィルタ」構成と同じ形式およびルールに従います。 discover
タイプは必ずここで使用する必要があります。
@@TARGET_CONFIG_DIR@@
トークンを使用して、指定したフィルタがターゲット構成ファイルと同じディレクトリにあることを示すことができます。
variable_injectors
このフィールドは、結果のモデルに適用する変数インジェクタを指定します。 これは、「変数インジェクタ」構成と同じ形式およびルールに従います。
validation_method
このフィールドを使用して、結果のモデルのバリデーション・レベルを設定できます。 現在サポートされているのは、値lax
のみです。 lax
バリデーションでは、結果モデルで参照される変数およびKubernetesシークレットは、モデルの作成時に使用可能にする必要はありません。
credentials_method
このフィールドは、モデルの資格証明を処理する方法を指定します。 次の2つの値があります:
secrets
- モデル内の資格証明はKubernetesシークレットへの参照に置き換えられ、それらのシークレットを作成するためのUNIXスクリプトが生成されます。config_override_secrets
- モデルの資格証明は、password1
などのプレースホルダー値に置き換えられ、対応するKubernetesシークレットを作成するためのUNIXスクリプトが生成されます。どちらの場合も、Kubernetesシークレットを作成するスクリプトが<output-directory>/create_k8s_secrets.sh
に書き込まれます。 実行前に、このスクリプトを資格証明値で更新する必要があります
exclude_domain_bin_contents
このフィールドは、ドメインのbin
ディレクトリの内容を処理する方法を指定します。 true
に設定すると、検出によってドメインのbin
ディレクトリがスキップされ、通常は収集されるスクリプト(setUserOverrides.sh
など)への参照がなくてもモデルおよびアーカイブ・ファイルが作成されます。
wls_credentials_name
このフィールドは、ドメインの管理資格証明シークレットを識別するためにWDT_MODEL_SECRETS_NAME_DIR_PAIRS環境変数で使用する名前を指定します。 これは、これらのシークレットが<directory>/<name>/<key>
規則に従わないディレクトリに格納される場合に役立ちます。 WDT_MODEL_SECRETS_NAME_DIR_PAIRS環境変数の使用方法の詳細は、「モデル・トークン」を参照してください。
use_persistent_volume
このフィールドは、Domain in PV 「ドメイン・ホーム・ソース・タイプ」のドメインを作成するかどうかを指定します。 true
に設定すると、ボリューム情報が生成されるKubernetesリソース・ファイルに追加されます。
additional_secrets
このフィールドは、Kubernetesリソース・ファイルと作成シークレット・スクリプトに含めるシークレット・タイプのカンマ区切りリストを指定します。 使用可能なシークレット・タイプが1つあります:
runtime-encryption-secret
- これにより、<DOMAIN_UID>-runtime-encryption-secret
という値を持つKubernetesリソース・ファイルにruntimeEncryptionSecret
属性が追加され、そのシークレット名が「シークレット・スクリプトの作成」に追加されます。additional_output
このフィールドを使用して、ターゲット環境で使用する追加の出力を作成できます。 値は、$WLSDEPLOY_HOME/lib/targets/templates
ディレクトリのテンプレート・ファイルのカンマ区切りリストです。 これらのテンプレートには、モデルから導出された情報が移入され、指定した出力ディレクトリに同じ名前のファイルに書き込まれます。
ノート: 2.0.1のリリース前は、テンプレート・ファイルが$WLSDEPLOY_HOME/lib/targets/<target-name>
ディレクトリに格納されていました。