10.7.3. テンプレートパラメーターの作成
パラメーターにより、テンプレートがインスタンス化される時に値を生成するか、ユーザーが値を指定できるようになります。パラメーターが参照されると、値が置換されます。参照は、オブジェクト一覧フィールドであればどこでも定義できます。これは、無作為にパスワードを作成したり、テンプレートのカスタマイズに必要なユーザー固有の値やホスト名を指定したりできるので便利です。パラメーターは、2 種類の方法で参照可能です。
- 文字列の値として、テンプレートの文字列フィールドに ${PARAMETER_NAME} の形式で配置する
- json/yaml の値として、テンプレートのフィールドに ${{PARAMETER_NAME}} の形式で配置する
${PARAMETER_NAME} 構文を使用すると、複数のパラメーター参照を 1 つのフィールドに統合でき、"http://${PARAMETER_1}${PARAMETER_2}" などのように、参照を固定データ内に埋め込むことができます。どちらのパラメーター値も置換されて、引用された文字列が最終的な値になります。
${{PARAMETER_NAME}} 構文のみを使用する場合は、単一のパラメーター参照のみが許可され、先頭文字や終了文字は使用できません。結果の値は、置換後に結果が有効な json オブジェクトの場合は引用されません。結果が有効な json 値でない場合に、結果の値は引用され、標準の文字列として処理されます。
単一のパラメーターは、テンプレート内で複数回参照でき、1 つのテンプレート内で両方の置換構文を使用して参照することができます。
デフォルト値を指定でき、ユーザーが別の値を指定していない場合に使用されます。
以下は、明示的な値をデフォルト値として設定する例です。
parameters: - name: USERNAME description: "The user name for Joe" value: joe
パラメーター値は、パラメーター定義に指定したルールを基に生成することも可能です。 以下は、パラメーター値の生成例です。
parameters: - name: PASSWORD description: "The random user password" generate: expression from: "[a-zA-Z0-9]{12}"
上記の例では、処理後に、英字の大文字、小文字、数字すべてを含む 12 文字長のパスワードが無作為に作成されます。
利用可能な構文は、完全な正規表現構文ではありません。ただし、\w
、\d
、および \a
修飾子を使用できます。
-
[\w]{10}
は、10 桁の英字、数字、およびアンダースコアを生成します。これは PCRE 標準に準拠し、[a-zA-Z0-9_]{10}
に相当します。 -
[\d]{10}
は 10 桁の数字を生成します。これは[0-9]{10}
に相当します。 -
[\a]{10}
は 10 桁の英字を生成します。これは[a-zA-Z]{10}
に相当します。
以下は、パラメーター定義と参照を含む完全なテンプレートの例です。
kind: Template apiVersion: v1 metadata: name: my-template objects: - kind: BuildConfig apiVersion: v1 metadata: name: cakephp-mysql-example annotations: description: Defines how to build the application spec: source: type: Git git: uri: "${SOURCE_REPOSITORY_URL}" 1 ref: "${SOURCE_REPOSITORY_REF}" contextDir: "${CONTEXT_DIR}" - kind: DeploymentConfig apiVersion: v1 metadata: name: frontend spec: replicas: "${{REPLICA_COUNT}}" 2 parameters: - name: SOURCE_REPOSITORY_URL 3 displayName: Source Repository URL 4 description: The URL of the repository with your application source code 5 value: https://github.com/sclorg/cakephp-ex.git 6 required: true 7 - name: GITHUB_WEBHOOK_SECRET description: A secret string used to configure the GitHub webhook generate: expression 8 from: "[a-zA-Z0-9]{40}" 9 - name: REPLICA_COUNT description: Number of replicas to run value: "2" required: true message: "... The GitHub webhook secret is ${GITHUB_WEBHOOK_SECRET} ..." 10
- 1
- この値は、テンプレートがインスタンス化された時点で
SOURCE_REPOSITORY_URL
パラメーターに置き換えられます。 - 2
- この値は、テンプレートがインスタンス化された時点で、
REPLICA_COUNT
パラメーターの引用なしの値に置き換えられます。 - 3
- パラメーター名。この値は、テンプレート内でパラメーターを参照するのに使用します。
- 4
- 分かりやすいパラメーターの名前。これは、ユーザーに表示されます。
- 5
- パラメーターの説明。期待値に対する制約など、パラメーターの目的を詳細にわたり説明します。説明には、コンソールのテキスト標準に従い、完結した文章を使用するようにしてください。表示名と同じ内容を使用しないでください。
- 6
- テンプレートをインスタンス化する時に、ユーザーにより値が上書きされない場合に使用されるパラメーターのデフォルト値。パスワードなどのデフォルト値の使用を避けるようにしてください。 シークレットと組み合わせた生成パラメーターを使用するようにしてください。
- 7
- このパラメーターが必須であることを示します。つまり、ユーザーは空の値で上書きできません。パラメーターでデフォルト値または生成値が指定されていない場合には、ユーザーは値を指定する必要があります。
- 8
- 値が生成されるパラメーター
- 9
- ジェネレーターへの入力。この場合、ジェネレーターは、大文字、小文字を含む 40 桁の英数字の値を生成します。
- 10
- パラメーターはテンプレートメッセージに含めることができます。これにより、生成された値がユーザーに通知されます。