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>-diiwko-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つのターゲットがあります:
vzvz-diivz-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>ディレクトリに格納されていました。