第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

見つからない場合には、クラスター管理者に「Loading the Default Image Streams and Templates」のトピックを参照してもらうようにしてください。

デフォルトでは、テンプレートビルドは GitHub の公開ソースリポジトリーを使用し、これには必要なアプリケーションコードが含まれます。ソースを変更して、独自のバージョンのアプリケーションをビルドするには、以下を実行する必要があります。

  1. テンプレートのデフォルト SOURCE_REPOSITORY_URL パラメーターが参照するリポジトリーをフォークします。
  2. テンプレートから作成する場合には、SOURCE_REPOSITORY_URL パラメーターの値を上書きします。デフォルト値ではなく、フォークを指定してください。

これにより、テンプレートで作成したビルド設定はアプリケーションコードのフォークを参照するようになり、コードを更新して、自由にアプリケーションをリビルドできます。

Web コンソールを使用してこのプロセスを行う場合は、「Getting Started for Developers: Web Console」を参照してください。

注記

インスタンスアプリおよびクイックスタートアプリのテンプレートで、データベースの デプロイメント設定 を定義するものもあります。テンプレートが定義する設定では、データベースコンテツ用に一時ストレージを使用します。データベース 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 コンソールでの検索時に役立ちます。テンプレート名以外のメタデータは任意ですが、使用すると便利です。メタデータには、一般的な説明などの情報以外にタグのセットも含まれます。便利なタグにはテンプレートで使用する言語名などがあります (例: javaphpruby )。

例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_CATEGORIESidcategoryAliases を参照してください。カテゴリーは、クラスター全体用に カスタマイズ することも可能です。
6
Web コンソールでテンプレートと一緒に表示されるアイコン。可能な場合は、既存の ロゴアイコン から選択します。また、FontAwesomePatternFly からもアイコンを使用できます。または、テンプレートを使用する OpenShift Container Platform クラスターに CSS カスタマイズ を追加できるので、CSS カスタマイズ経由でアイコンを提供します。存在するアイコンクラスを指定するようにしてください。指定しないと、汎用アイコンにフォールバックできなくなります。
7
テンプレートを提供する人または組織の名前
8
テンプレートに関する他のドキュメントを参照する URL
9
テンプレートに関するサポートを取得できる URL
10
テンプレートがインスタンス化された時に表示される説明メッセージ。このフィールドで、新規作成されたリソースの使用方法を通知します。生成された認証情報や他のパラメーターが出力に追加できるように、メッセージの表示前に、パラメーターの置換が行われます。ユーザーが従うべき次の手順が記載されたドキュメントへのリンクを追加してください。

10.7.2. ラベル

テンプレートには ラベル のセットを追加できます。これらのラベルは、テンプレートがインスタンス化される時に作成されるオブジェクトごとに追加します。このようにラベルを定義すると、特定のテンプレートから作成された全オブジェクトの検索、管理が簡単になります。

例10.4 テンプレートオブジェクトのラベル

kind: "Template"
apiVersion: "v1"
...
labels:
  template: "cakephp-mysql-example" 1
  app: "${NAME}" 2
1
このテンプレートから作成する全オブジェクトに適用されるラベル
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. オブジェクト一覧

テンプレートの主な部分は、テンプレートがインスタンス化される時に作成されるオブジェクトの一覧です。これには、BuildConfigDeploymentConfigService など、有効な 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-Za-z またはアンダースコアを指定して、その後に、ゼロか、他の文字 A-Za-z0-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 によるテンプレートのインスタンス化が完了したとされるまで待機する必要があるかを指定できます。

この機能を使用するには、テンプレート内の BuildBuildConfigDeploymentDeploymentConfigJob または StatefulSet のオブジェクト 1 つ以上に、次のアノテーションでマークを付けてください。

"template.alpha.openshift.io/wait-for-ready": "true"

テンプレートのインスタンス化は、アノテーションのマークが付けられたすべてのオブジェクトが準備できたと報告されるまで、完了しません。同様に、アノテーションが付けられたオブジェクトが失敗したと報告されるか、固定タイムアウトである 1 時間以内にテンプレートの準備が整わなかった場合に、テンプレートのインスタンス化は失敗します。

インスタンス化の目的で、各オブジェクトの種類の準備状態および失敗は以下のように定義されます。

種類準備状態 (Readines)失敗 (Failure)

Build

オブジェクトが Complete (完了) フェーズを報告する

オブジェクトで、フェーズがキャンセル、エラー、または失敗と報告される

BuildConfig

関連付けられた最新のビルドオブジェクトで、フェーズが完了したと報告される

関連付けられた最新のビルドオブジェクトが Canceled (キャンセル)、Error (エラー)、または Failed (失敗) を報告する

Deployment

オブジェクトが新しい ReplicaSet やデプロイメントが利用可能であることを報告する (これはオブジェクトに定義された readiness プローブに従います)

オブジェクトで、進捗中の状態が false であると報告される

DeploymentConfig

オブジェクトで、新しい ReplicaController やデプロイメントが利用可能であると報告される (これは、オブジェクトに定義された readiness プローブに従う)

オブジェクトで、進捗中の状態が false であると報告される

Job

オブジェクトが完了 (completion) を報告する

オブジェクトが 1 つ以上の失敗が発生したことを報告する

StatefulSet

オブジェクトがすべてのレプリカが準備状態にあることを報告する (これはオブジェクトに定義された 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. 既存オブジェクトからのテンプレートの作成

テンプレートをゼロから作成するのではなく、プロジェクトから既存のオブジェクトを YAML 形式でエクスポートして、パラメーターを追加したり、テンプレート形式としてカスタマイズしたりして、YAML 形式を変更することもできます。プロジェクトのオブジェクトを YAML 形式でエクスポートするには、以下を実行します。

$ oc get -o yaml --export all > <yaml_filename>

all ではなく、特定のリソースタイプや複数のリソースを置き換えることも可能です。他の例については、oc get -h を実行してください。

以下は、oc get --export all に含まれるオブジェクトタイプです。

  • BuildConfig
  • Build
  • DeploymentConfig
  • ImageStream
  • Pod
  • ReplicationController
  • Route
  • Service