第3章 アプリケーションの作成
3.1. テンプレートの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションでは、テンプレートの概要と共に、それらを使用し、作成する方法に関する概要を説明します。
3.1.1. テンプレートについて リンクのコピーリンクがクリップボードにコピーされました!
テンプレートでは、パラメーター化や処理が可能な一連のオブジェクトを記述し、OpenShift Container Platform で作成するためのオブジェクトのリストを生成します。テンプレートは、サービス、ビルド設定およびデプロイメント設定など、プロジェクト内で作成パーミッションがあるすべてのものを作成するために処理できます。また、テンプレートではラベルのセットを定義して、これをテンプレート内に定義されたすべてのオブジェクトに適用できます。
オブジェクトのリストは CLI を使用してテンプレートから作成できます。また、テンプレートがプロジェクトまたはグローバルテンプレートライブラリーにアップロードされている場合は Web コンソールを使用することもできます。
3.1.2. テンプレートのアップロード リンクのコピーリンクがクリップボードにコピーされました!
テンプレートを定義する JSON または YAML ファイルがある場合は、CLI を使用してテンプレートをプロジェクトにアップロードできます。こうすることで、プロジェクトにテンプレートが保存され、対象のプロジェクトに対して適切なアクセス権があるユーザーがこれを繰り返し使用できます。独自のテンプレートの記述方法は、このトピックの後半で説明します。
手順
次のいずれかの方法を使用してテンプレートをアップロードします。
現在のプロジェクトのテンプレートライブラリーにテンプレートをアップロードするには、JSON または YAML ファイルを以下のコマンドで渡します。
oc create -f <filename>
$ oc create -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -nオプションを使用してプロジェクト名を指定することで、別のプロジェクトにテンプレートをアップロードできます。oc create -f <filename> -n <project>
$ oc create -f <filename> -n <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
テンプレートは、Web コンソールまたは CLI を使用して選択できるようになりました。
3.1.3. Web コンソールを使用したアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して、テンプレートからアプリケーションを作成できます。
手順
- Web コンソールのナビゲーションメニューの上部にあるコンテキストセレクターから Developer を選択します。
- 目的のプロジェクト内で、+Add をクリックします。
- Developer Catalog タイルの All services をクリックします。
Type の下の Builder Images をクリックして、利用可能なビルダーイメージを表示します。
注記以下に示すように、
builderタグがアノテーションにリスト表示されているイメージストリームタグのみがリストに表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ここに
builderを含めると、このイメージストリームがビルダーとして Web コンソールに表示されます。
- 新規アプリケーション画面で設定を変更し、オブジェクトをアプリケーションをサポートするように設定します。
3.1.4. CLI を使用してテンプレートからオブジェクトを作成する手順 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、テンプレートを処理し、オブジェクトを作成するために生成された設定を使用できます。
3.1.4.1. ラベルの追加 リンクのコピーリンクがクリップボードにコピーされました!
ラベルは、Pod などの生成されたオブジェクトを管理し、整理するために使用されます。テンプレートで指定されるラベルは、テンプレートから生成されるすべてのオブジェクトに適用されます。
手順
コマンドラインからテンプレートにラベルを追加します。
oc process -f <filename> -l name=otherLabel
$ oc process -f <filename> -l name=otherLabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4.2. パラメーターのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
上書きできるパラメーターのリストは、テンプレートの parameters セクションに表示されます。
手順
CLI で以下のコマンドを使用し、使用するファイルを指定して、パラメーターをリスト表示することができます。
oc process --parameters -f <filename>
$ oc process --parameters -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、テンプレートがすでにアップロードされている場合には、以下を実行します。
oc process --parameters -n <project> <template_name>
$ oc process --parameters -n <project> <template_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、デフォルトの
openshiftプロジェクトにあるクイックスタートテンプレートのいずれかに対してパラメーターを一覧表示する場合に、以下のような出力が表示されます。oc process --parameters -n openshift rails-postgresql-example
$ oc process --parameters -n openshift rails-postgresql-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力から、テンプレートの処理時に正規表現のようなジェネレーターで生成された複数のパラメーターを特定できます。
3.1.4.3. オブジェクトリストの生成 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、標準出力にオブジェクトリストを返すテンプレートを定義するファイルを処理できます。
手順
標準出力にオブジェクトリストを返すテンプレートを定義するファイルを処理します。
oc process -f <filename>
$ oc process -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、テンプレートがすでに現在のプロジェクトにアップロードされている場合には以下を実行します。
oc process <template_name>
$ oc process <template_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートを処理し、
oc createの出力をパイプして、テンプレートからオブジェクトを作成します。oc process -f <filename> | oc create -f -
$ oc process -f <filename> | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、テンプレートがすでに現在のプロジェクトにアップロードされている場合には以下を実行します。
oc process <template> | oc create -f -
$ oc process <template> | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上書きする
<name>=<value>の各ペアに、-pオプションを追加することで、ファイルに定義されたパラメーターの値を上書きできます。パラメーター参照は、テンプレートアイテム内のテキストフィールドに表示されます。たとえば、テンプレートの以下の
POSTGRESQL_USERおよびPOSTGRESQL_DATABASEパラメーターを上書きし、カスタマイズされた環境変数の設定を出力します。テンプレートからのオブジェクトリストの作成
oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabase$ oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow JSON ファイルは、ファイルにリダイレクトすることも、
oc createコマンドで処理済みの出力をパイプして、テンプレートをアップロードせずに直接適用することも可能です。oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabase \ | oc create -f -$ oc process -f my-rails-postgresql \ -p POSTGRESQL_USER=bob \ -p POSTGRESQL_DATABASE=mydatabase \ | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 多数のパラメーターがある場合は、それらをファイルに保存してからそのファイルを
oc processに渡すことができます。cat postgres.env POSTGRESQL_USER=bob POSTGRESQL_DATABASE=mydatabase
$ cat postgres.env POSTGRESQL_USER=bob POSTGRESQL_DATABASE=mydatabaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc process -f my-rails-postgresql --param-file=postgres.env
$ oc process -f my-rails-postgresql --param-file=postgres.envCopy to Clipboard Copied! Toggle word wrap Toggle overflow --param-fileの引数として"-"を使用して、標準入力から環境を読み込むこともできます。sed s/bob/alice/ postgres.env | oc process -f my-rails-postgresql --param-file=-
$ sed s/bob/alice/ postgres.env | oc process -f my-rails-postgresql --param-file=-Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.5. アップロードしたテンプレートの変更 リンクのコピーリンクがクリップボードにコピーされました!
すでにプロジェクトにアップロードされているテンプレートを編集できます。
手順
すでにアップロードされているテンプレートを変更します。
oc edit template <template>
$ oc edit template <template>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.6. インスタントアプリとクイックスタートテンプレートの使用 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、デフォルトで、インスタントアプリとクイックスタートテンプレートを複数提供しており、各種言語で簡単に新規アプリの構築を開始できます。Rails (Ruby)、Django (Python)、Node.js、CakePHP (PHP) および Dancer (Perl) 用のテンプレートを利用できます。クラスター管理者は、これらのテンプレートを利用できるようにデフォルトのグローバル openshift プロジェクトにこれらのテンプレートを作成している必要があります。
デフォルトで、テンプレートビルドは必要なアプリケーションコードが含まれる GitHub の公開ソースリポジトリーを使用して行われます。
手順
以下のように、利用可能なデフォルトのインスタントアプリとクイックスタートテンプレートをリスト表示できます。
oc get templates -n openshift
$ oc get templates -n openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow ソースを変更し、アプリケーションの独自のバージョンをビルドするには、以下を実行します。
-
テンプレートのデフォルト
SOURCE_REPOSITORY_URLパラメーターが参照するリポジトリーをフォークします。 テンプレートから作成する場合には、
SOURCE_REPOSITORY_URLパラメーターの値を上書きします。デフォルト値ではなく、フォークを指定してください。これにより、テンプレートで作成したビルド設定はアプリケーションコードのフォークを参照するようになり、コードを変更し、アプリケーションを自由に再ビルドできます。
-
テンプレートのデフォルト
一部のインスタンスアプリおよびクイックスタートのテンプレートで、データベースのデプロイメント設定を定義します。テンプレートが定義する設定では、データベースコンテンツ用に一時ストレージを使用します。データベース Pod が何らかの理由で再起動されると、データベースの全データが失われてしまうので、これらのテンプレートはデモ目的でのみ使用する必要があります。
3.1.6.1. クイックスタートテンプレート リンクのコピーリンクがクリップボードにコピーされました!
クイックスタートテンプレートは、OpenShift Container Platform で実行されるアプリケーションの基本的な例です。クイックスタートはさまざまな言語やフレームワークが含まれており、サービスのセット、ビルド設定およびデプロイメント設定などで設定されるテンプレートで定義されています。このテンプレートは、必要なイメージやソースリポジトリーを参照して、アプリケーションをビルドし、デプロイします。
クイックスタートを確認するには、テンプレートからアプリケーションを作成します。管理者がこれらのテンプレートを OpenShift Container Platform クラスターにすでにインストールしている必要がありますが、その場合には、Web コンソールからこれを簡単に選択できます。
クイックスタートは、アプリケーションのソースコードを含むソースリポジトリーを参照します。クイックスタートをカスタマイズするには、リポジトリーをフォークし、テンプレートからアプリケーションを作成する時に、デフォルトのソースリポジトリー名をフォークしたリポジトリーに置き換えます。これにより、提供されたサンプルのソースではなく、独自のソースコードを使用してビルドが実行されます。ソースリポジトリーでコードを更新し、新しいビルドを起動して、デプロイされたアプリケーションで変更が反映されていることを確認できます。
3.1.6.1.1. Web フレームワーククイックスタートテンプレート リンクのコピーリンクがクリップボードにコピーされました!
以下のクイックスタートテンプレートでは、指定のフレームワークおよび言語の基本アプリケーションを提供します。
- CakePHP: PHP Web フレームワーク (MySQL データベースを含む)
- Dancer: Perl Web フレームワーク (MySQL データベースを含む)
- Django: Python Web フレームワーク (PostgreSQL データベースを含む)
- NodeJS: NodeJS web アプリケーション (MongoDB データベースを含む)
- Rails: Ruby Web フレームワーク (PostgreSQL データベースを含む)
3.1.7. テンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの全オブジェクトを簡単に再作成するために、新規テンプレートを定義できます。テンプレートでは、作成するオブジェクトと、これらのオブジェクトの作成をガイドするメタデータを定義します。
以下は、単純なテンプレートオブジェクト定義 (YAML) の例です。
3.1.7.1. テンプレート記述の作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートの記述により、テンプレートの内容に関する情報を提供でき、Web コンソールでの検索時に役立ちます。テンプレート名以外のメタデータは任意ですが、使用できると便利です。メタデータには、一般的な説明などの情報以外にタグのセットも含まれます。便利なタグにはテンプレートで使用する言語名などがあります (例: Java、PHP、Ruby)。
以下は、テンプレート記述メタデータの例です。
- 1
- テンプレートの一意の名前。
- 2
- ユーザーインターフェイスで利用できるように、ユーザーに分かりやすく、簡単な名前。
- 3
- テンプレートの説明。デプロイされる内容、デプロイ前に知っておく必要のある注意点をユーザーが理解できるように詳細を追加します。README ファイルなど、追加情報へのリンクも追加します。パラグラフを作成するには、改行を追加できます。
- 4
- 追加の説明。たとえば、サービスカタログに表示されます。
- 5
- 検索およびグループ化を実行するためにテンプレートに関連付けられるタグ。これを指定されるカタログカテゴリーのいずれかに組み込むタグを追加します。コンソールの定数ファイルの
CATALOG_CATEGORIESでidおよびcategoryAliasesを参照してください。カテゴリーはクラスター全体に対してカスタマイズすることもできます。 - 6
- Web コンソールでテンプレートと一緒に表示されるアイコン。
例3.1 利用可能なアイコン
-
icon-3scale -
icon-aerogear -
icon-amq -
icon-angularjs -
icon-ansible -
icon-apache -
icon-beaker -
icon-camel -
icon-capedwarf -
icon-cassandra -
icon-catalog-icon -
icon-clojure -
icon-codeigniter -
icon-cordova -
icon-datagrid -
icon-datavirt -
icon-debian -
icon-decisionserver -
icon-django -
icon-dotnet -
icon-drupal -
icon-eap -
icon-elastic -
icon-erlang -
icon-fedora -
icon-freebsd -
icon-git -
icon-github -
icon-gitlab -
icon-glassfish -
icon-go-gopher -
icon-golang -
icon-grails -
icon-hadoop -
icon-haproxy -
icon-helm -
icon-infinispan -
icon-jboss -
icon-jenkins -
icon-jetty -
icon-joomla -
icon-jruby -
icon-js -
icon-knative -
icon-kubevirt -
icon-laravel -
icon-load-balancer -
icon-mariadb -
icon-mediawiki -
icon-memcached -
icon-mongodb -
icon-mssql -
icon-mysql-database -
icon-nginx -
icon-nodejs -
icon-openjdk -
icon-openliberty -
icon-openshift -
icon-openstack -
icon-other-linux -
icon-other-unknown -
icon-perl -
icon-phalcon -
icon-php -
icon-play -
iconpostgresql -
icon-processserver -
icon-python -
icon-quarkus -
icon-rabbitmq -
icon-rails -
icon-redhat -
icon-redis -
icon-rh-integration -
icon-rh-spring-boot -
icon-rh-tomcat -
icon-ruby -
icon-scala -
icon-serverlessfx -
icon-shadowman -
icon-spring-boot -
icon-spring -
icon-sso -
icon-stackoverflow -
icon-suse -
icon-symfony -
icon-tomcat -
icon-ubuntu -
icon-vertx -
icon-wildfly -
icon-windows -
icon-wordpress -
icon-xamarin -
icon-zend
-
- 7
- テンプレートを提供する人または組織の名前
- 8
- テンプレートに関する他のドキュメントを参照する URL
- 9
- テンプレートに関するサポートを取得できる URL
- 10
- テンプレートがインスタンス化された時に表示される説明メッセージ。このフィールドで、新規作成されたリソースの使用方法をユーザーに通知します。生成された認証情報や他のパラメーターを出力に追加できるように、メッセージの表示前にパラメーターの置換が行われます。ユーザーが従うべき次の手順が記載されたドキュメントへのリンクを追加してください。
3.1.7.2. テンプレートラベルの作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートにはラベルのセットを追加できます。これらのラベルは、テンプレートがインスタンス化される時に作成されるオブジェクトごとに追加します。このようにラベルを定義すると、特定のテンプレートから作成された全オブジェクトの検索、管理が簡単になります。
以下は、テンプレートオブジェクトのラベルの例です。
3.1.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: 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}"
parameters:
- name: PASSWORD
description: "The random user password"
generate: expression
from: "[a-zA-Z0-9]{12}"
上記の例では、処理後に、英字の大文字、小文字、数字すべてを含む 12 文字長のパスワードが無作為に作成されます。
利用可能な構文は、完全な正規表現構文ではありません。ただし、\w、\d、\a、および \A 修飾子を使用できます。
-
[\w]{10}は、10 桁の英字、数字、およびアンダースコアを生成します。これは PCRE 標準に準拠し、[a-zA-Z0-9_]{10}に相当します。 -
[\d]{10}は 10 桁の数字を生成します。これは[0-9]{10}に相当します。 -
[\a]{10}は 10 桁の英字を生成します。これは[a-zA-Z]{10}に相当します。 -
[\A]{10}は 10 の句読点または記号文字を生成します。これは[~!@#$%\^&*()\-_+={}\[\]\\|<,>.?/"';:`]{10}に相当します。
テンプレートが YAML または JSON で記述されているかどうか、また修飾子が組み込まれている文字列のタイプによっては、2 番目のバックスラッシュでバックスラッシュをエスケープする必要がある場合があります。以下は例になります。
修飾子を含む YAML テンプレートの例
修飾子を含む JSON テンプレートの例
以下は、パラメーター定義と参照を含む完全なテンプレートの例です。
- 1
- この値は、テンプレートがインスタンス化された時点で
SOURCE_REPOSITORY_URLパラメーターに置き換えられます。 - 2
- この値は、テンプレートがインスタンス化された時点で、
REPLICA_COUNTパラメーターの引用なしの値に置き換えられます。 - 3
- パラメーター名。この値は、テンプレート内でパラメーターを参照するのに使用します。
- 4
- 分かりやすいパラメーターの名前。これは、ユーザーに表示されます。
- 5
- パラメーターの説明。期待値に対する制約など、パラメーターの目的を詳細にわたり説明します。説明には、コンソールのテキスト標準に従い、完結した文章を使用するようにしてください。表示名と同じ内容を使用しないでください。
- 6
- テンプレートをインスタンス化する時に、ユーザーにより値が上書きされない場合に使用されるパラメーターのデフォルト値。パスワードなどのデフォルト値の使用を避けるようにしてください。シークレットと組み合わせた生成パラメーターを使用するようにしてください。
- 7
- このパラメーターが必須であることを示します。つまり、ユーザーは空の値で上書きできません。パラメーターでデフォルト値または生成値が指定されていない場合には、ユーザーは値を指定する必要があります。
- 8
- 値が生成されるパラメーター
- 9
- ジェネレーターへの入力。この場合、ジェネレーターは、大文字、小文字を含む 40 桁の英数字の値を生成します。
- 10
- パラメーターはテンプレートメッセージに含めることができます。これにより、生成された値がユーザーに通知されます。
3.1.7.4. テンプレートオブジェクトリストの作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートの主な部分は、テンプレートがインスタンス化される時に作成されるオブジェクトのリストです。これには、ビルド設定、デプロイメント設定、またはサービスなどの有効な API オブジェクトを使用できます。オブジェクトはここで定義された通りに作成され、パラメーターの値は作成前に置換されます。これらのオブジェクトの定義では、以前に定義したパラメーターを参照できます。
以下は、オブジェクトリストの例です。
- 1
- サービスの定義。このテンプレートにより作成されます。
オブジェクト定義のメタデータに namespace フィールドの固定値が含まれる場合、フィールドはテンプレートのインスタンス化の際に定義から取り除かれます。namespace フィールドにパラメーター参照が含まれる場合には、通常のパラメーター置換が行われ、パラメーターの置換による値の解決が実行された namespace で、オブジェクトが作成されます。この場合、ユーザーは対象の namespace でオブジェクトを作成するパーミッションがあることが前提になります。
3.1.7.5. テンプレートをバインド可能としてマーキングする リンクのコピーリンクがクリップボードにコピーされました!
テンプレートサービスブローカーは、認識されているテンプレートオブジェクトごとに、カタログ内にサービスを 1 つ公開します。デフォルトでは、これらのサービスはそれぞれバインド可能として公開され、エンドユーザーがプロビジョニングしたサービスに対してバインドできるようにします。
手順
テンプレートの作成者は、エンドユーザーが指定テンプレートからプロビジョニングされたサービスに対してバインディングすることを防ぐことができます。
-
template.openshift.io/bindable: "false"のアノテーションをテンプレートに追加して、エンドユーザーが指定のテンプレートからプロビジョニングされるサービスをバインドできないようにできます。
3.1.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 または _ を指定してください。
バックスラッシュでエスケープしない限り、Kubernetes の JSONPath 実装は表現内のどの場所に使用されていても、.、@ などはメタ文字として解釈します。そのため、たとえば、my.key という名前の ConfigMap のデータを参照するには、JSONPath 式は {.data['my\.key']} とする必要があります。JSONPath 式が YAML でどのように記述されているかによって、"{.data['my\\.key']}" などのように、追加でバックスラッシュが必要になる場合があります。
以下は、公開されるさまざまなオブジェクトのフィールドの例です。
上記の部分的なテンプレートでの bind 操作に対する応答例は以下のようになります。
手順
-
template.openshift.io/expose-アノテーションを使用して、値を文字列として返します。これは、任意のバイナリーデータを処理しないものの、便利な方法です。 -
バイナリーデータを返す必要がある場合、
template.openshift.io/base64-expose-アノテーションを使用して、データが返される前にデータを base64 でエンコードします。
3.1.7.7. テンプレートの準備ができるまで待機する リンクのコピーリンクがクリップボードにコピーされました!
テンプレートの作成者は、テンプレート内の特定のオブジェクトがサービスカタログ、Template Service Broker または TemplateInstance API によるテンプレートのインスタンス化が完了したとされるまで待機する必要があるかを指定できます。
この機能を使用するには、テンプレート内の Build、BuildConfig、Deployment、DeploymentConfig、Job または StatefulSet のオブジェクト 1 つ以上に、次のアノテーションでマークを付けてください。
"template.alpha.openshift.io/wait-for-ready": "true"
"template.alpha.openshift.io/wait-for-ready": "true"
テンプレートのインスタンス化は、アノテーションのマークが付けられたすべてのオブジェクトが準備できたと報告されるまで、完了しません。同様に、アノテーションが付けられたオブジェクトが失敗したと報告されるか、固定タイムアウトである 1 時間以内にテンプレートの準備が整わなかった場合に、テンプレートのインスタンス化は失敗します。
インスタンス化の目的で、各オブジェクトの種類の準備状態および失敗は以下のように定義されます。
| 種類 | 準備状態 (Readiness) | 失敗 (Failure) |
|---|---|---|
|
| オブジェクトが Complete フェーズを報告する | オブジェクトが Canceled、Error、または Failed を報告する |
|
| 関連付けられた最新のビルドオブジェクトが Complete フェーズを報告する | 関連付けられた最新のビルドオブジェクトが Canceled、Error、または Failed を報告する |
|
| オブジェクトは、新しいレプリカセットとデプロイメントが利用可能であると報告する。これにより、オブジェクトで定義される readiness プローブが有効になります。 | オブジェクトで、Progressing の状態が false であると報告される |
|
| オブジェクトは新規レプリケーションコントローラーおよびデプロイメントが利用可能であると報告する。これにより、オブジェクトで定義される readiness プローブが有効になります。 | オブジェクトで、Progressing の状態が false であると報告される |
|
| オブジェクトが完了 (completion) を報告する | オブジェクトが 1 つ以上の失敗が発生したことを報告する |
|
| オブジェクトはすべてのレプリカが Ready であることを報告するこれにより、オブジェクトで定義される readiness プローブが有効になります。 | 該当なし |
以下は、テンプレートサンプルを一部抜粋したものです。この例では、wait-for-ready アノテーションが使用されています。他のサンプルは、OpenShift Container Platform クイックスタートテンプレートにあります。
その他の推奨事項
- アプリケーションにスムーズに実行するのに十分なリソースが提供されるようにメモリー、CPU、およびストレージのデフォルトサイズを設定します。
-
latestタグが複数のメジャーバージョンで使用されている場合には、イメージからこのタグを参照しないようにします。新規イメージがそのタグにプッシュされると、実行中のアプリケーションが破損してしまう可能性があります。 - 適切なテンプレートの場合、テンプレートのデプロイ後に変更する必要なしに、ビルドおよびデプロイが正常に行われます。
3.1.7.8. 既存オブジェクトからのテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートをゼロから作成するのではなく、プロジェクトから既存のオブジェクトを YAML 形式でエクスポートして、パラメーターを追加したり、テンプレート形式としてカスタマイズしたりして、YAML 形式を変更することもできます。
手順
オブジェクトを YAML 形式でプロジェクトにエクスポートします。
oc get -o yaml all > <yaml_filename>
$ oc get -o yaml all > <yaml_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow allではなく、特定のリソースタイプや複数のリソースを置き換えることも可能です。他の例は、oc get -hを実行してください。oc get -o yaml allに含まれるオブジェクトタイプは以下の通りです。-
BuildConfig -
Build -
DeploymentConfig -
ImageStream -
Pod -
ReplicationController -
Route -
Service
-
コンテンツはクラスターやバージョンによって異なる可能性があるため、all エイリアスの使用は推奨されません。代わりに、必要なすべてのリソースを指定してください。