第10章 Templates (テンプレート)
10.1. 概要
テンプレートでは、パラメーター化や処理可能な「オブジェクト」を記述し、OpenShift Container Platform で構築するためのオブジェクト一覧を生成します。テンプレートは、「サービス」、「ビルド設定」および「デプロイメント設定」など、プロジェクト内で作成パーミッションがあるすべてのものを作成するために処理できます。また、テンプレートでは、「ラベル」のセットを定義して、これをテンプレート内に定義された全オブジェクトに適用できます。
CLI を使用する か、プロジェクトまたはグローバルテンプレートライブラリーに テンプレートがアップロードされている場合 には、Web コンソール を使用して、テンプレートからオブジェクト一覧を作成できます。キュレートされたテンプレートの場合は、OpenShift イメージストリームおよびテンプレートライブラリー を参照してください。
10.2. テンプレートのアップロード
テンプレートを定義する JSON または YAML ファイルがある場合は、「この例」にあるように、CLI を使用してプロジェクトに、テンプレートをアップロードできます。こうすることで、プロジェクトにテンプレートが保存され、対象のプロジェクトに対して適切なアクセス権があるユーザーにより、繰り返し使用できます。「独自のテンプレートの記述」については、このトピックで後ほど説明します。
現在のプロジェクトのテンプレートライブラリーにテンプレートをアップロードするには、JSON または YAML ファイルを以下のコマンドで渡します。
$ oc create -f <filename>
-n
オプションを使用してプロジェクト名を指定することで、別のプロジェクトにテンプレートをアップロードできます。
$ oc create -f <filename> -n <project>
テンプレートは、Web コンソールまたは CLI を使用して選択できるようになりました。
10.3. Web コンソールを使用してテンプレートから作成する手順
「Web コンソールを使用したアプリケーションの作成」を参照してください。
10.4. CLI を使用してテンプレートから作成する手順
CLI を使用して、テンプレートを処理し、オブジェクトを作成するために生成された設定を使用できます。
10.4.1. ラベル
「ラベル」は Pod などの生成されるオブジェクトを管理し、整理するのに使用されます。テンプレートで指定したラベルはテンプレートから生成されるすべてのオブジェクトに適用されます。
コマンドラインからテンプレートにラベルを追加する機能もあります。
$ oc process -f <filename> -l name=otherLabel
10.4.2. パラメーター
上書き可能なパラメーターの一覧は、テンプレートの「parameters
セクション」に記載されています。以下のコマンドで使用するファイルを指定して、CLI でパラメーター一覧を追加できます。
$ oc process --parameters -f <filename>
または、テンプレートがすでにアップロードされている場合には、以下を実行します。
$ oc process --parameters -n <project> <template_name>
たとえば、デフォルトの openshift プロジェクトにあるクイックスタートテンプレートのいずれかに対してパラメーターを追加した場合に、以下のような出力が表示されます。
$ oc process --parameters -n openshift rails-postgresql-example NAME DESCRIPTION GENERATOR VALUE SOURCE_REPOSITORY_URL The URL of the repository with your application source code https://github.com/sclorg/rails-ex.git SOURCE_REPOSITORY_REF Set this to a branch name, tag or other ref of your repository if you are not using the default branch CONTEXT_DIR Set this to the relative path to your project if it is not in the root of your repository APPLICATION_DOMAIN The exposed hostname that will route to the Rails service rails-postgresql-example.openshiftapps.com GITHUB_WEBHOOK_SECRET A secret string used to configure the GitHub webhook expression [a-zA-Z0-9]{40} SECRET_KEY_BASE Your secret key for verifying the integrity of signed cookies expression [a-z0-9]{127} APPLICATION_USER The application user that is used within the sample application to authorize access on pages openshift APPLICATION_PASSWORD The application password that is used within the sample application to authorize access on pages secret DATABASE_SERVICE_NAME Database service name postgresql POSTGRESQL_USER database username expression user[A-Z0-9]{3} POSTGRESQL_PASSWORD database password expression [a-zA-Z0-9]{8} POSTGRESQL_DATABASE database name root POSTGRESQL_MAX_CONNECTIONS database max connections 10 POSTGRESQL_SHARED_BUFFERS database shared buffers 12MB
この出力から、テンプレートの処理時に正規表現のようなジェネレーターで生成された複数のパラメーターを特定できます。
10.4.3. オブジェクト一覧の生成
CLI を使用して、標準出力にオブジェクト一覧を返すテンプレートを定義するファイルを処理できます。
$ oc process -f <filename>
または、テンプレートがすでに現在のプロジェクトにアップロードされている場合には以下を実行します。
$ oc process <template_name>
テンプレートを処理し、oc create
の出力をパイプして、テンプレートからオブジェクトを作成することができます。
$ oc process -f <filename> | oc create -f -
または、テンプレートがすでに現在のプロジェクトにアップロードされている場合には以下を実行します。
$ oc process <template> | oc create -f -
上書きする <name>=<value>
の各ペアに、-p
オプションを追加することで、ファイルに定義された パラメーター の値を上書きできます。パラメーター参照は、テンプレートアイテム内のテキストフィールドに表示される場合があります。
たとえば、テンプレート内の以下の POSTGRESQL_USER
および POSTGRESQL_DATABASE
パラメーターを上書きし、カスタマイズされた環境変数での設定を出力します。
例10.1 テンプレートからのオブジェクト一覧の作成
$ oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabase
JSON ファイルは、ファイルにリダイレクトすることも、oc create
コマンドで、処理済みの出力をパイプして、テンプレートをアップロードせずに直接適用することも可能です。
$ oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabase \ | oc create -f -
多数のパラメーターがある場合は、それらをファイルに保存してからそのファイルを oc process
に渡すことができます。
$ cat postgres.env POSTGRESQL_USER=bob POSTGRESQL_DATABASE=mydatabase $ oc process -f my-rails-postgresql --param-file=postgres.env
--param-file
の引数として "-"
を使用して、標準入力から環境を読み込むこともできます。
$ sed s/bob/alice/ postgres.env | oc process -f my-rails-postgresql --param-file=-
10.5. アップロードしたテンプレートの変更
以下のコマンドを使用して、すでにプロジェクトにアップロードされているテンプレートを編集できます。
$ oc edit template <template>
10.6. インスタントアプリおよびクイックスタートテンプレートの使用
OpenShift Container Platform では、デフォルトで、インスタントアプリとクイックスタートテンプレートを複数提供しており、各種言語で簡単に新規アプリの構築を開始できます。Rails (Ruby)、Django (Python)、Node.js、CakePHP (PHP) および Dancer (Perl) 用のテンプレートを利用できます。クラスター管理者は、これらのテンプレートを利用できるようにデフォルトのグローバル openshift プロジェクトにこれらのテンプレートを作成しているはずです。デフォルトで利用可能なインスタントアプリやクイックスタートテンプレートを一覧表示するには、以下を実行します。
$ oc get templates -n openshift
見つからない場合には、クラスター管理者に「デフォルトのイメージストリームとテンプレートの読み込み」のトピックを参照してもらうようにしてください。
デフォルトでは、テンプレートビルドは GitHub の公開ソースリポジトリーを使用し、これには必要なアプリケーションコードが含まれます。ソースを変更して、独自のバージョンのアプリケーションをビルドするには、以下を実行する必要があります。
-
テンプレートのデフォルト
SOURCE_REPOSITORY_URL
パラメーターが参照するリポジトリーをフォークします。 -
テンプレートから作成する場合には、
SOURCE_REPOSITORY_URL
パラメーターの値を上書きします。デフォルト値ではなく、フォークを指定してください。
これにより、テンプレートで作成したビルド設定はアプリケーションコードのフォークを参照するようになり、コードを更新して、自由にアプリケーションをリビルドできます。
Web コンソールを使用してこのプロセスを行う場合は、「開発者向けのスタートガイド: Web コンソール」を参照してください。
インスタンスアプリおよびクイックスタートアプリのテンプレートで、データベースの「デプロイメント設定」を定義するものもあります。テンプレートが定義する設定では、データベースコンテンツ用に一時ストレージを使用します。データベース Pod が何らかの理由で再起動されると、データベースの全データが失われてしまうので、これらのテンプレートは、デモ目的でのみ使用する必要があります。
10.7. テンプレートの記述
アプリケーションの全オブジェクトを簡単に再作成するために、新規テンプレートを定義できます。テンプレートでは、作成するオブジェクトと、これらのオブジェクトの作成をガイドするメタデータを定義します。
例10.2 シンプルなテンプレートオブジェクト定義 (YAML)
apiVersion: v1 kind: Template metadata: name: redis-template annotations: description: "Description" iconClass: "icon-redis" tags: "database,nosql" objects: - apiVersion: v1 kind: Pod metadata: name: redis-master spec: containers: - env: - name: REDIS_PASSWORD value: ${REDIS_PASSWORD} image: dockerfile/redis name: master ports: - containerPort: 6379 protocol: TCP parameters: - description: Password used for Redis authentication from: '[A-Z0-9]{8}' generate: expression name: REDIS_PASSWORD labels: redis: master
10.7.1. 説明
テンプレートの説明では、テンプレートの内容に関する情報を提供でき、Web コンソールでの検索時に役立ちます。テンプレート名以外のメタデータは任意ですが、使用すると便利です。メタデータには、一般的な説明などの情報以外にタグのセットも含まれます。便利なタグにはテンプレートで使用する言語名などがあります (例: java、php、ruby )。
例10.3 テンプレート記述メタデータ
kind: Template apiVersion: v1 metadata: name: cakephp-mysql-example 1 annotations: openshift.io/display-name: "CakePHP MySQL Example (Ephemeral)" 2 description: >- An example CakePHP application with a MySQL database. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/cakephp-ex/blob/master/README.md. WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing." 3 openshift.io/long-description: >- This template defines resources needed to develop a CakePHP application, including a build configuration, application deployment configuration, and database deployment configuration. The database is stored in non-persistent storage, so this configuration should be used for experimental purposes only. 4 tags: "quickstart,php,cakephp" 5 iconClass: icon-php 6 openshift.io/provider-display-name: "Red Hat, Inc." 7 openshift.io/documentation-url: "https://github.com/sclorg/cakephp-ex" 8 openshift.io/support-url: "https://access.redhat.com" 9 message: "Your admin credentials are ${ADMIN_USERNAME}:${ADMIN_PASSWORD}" 10
- 1
- テンプレートの一意名
- 2
- ユーザーインターフェースで利用できるように、ユーザーに分かりやすく、簡単な名前。
- 3
- テンプレートの説明。デプロイされる内容、デプロイ前に知っておく必要のある注意点をユーザーができるように詳細を追加します。README など、追加情報へのリンクも追加できます。パラグラフを作成するには、改行を追加できます。
- 4
- 追加の説明。たとえば、サービスカタログに表示されます。
- 5
- 検索とグループ化ができるように、テンプレートに関連付けるタグ。指定のカタログカテゴリーの 1 つに含まれるように、タグを追加します。コンソールの constants ファイル で、
CATALOG_CATEGORIES
のid
とcategoryAliases
を参照してください。カテゴリーは、クラスター全体用に「カスタマイズ」することも可能です。 - 6
- Web コンソールでテンプレートと一緒に表示されるアイコン。可能な場合は、既存の ロゴアイコン から選択します。また、FontAwesome や PatternFly からもアイコンを使用できます。または、テンプレートを使用する OpenShift Container Platform クラスターに「CSS カスタマイズ」を追加できるので、CSS カスタマイズ経由でアイコンを提供します。存在するアイコンクラスを指定するようにしてください。指定しないと、汎用アイコンにフォールバックできなくなります。
- 7
- テンプレートを提供する人または組織の名前
- 8
- テンプレートに関する他のドキュメントを参照する URL
- 9
- テンプレートに関するサポートを取得できる URL
- 10
- テンプレートがインスタンス化された時に表示される説明メッセージ。このフィールドで、新規作成されたリソースの使用方法を通知します。生成された認証情報や他のパラメーターが出力に追加できるように、メッセージの表示前に、パラメーターの置換が行われます。ユーザーが従うべき次の手順が記載されたドキュメントへのリンクを追加してください。
10.7.2. ラベル
テンプレートには「ラベル」のセットを追加できます。これらのラベルは、テンプレートがインスタンス化される時に作成されるオブジェクトごとに追加します。このようにラベルを定義すると、特定のテンプレートから作成された全オブジェクトの検索、管理が簡単になります。
10.7.3. パラメーター
パラメーターにより、テンプレートがインスタンス化される時に値を生成するか、ユーザーが値を指定できるようになります。値は、パラメーターが参照されると、置換されます。参照は、オブジェクト一覧フィールドであればどこでも定義できます。これは、無作為にパスワードを作成したり、テンプレートのカスタマイズに必要なユーザー固有の値やホスト名を指定したりできるので便利です。パラメーターは、2 種類の方法で参照可能です。
- 文字列の値として、テンプレートも文字列フィールドに ${PARAMETER_NAME} の形式で配置する
- json/yaml の値として、テンプレートのフィールドに ${{PARAMETER_NAME}} の形式で配置する
${PARAMETER_NAME} 構文を使用すると、複数のパラメーター参照を 1 つフィールドに統合でき、"http://${PARAMETER_1}${PARAMETER_2}" などのように、参照を固定のデータ内に埋め込むことができます。どちらのパラメーター値も置換されて、引用された文字列が最終的な値になります。
${{PARAMETER_NAME}} 構文のみを使用する場合は、単一のパラメーター参照のみが可能で、先頭文字や終了文字は使用できません。結果値は、置換した後に結果が有効な json オブジェクトでない限り、引用されません。結果が有効な json 値でない場合に、結果値は引用され、標準の文字列として処理されます。
単一のパラメーターは、テンプレート内で複数回参照でき、また、1 つのテンプレート内で両方の置換構文を使用して参照することができます。
デフォルト値を指定でき、ユーザーが別の値を指定していない場合に使用されます。
例10.5 デフォルト値として明示的な値の設定
parameters: - name: USERNAME description: "The user name for Joe" value: joe
パラメーター値は、パラメーター定義に指定したルールを基に生成することも可能です。
例10.6 パラメーター値の生成
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}
に相当します。
以下は、パラメーター定義と参照を含む完全なテンプレートの例です。
例10.7 パラメーター定義と参照を含む完全なテンプレート
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
- パラメーターは、テンプレートメッセージに追加できるので、メッセージで、生成した値をユーザーに通知します。
10.7.4. オブジェクト一覧
テンプレートの主な部分は、テンプレートがインスタンス化される時に作成されるオブジェクトの一覧です。これには、BuildConfig
、DeploymentConfig
、Service
など、「有効な API オブジェクト」を使用できます。オブジェクトは、ここで定義された通りに作成され、パラメーターの値は作成前に置換されます。これらの定義は、以前に定義したパラメーターを参照できます。
kind: "Template"
apiVersion: "v1"
metadata:
name: my-template
objects:
- kind: "Service" 1
apiVersion: "v1"
metadata:
name: "cakephp-mysql-example"
annotations:
description: "Exposes and load balances the application pods"
spec:
ports:
- name: "web"
port: 8080
targetPort: 8080
selector:
name: "cakephp-mysql-example"
- 1
Service
の定義。このテンプレートにより作成されます。
オブジェクト定義のメタデータに namespace
フィールドの値が含まれる場合には、テンプレートのインスタンス化時にフィールドは定義から取り除かれます。namespace
フィールドにパラメーター参照が含まれる場合には、通常のパラメーター置換が行われ、パラメーター置換が値を解決した namespace で、オブジェクトが作成されます。この際、ユーザーは対象の namespace でオブジェクトを作成するパーミッションがあることが前提です。
10.7.5. バインド可能なテンプレートの作成
テンプレートサービスブローカーは、認識されているテンプレートオブジェクトごとに、カタログ内にサービスを 1 つ公開します。デフォルトでは、これらのサービスはそれぞれ、「バインド可能」として公開され、エンドユーザーがプロビジョンしたサービスに対してバインドできるようにします。
テンプレートの作成者は、template.openshift.io/bindable: "false"
のアノテーションをテンプレートに追加して、エンドユーザーが、指定のテンプレートからプロビジョニングされるサービスをバインドできないようにできます。
10.7.6. オブジェクトフィールドの公開
テンプレートの作成者は、テンプレートに含まれる特定のオブジェクトのフィールドを公開すべきかどうかを指定できます。テンプレートサービスのブローカーは、ConfigMap、Secret、Service、Route オブジェクトに公開されたフィールドを認識し、ユーザーがブローカーでバックされているサービスをバンドした場合に公開されたフィールドの値を返します。
オブジェクトのフィールドを 1 つまたは複数公開するには、テンプレート内のオブジェクトに、プレフィックスが template.openshift.io/expose-
または template.openshift.io/base64-expose-
のアノテーションを追加します。
各アノテーションキーは、bind
応答のキーになるように、プレフィックスが削除されてパススルーされます。
各アノテーションの値は Kubernetes JSONPath 表現 で、バインド時に解決され、bind
応答で返すべき値が含まれるオブジェクトフィールドを指定します。
Bind
応答のキー/値のペアは、環境変数として、システムの他の場所で使用できるので、アノテーションキーでプレフィックスを取り除いた値を有効な環境変数名として使用することが推奨されます。先頭にA-Z
、a-z
またはアンダースコアを指定して、その後に、ゼロか、他の文字 A-Z
、a-z
、0-9
またはアンダースコアを指定してください。
template.openshift.io/expose-
アノテーションを使用して、文字列としてフィールドの値を返します。これは、任意のバイナリーデータを処理しませんが、使用すると便利です。バイナリーデータを返す場合には、バイナリーデータを返す前にデータのエンコードに base64b を使用するのではなく、template.openshift.io/base64-expose-
アノテーションを使用します。
バックスラッシュでエスケープしない限り、Kubernetes の JSONPath 実装は表現内のどの場所に使用されていても、.
、@
などはメタ文字として解釈されます。そのため、たとえば、my.key
という名前の ConfigMap
のデータを参照するには、JSONPath 表現は {.data['my\.key']}
とする必要があります。JSONPath 表現が YAML でどのように記述されているかによって、"{.data['my\\.key']}"
などのように、追加でバックスラッシュが必要な場合があります。.
以下は、公開されるさまざまなオブジェクトのフィールドの例です。
kind: Template apiVersion: v1 metadata: name: my-template objects: - kind: ConfigMap apiVersion: v1 metadata: name: my-template-config annotations: template.openshift.io/expose-username: "{.data['my\\.username']}" data: my.username: foo - kind: Secret apiVersion: v1 metadata: name: my-template-config-secret annotations: template.openshift.io/base64-expose-password: "{.data['password']}" stringData: password: bar - kind: Service apiVersion: v1 metadata: name: my-template-service annotations: template.openshift.io/expose-service_ip_port: "{.spec.clusterIP}:{.spec.ports[?(.name==\"web\")].port}" spec: ports: - name: "web" port: 8080 - kind: Route apiVersion: v1 metadata: name: my-template-route annotations: template.openshift.io/expose-uri: "http://{.spec.host}{.spec.path}" spec: path: mypath
上記の部分的なテンプレートでの bind
操作に対する応答例は以下のようになります。
{ "credentials": { "username": "foo", "password": "YmFy", "service_ip_port": "172.30.12.34:8080", "uri": "http://route-test.router.default.svc.cluster.local/mypath" } }
10.7.7. テンプレートの準備ができるまで待機
テンプレートの作成者は、テンプレート内の特定のオブジェクトがサービスカタログ、Template Service Broker または TemplateInstance API によるテンプレートのインスタンス化が完了したとされるまで待機する必要があるかを指定できます。
この機能を使用するには、テンプレート内の Build
、BuildConfig
、Deployment
、DeploymentConfig
、Job
または StatefulSet
のオブジェクト 1 つ以上に、次のアノテーションでマークを付けてください。
"template.alpha.openshift.io/wait-for-ready": "true"
テンプレートのインスタンス化は、アノテーションのマークが付けられたすべてのオブジェクトが準備できたと報告されるまで、完了しません。同様に、アノテーションが追加オブジェクトが失敗したと報告されるか、固定タイムアウトである 1 時間以内にテンプレートの準備が整わなかった場合に、テンプレートのインスタンス化は失敗します。
インスタンス化の目的で、各オブジェクトの種類の準備状態および失敗は以下のように定義されます。
種類 | 準備状態 (Readines) | 失敗 (Failure) |
---|---|---|
|
オブジェクトでフェーズが完了したと報告される |
オブジェクトで、フェーズがキャンセル、エラー、または失敗と報告される |
|
関連付けられた最新のビルドオブジェクトで、フェーズが完了したと報告される |
関連付けられた最新のビルドオブジェクトで、フェーズがキャンセル、エラー、または失敗と報告される |
|
オブジェクトで、新しい ReplicaSet やデプロイメントが利用可能であると報告される (これは、オブジェクトに定義された readiness プローブに従う) |
オブジェクトで、進捗中の状態が false であると報告される |
|
オブジェクトで、新しい ReplicaController やデプロイメントが利用可能であると報告される (これは、オブジェクトに定義された readiness プローブに従う) |
オブジェクトで、進捗中の状態が false であると報告される |
|
オブジェクトでフェーズが完了したと報告される |
オブジェクトで失敗が 1 つ以上発生したと報告される |
|
オブジェクトですべてのレプリカの準備ができていると報告される (プローブがオブジェクトで定義する readiness に従う) |
該当なし |
以下は、テンプレートサンプルを一部抜粋したものです。この例では、wait-for-ready
アノテーションが使用されています。他のサンプルは、OpenShift クイックスタートテンプレートにあります。
kind: Template apiVersion: v1 metadata: name: my-template objects: - kind: BuildConfig apiVersion: v1 metadata: name: ... annotations: # wait-for-ready used on BuildConfig ensures that template instantiation # will fail immediately if build fails template.alpha.openshift.io/wait-for-ready: "true" spec: ... - kind: DeploymentConfig apiVersion: v1 metadata: name: ... annotations: template.alpha.openshift.io/wait-for-ready: "true" spec: ... - kind: Service apiVersion: v1 metadata: name: ... spec: ...
10.7.8. その他の推奨事項
- アプリケーションをスムーズに実行するのに十分なリソースを割り当てられるように、「メモリー、CPU」および「ストレージ」をデフォルトサイズに設定します。
-
latest
タグが複数のメジャーバージョンで使用されている場合には、イメージからこのタグを参照しないようにします。新規イメージがそのタグにプッシュされると、実行中のアプリケーションが破損してしまう可能性があります。 - 適切なテンプレートの場合、テンプレートのデプロイ後に変更の必要なく、クリーンにビルド、デプロイが行われます。
10.7.9. 既存オブジェクトからのテンプレートの作成
テンプレートをゼロから作成するのではなく、プロジェクトから既存のオブジェクトをテンプレート形式でエクスポートして、パラメーターを追加したり、カスタマイズしたりして、テンプレートを変更することもできます。プロジェクトのオブジェクトをテンプレート形式でエクスポートするには、以下を実行します。
$ oc export all --as-template=<template_name> > <template_filename>
all
ではなく、特定のリソースタイプや複数のリソースを置き換えることも可能です。他の例については、oc export -h
を実行してください。
以下は、oc export all
に含まれるオブジェクトタイプです。
- BuildConfig
- Build
- DeploymentConfig
- ImageStream
- Pod
- ReplicationController
- ルート
- サービス