第3章 アプリケーションの作成
3.1. テンプレートの使用 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートを使用して、事前設定されたアプリケーションをデプロイすると共に、OpenShift Container Platform クラスターに再利用可能なオブジェクト定義を作成できます。Web コンソールまたは CLI からテンプレートをアップロード、インスタンス化、および作成し、アプリケーションの作成を迅速化します。
3.1.1. テンプレートについて リンクのコピーリンクがクリップボードにコピーされました!
テンプレートを使用して、OpenShift Container Platform が Service および DeploymentConfig オブジェクトなどのリソースで処理する、再利用可能なパラメーター化されたオブジェクトセットを記述します。テンプレートは、Web コンソールまたは CLI から同じアプリケーション構造を一貫してデプロイするのに役立ちます。
テンプレートは、プロジェクト内で作成パーミッションがあるすべてのものを作成するために処理できます。また、テンプレートではラベルのセットを定義して、これをテンプレート内に定義されたすべてのオブジェクトに適用できます。
3.1.2. テンプレートのアップロード リンクのコピーリンクがクリップボードにコピーされました!
テンプレートを OpenShift Container Platform プロジェクトに追加するには、CLI で JSON または YAML テンプレートファイルをアップロードします。アップロードしたテンプレートは、そのプロジェクトにアクセスできるユーザーが再利用できるように、プロジェクトテンプレートライブラリーに保存されます。
手順
次のいずれかの方法を使用してテンプレートをアップロードします。
以下のコマンドを実行して、JSON または YAML テンプレートファイルを現在のプロジェクトのテンプレートライブラリーにアップロードします。
$ oc create -f <filename>以下のコマンドを実行して、プロジェクト名を指定して、
-nオプションを使用して別のプロジェクトにテンプレートをアップロードできます。$ oc create -f <filename> -n <project>テンプレートは、Web コンソールまたは CLI を使用して選択できるようになりました。
3.1.3. Web コンソールを使用したアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターのテンプレートからアプリケーションを作成するには、Web コンソールの Developer Catalog を使用します。テンプレートまたはビルダーイメージを選択し、デプロイする前に生成されたオブジェクトを設定します。
手順
- プロジェクトに移動し、+Add をクリックします。
- Developer Catalog タイルの All services をクリックします。
Type の下の Builder Images をクリックして、利用可能なビルダーイメージを表示します。
注記以下の例のように、
builderタグがアノテーションに一覧表示されているイメージストリームタグのみが一覧に表示されます。イメージストリームタグがアノテーションにビルダーを含めます。ビルダーとして Web コンソールに表示されるように、タグkind: "ImageStream" apiVersion: "image.openshift.io/v1" metadata: name: "ruby" creationTimestamp: null spec: # ... tags: - name: "2.6" annotations: description: "Build and run Ruby 2.6 applications" iconClass: "icon-ruby" tags: "builder,ruby" supports: "ruby:2.6,ruby" version: "2.6" # ...- 新規アプリケーション画面で設定を変更し、オブジェクトをアプリケーションをサポートするように設定します。
3.1.4. CLI を使用してテンプレートからオブジェクトを作成する手順 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、テンプレートをプロジェクトのオブジェクトのリストに処理して、OpenShift Container Platform クラスターのテンプレートからオブジェクトを作成できます。CLI コマンドを使用して、テンプレートラベル、パラメーター、および生成されたオブジェクトリストを管理します。
3.1.4.1. ラベルの追加 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターでテンプレートの処理時にラベルを追加するには、ラベルセレクターを oc process コマンドに渡します。テンプレートで指定されるラベルは、テンプレートから生成されるすべてのオブジェクトに適用されます。
ラベルは、Pod などの生成されたオブジェクトを管理し、整理するために使用されます。
手順
以下のコマンドを実行して、テンプレートにラベルを追加します。
$ oc process -f <filename> -l name=otherLabel
3.1.4.2. パラメーターのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターのテンプレートパラメーターを一覧表示し、テンプレートを処理する前に上書きできる値を確認できます。テンプレートファイルまたはアップロードされたテンプレート名と共に oc process --parameters コマンドを使用します。
手順
以下のコマンドを実行して、ローカルテンプレートファイルからテンプレートパラメーターを一覧表示します。
$ oc process --parameters -f <filename>次のコマンドを実行して、アップロードしたテンプレートからテンプレートパラメーターを一覧表示します。
$ oc process --parameters -n <project> <template_name>たとえば、デフォルトの
openshiftプロジェクトでrails-postgresql-exampleクイックスタートテンプレートのパラメーターを一覧表示するには、以下のコマンドを実行します。$ 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この出力から、テンプレートの処理時に正規表現のようなジェネレーターで生成された複数のパラメーターを特定できます。
3.1.4.3. オブジェクトリストの生成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートが OpenShift Container Platform クラスターで作成するオブジェクトをプレビューするには、適用せずにテンプレートで oc process を実行します。生成されたオブジェクト一覧を確認し、プロジェクトにリソースを作成する前に、これをファイルに保存します。
手順
以下のコマンドを実行して、標準出力にオブジェクト一覧を返すテンプレートを定義するファイルを処理します。
$ oc process -f <filename>次のコマンドを実行して、現在のプロジェクトにアップロードされたテンプレートを処理し、オブジェクトのリストを標準出力に戻します。
$ oc process <template_name>以下のコマンドを実行して、テンプレートを処理し、
oc createの出力をパイプして、テンプレートからオブジェクトを作成します。$ oc process -f <filename> | oc create -f -以下のコマンドを実行して、テンプレートを処理し、
oc createの出力をパイプして、現在のプロジェクトにアップロードされたテンプレートからオブジェクトを作成します。$ oc process <template> | oc create -f -オーバーライドする
<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=mydatabase \ | oc create -f -注記JSON 出力をファイルにリダイレクトするか、
oc createコマンドにパイプして、テンプレートをアップロードせずに直接適用できます。多数のパラメーターがある場合は、以下のコマンドを実行して、それらをファイルに保存してからそのファイルを
oc processに渡すことができます。$ cat postgres.env$ oc process -f my-rails-postgresql --param-file=postgres.env出力例
POSTGRESQL_USER=bob POSTGRESQL_DATABASE=mydatabase次のコマンドを実行して、"--
param-fileオプションの値として "-" を指定して、標準入力からパラメーター値を読み取ることもできます。$ sed s/bob/alice/ postgres.env | oc process -f my-rails-postgresql --param-file=-
3.1.5. アップロードしたテンプレートの変更 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform プロジェクトにすでに存在するテンプレートを更新するには、テンプレートオブジェクトを編集し、既存のバージョンを置き換えます。更新されたテンプレートは、再利用のためにプロジェクトのテンプレートライブラリーに引き続き利用できます。
手順
以下のコマンドを実行して、すでにアップロードされているテンプレートを変更します。
$ oc edit template <template>
3.1.6. インスタントアプリとクイックスタートテンプレートの使用 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターの instant-app テンプレートからサンプルアプリケーションを試行するには、テンプレートからアプリケーションを作成し、必要に応じてテンプレートのソースリポジトリーをフォークします。ビルド設定をカスタマイズして、変更をテストし、アプリケーションを再ビルドします。
OpenShift Container Platform では、複数のデフォルトのインスタントアプリとクイックスタートテンプレートを提供しています。これは、異なる言語用の新規アプリケーションをすばやく作成するのに役立ちます。Rails (Ruby)、Django (Python)、Node.js、CakePHP (PHP) および Dancer (Perl) 用のテンプレートを利用できます。クラスター管理者は、これらのテンプレートを利用できるようにデフォルトのグローバル openshift プロジェクトにこれらのテンプレートを作成している必要があります。
デフォルトで、テンプレートビルドは必要なアプリケーションコードが含まれる GitHub の公開ソースリポジトリーを使用して行われます。
手順
以下のコマンドを実行して、利用可能なデフォルトのインスタントアプリとクイックスタートテンプレートを一覧表示します。
$ oc get templates -n openshiftソースを変更して、独自のバージョンのアプリケーションをビルドします。
-
テンプレートのデフォルトの
SOURCE_REPOSITORY_URLパラメーターによって参照されるリポジトリーをフォークします。 テンプレートから作成する場合には、
SOURCE_REPOSITORY_URLパラメーターの値を上書きします。デフォルト値ではなく、フォークを指定してください。これにより、テンプレートで作成したビルド設定はアプリケーションコードのフォークを参照するようになります。その後、コードを変更し、必要に応じてアプリケーションを再ビルドできます。
注記一部のインスタントアプリおよびクイックスタートのテンプレートで、データベースの
DeploymentConfigオブジェクトを定義します。テンプレートが定義する設定では、データベースコンテンツ用に一時ストレージを使用します。データベース Pod が何らかの理由で再起動されると、データベースの全データが失われてしまうので、これらのテンプレートはデモ目的でのみ使用する必要があります。
-
テンプレートのデフォルトの
3.1.6.1. クイックスタートテンプレート リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターでインスタントアプリケーションおよびクイックスタートテンプレートのサンプルを参照するには、openshift プロジェクトのデフォルトテンプレートを確認します。これらのテンプレートを使用して、共通の言語およびフレームワークのサンプルアプリケーションをデプロイします。
クイックスタートテンプレートは、OpenShift Container Platform で実行されるアプリケーションの基本的な例です。クイックスタートはさまざまな言語やフレームワークが含まれており、Service、BuildConfig、および DeploymentConfig オブジェクトのセットで設定されるテンプレートで定義されています。このテンプレートは、必要なイメージやソースリポジトリーを参照して、アプリケーションをビルドし、デプロイします。
管理者がこれらのテンプレートを 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. テンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターで再利用可能なアプリケーションテンプレートを定義するには、デプロイするリソース、およびそれらの作成ガイドに使用するメタデータを一覧表示する Template オブジェクトを作成します。
以下のサンプル YAML を使用して、独自のテンプレートを作成する前に構造を確認します。
apiVersion: template.openshift.io/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
3.1.7.1. テンプレート記述の作成 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが Web コンソールでテンプレートを見つけ、理解できるようにするために、表示名、タグ、アイコンクラスなどの説明メタデータを追加します。このリファレンスの注釈は、ドキュメント目的、注意事項、およびサポートリンクに使用します。
以下は、テンプレート記述メタデータの例です。
kind: Template
apiVersion: template.openshift.io/v1
metadata:
name: cakephp-mysql-example
annotations:
openshift.io/display-name: "CakePHP MySQL Example (Ephemeral)"
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."
openshift.io/long-description: >-
This template defines resources needed to develop a CakePHP application,
including a build configuration, application DeploymentConfig, and
database DeploymentConfig. The database is stored in
non-persistent storage, so this configuration should be used for
experimental purposes only.
tags: "quickstart,php,cakephp"
iconClass: icon-php
openshift.io/provider-display-name: "Red Hat, Inc."
openshift.io/documentation-url: "https://github.com/sclorg/cakephp-ex"
openshift.io/support-url: "https://access.redhat.com"
message: "Your admin credentials are ${ADMIN_USERNAME}:${ADMIN_PASSWORD}"
各項目の説明:
metadata.name- テンプレートの一意の名前を指定します。
metadata.annotations.openshift.io/display-name- ユーザーインターフェイスで使用できる簡単な、ユーザーフレンドリーな名前を指定します。
metadata.annotations.description- テンプレートの説明を指定します。デプロイされる内容、デプロイ前に知っておく必要のある注意点をユーザーが理解できるように詳細を追加します。README ファイルなど、追加情報へのリンクも追加します。改行を含めると、パラグラフを作成できます。
metadata.annotations.openshift.io/long-description- 追加のテンプレート記述を指定します。これはサービスカタログに表示されます。
metadata.annotations.tags-
検索およびグループ化を実行するためにテンプレートに関連付けるタグを指定します。テンプレートを提供されるカタログカテゴリーのいずれかにグループ化するタグを追加します。コンソールの定数ファイルの
CATALOG_CATEGORIESでidおよびcategoryAliasesを参照してください。カテゴリーはクラスター全体に対してカスタマイズすることもできます。 metadata.annotations.iconClassWeb コンソールでテンプレートと一緒に表示されるアイコンを指定します。
以下は、利用可能なアイコンのリストです。
-
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
metadata.annotations.openshift.io/provider-display-name- テンプレートを提供する人または組織の名前を指定します。
metadata.annotations.openshift.io/documentation-url- テンプレートの追加ドキュメントを参照する URL を指定します。
metadata.annotations.openshift.io/support-url- テンプレートに関するサポートを取得できる URL を指定します。
message- テンプレートがインスタンス化されるときに表示される説明メッセージを指定します。このフィールドで、新規作成されたリソースの使用方法をユーザーに通知します。生成された認証情報や他のパラメーターを出力に追加できるように、メッセージの表示前にパラメーターの置換が行われます。ユーザーが従うべき次の手順が記載されたドキュメントへのリンクを追加してください。
3.1.7.2. テンプレートラベルの作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートから作成されたすべてのオブジェクトにラベルを付けるには、labels セクションをテンプレート定義に追加します。ユーザーがテンプレートから作成されたリソースを識別および管理できるように、パラメーター化されたラベルを使用します。
以下は、テンプレートオブジェクトのラベルの例です。
kind: "Template"
apiVersion: "v1"
...
labels:
template: "cakephp-mysql-example"
app: "${NAME}"
各項目の説明:
labels.template- このテンプレートから作成する全オブジェクトに適用されるラベルを指定します。
labels.app- パラメーター化されたラベルを指定します。このラベルは、このテンプレートから作成された全オブジェクトに適用されます。パラメーターは、ラベルキーおよび値の両方で拡張されます。
3.1.7.3. テンプレートパラメーターの作成 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートの処理時にテンプレートをカスタマイズするには、デフォルトまたは生成された値でパラメーターを定義し、テンプレートフィールドでそれらを参照します。文字列または JSON 置換構文を使用して、ユーザー固有の値を作成されたオブジェクトに渡します。
パラメーターにより、テンプレートの処理時に値を生成するか、ユーザーが値を指定できるようになります。パラメーターが参照されると、値が置換されます。参照は、オブジェクト一覧フィールドであればどこでも定義できます。これは、無作為にパスワードを作成したり、テンプレートのカスタマイズに必要なユーザー固有の値やホスト名を指定したりできるので便利です。パラメーターは、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、および \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 テンプレートの例
parameters:
- name: singlequoted_example
generate: expression
from: '[\A]{10}'
- name: doublequoted_example
generate: expression
from: "[\\A]{10}"
修飾子を含む JSON テンプレートの例
{
"parameters": [
{
"name": "json_example",
"generate": "expression",
"from": "[\\A]{10}"
}
]
}
以下は、パラメーター定義と参照を含む完全なテンプレートの例です。
kind: Template
apiVersion: template.openshift.io/v1
metadata:
name: my-template
objects:
- kind: BuildConfig
apiVersion: build.openshift.io/v1
metadata:
name: cakephp-mysql-example
annotations:
description: Defines how to build the application
spec:
source:
type: Git
git:
uri: "${SOURCE_REPOSITORY_URL}"
ref: "${SOURCE_REPOSITORY_REF}"
contextDir: "${CONTEXT_DIR}"
- kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
name: frontend
spec:
replicas: "${{REPLICA_COUNT}}"
parameters:
- name: SOURCE_REPOSITORY_URL
displayName: Source Repository URL
description: The URL of the repository with your application source code
value: https://github.com/sclorg/cakephp-ex.git
required: true
- name: GITHUB_WEBHOOK_SECRET
description: A secret string used to configure the GitHub webhook
generate: expression
from: "[a-zA-Z0-9]{40}"
- name: REPLICA_COUNT
description: Number of replicas to run
value: "2"
required: true
message: "... The GitHub webhook secret is ${GITHUB_WEBHOOK_SECRET} ..."
各項目の説明:
spec.git.uri-
テンプレート処理時に
SOURCE_REPOSITORY_URLパラメーターに置き換える値を指定します。 spec.replicas-
テンプレートの処理時に、
REPLICA_COUNTパラメーターの引用なしの値に置き換える値を指定します。 parameters.name- パラメーターの名前を指定します。この値は、テンプレート内でパラメーターを参照するのに使用します。
parameters.displayName- 分かりやすいパラメーターの名前を指定します。これは、ユーザーに表示されます。
parameters.description- パラメーターの説明を指定します。期待値に対する制約など、パラメーターの目的を詳細にわたり説明します。説明には、コンソールのテキスト標準に従い、完全な文章を使用するようにしてください。表示名と同じ内容を使用しないでください。
parameters.value- テンプレートの処理時に値をオーバーライドしない場合に使用されるパラメーターのデフォルト値を指定します。パスワードなどのデフォルト値の使用を避けるようにしてください。シークレットと組み合わせた生成パラメーターを使用するようにしてください。
parameters.required- このパラメーターが必須であることを指定します。つまり、空の値で上書きすることはできません。パラメーターでデフォルト値または生成値が指定されていない場合には、ユーザーは値を指定する必要があります。
parameters.generate- パラメーターの値が生成されることを指定します。
parameters.from- ジェネレーターへの入力を指定します。この場合、ジェネレーターは、大文字、小文字を含む 40 桁の英数字の値を生成します。
message- パラメーターをテンプレートメッセージに含めることができます。このフィールドは、生成された値をユーザーに通知します。
3.1.7.4. テンプレートオブジェクトリストの作成 リンクのコピーリンクがクリップボードにコピーされました!
処理時にテンプレートが作成するものを指定するには、デプロイする API リソースと共に オブジェクト リストを定義します。パラメーター値は、作成前に各オブジェクト定義に置き換えられます。
以下は、オブジェクトリストの例です。
kind: "Template"
apiVersion: "v1"
metadata:
name: my-template
objects:
- kind: "Service"
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"
各項目の説明:
objects.kind- このテンプレートにより作成されるサービスの定義を指定します。
オブジェクト定義のメタデータに namespace フィールドの固定値が含まれる場合、フィールドはテンプレートのインスタンス化の際に定義から取り除かれます。namespace フィールドにパラメーター参照が含まれる場合には、通常のパラメーター置換が実行され、オブジェクトは結果の namespace に作成されます。これには、ユーザーにその namespace にオブジェクトを作成するパーミッションが必要です。
3.1.7.5. テンプレートをバインド可能としてマーキングする リンクのコピーリンクがクリップボードにコピーされました!
エンドユーザーがテンプレートからプロビジョニングされるサービスにバインドされないようにするには、template.openshift.io/bindable: "false" アノテーションをテンプレートオブジェクトに追加します。デフォルトで、テンプレートサービスブローカーは各テンプレートサービスをサービスカタログでバインド可能として公開します。
手順
-
template.openshift.io/bindable: "false"のアノテーションをテンプレートに追加して、エンドユーザーが指定のテンプレートからプロビジョニングされるサービスをバインドできないようにします。
3.1.7.6. テンプレートオブジェクトフィールドの公開 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーがテンプレートサービスにバインドするときに接続の詳細を返すには、template.openshift.io/expose- または template.openshift.io/base64-expose- アノテーションを ConfigMap、Secret、Service、または Route オブジェクトに追加します。その後、バインディングクライアントは、必要な認証情報とエンドポイントを直接受信します。
各アノテーションキーは、bind 応答のキーになるように、接頭辞が削除されてパススルーされます。
各アノテーションの値は Kubernetes JSONPath 式の値であり、バインド時に解決され、bind 応答で返される値が含まれるオブジェクトフィールドを指定します。
バックスラッシュでエスケープしない限り、Kubernetes の JSONPath 実装は表現内のどの場所に使用されていても、.、@ などはメタ文字として解釈されます。そのため、たとえば、my.key という名前の ConfigMap データを参照するには、JSONPath 式は {.data['my\.key']} でなければなりません。JSONPath 式が YAML でどのように記述されているかによって、"{.data['my\\.key']}" などのように、追加でバックスラッシュが必要になる場合があります。
以下は、公開されるさまざまなオブジェクトのフィールドの例です。
kind: Template
apiVersion: template.openshift.io/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: <password>
- 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: route.openshift.io/v1
metadata:
name: my-template-route
annotations:
template.openshift.io/expose-uri: "http://{.spec.host}{.spec.path}"
spec:
path: mypath
Bind 応答のキーと値のペアは、環境変数として、システムの他の場所で使用できます。そのため、各アノテーションキーは、接頭辞が削除された状態で、有効な環境変数名である必要があります。有効な名前は、文字 A-Z、a-z、または _ で始まり、ゼロ以上の文字 A-Z、a-z、0-9、または _ で始まります。
前述の部分的なテンプレートでの bind 操作に対する応答例:
{
"credentials": {
"username": "foo",
"password": "YmFy",
"service_ip_port": "172.30.12.34:8080",
"uri": "http://route-test.router.default.svc.cluster.local/mypath"
}
}
手順
-
template.openshift.io/expose-アノテーションを使用して、値を文字列として返します。この方法では、任意のバイナリーデータは処理されません。 -
バイナリーデータを返す必要がある場合、
template.openshift.io/base64-expose-アノテーションを使用して、データが返される前にデータをエンコードします。
3.1.7.7. テンプレートの準備ができるまで待機する リンクのコピーリンクがクリップボードにコピーされました!
キーリソースが準備されるまでテンプレートからのリソースの作成を遅らせるには、template.alpha.openshift.io/wait-for-ready: "true" アノテーションをサポートされているオブジェクトの種類に追加します。サービスカタログ、テンプレートサービスブローカー、および TemplateInstance API は、アノテーションが整ったオブジェクトを報告するまで待機します。
手順を開始する前に、次の考慮事項をお読みください。
- アプリケーションにスムーズに実行するのに十分なリソースが提供されるようにメモリー、CPU、およびストレージのデフォルトサイズを設定します。
-
latestタグが複数のメジャーバージョンで使用されている場合には、イメージからこのタグを参照しないようにします。新規イメージがそのタグにプッシュされると、実行中のアプリケーションが破損してしまう可能性があります。 - 適切なテンプレートの場合、テンプレートのデプロイ後に変更する必要なしに、ビルドおよびデプロイが正常に行われます。
手順
テンプレート機能を使用するには、テンプレート内の
Build、BuildConfig、Deployment、DeploymentConfig、Job、またはStatefulSetの種類のオブジェクト 1 つ以上に、以下のアノテーションでマークを付けます。"template.alpha.openshift.io/wait-for-ready": "true"アノテーションのマークが付けられたすべてのオブジェクトが準備完了と報告されるまで、テンプレートからのリソースの作成は完了しません。同様に、アノテーションが付けられたオブジェクトが失敗したと報告されるか、固定タイムアウトである 1 時間以内にテンプレートの準備が整わなかった場合に、テンプレートからリソースを作成できません。
テンプレートからリソースを作成する場合、各オブジェクトの種類の準備状態および失敗は以下のように定義されます。
種類 準備状態 (Readiness) 失敗 (Failure) Buildオブジェクトが Complete フェーズを報告する
オブジェクトが Canceled、Error、または Failed を報告する
BuildConfig関連付けられた最新のビルドオブジェクトが Complete フェーズを報告する
関連付けられた最新のビルドオブジェクトが Canceled、Error、または Failed を報告する
Deploymentオブジェクトは、新しいレプリカセットとデプロイメントが利用可能であると報告する。これにより、オブジェクトで定義される readiness プローブが有効になります。
オブジェクトで、Progressing の状態が false であると報告される
DeploymentConfigオブジェクトは新規レプリケーションコントローラーおよびデプロイメントが利用可能であると報告する。これにより、オブジェクトで定義される readiness プローブが有効になります。
オブジェクトで、Progressing の状態が false であると報告される
Jobオブジェクトが完了 (completion) を報告する
オブジェクトが 1 つ以上の失敗が発生したことを報告する
StatefulSetオブジェクトはすべてのレプリカが Ready であることを報告するこれにより、オブジェクトで定義される readiness プローブが有効になります。
該当なし
以下は、テンプレートサンプルを一部抜粋したものです。この例では、
wait-for-readyアノテーションが使用されています。他のサンプルは、OpenShift Container Platform クイックスタートテンプレートにあります。kind: Template apiVersion: template.openshift.io/v1 metadata: name: my-template objects: - kind: BuildConfig apiVersion: build.openshift.io/v1 metadata: name: ... annotations: # wait-for-ready used on BuildConfig ensures that creating resources from the template # fails immediately if the build fails template.alpha.openshift.io/wait-for-ready: "true" spec: ... - kind: DeploymentConfig apiVersion: apps.openshift.io/v1 metadata: name: ... annotations: template.alpha.openshift.io/wait-for-ready: "true" spec: ... - kind: Service apiVersion: v1 metadata: name: ... spec: ...
3.1.7.8. 既存オブジェクトからのテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトの既存のオブジェクトからテンプレートを作成するには、それらのオブジェクトをエクスポートし、パラメーターと他のテンプレートのカスタマイズを追加します。デプロイされたリソースを再利用すると、他のユーザーがテンプレートから一貫してデプロイできる作業設定を取得できます。
手順
以下のコマンドを実行してプロジェクトにオブジェクトをエクスポートします。
$ oc get -o yaml all > <yaml_filename>allではなく、特定のリソースタイプや複数のリソースを置き換えることも可能です。他の例は、oc get -hを実行してください。oc get -o yaml allに含まれるオブジェクトタイプは以下の通りです。-
BuildConfig -
Build -
DeploymentConfig -
ImageStream -
Pod -
ReplicationController -
Route Service注記コンテンツはクラスターやバージョンによって異なる可能性があるため、
allエイリアスの使用は推奨されません。代わりに、必要なすべてのリソースを指定してください。
-