2.4. アドオン
2.4.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
CDK を使用すると、cluster up により提供される dashilla OpenShift 設定をアドオンメカニズムで拡張できます。
アドオンは、.addon 拡張子が付いたテキストファイルを含むディレクトリーです。このディレクトリーには、JSON テンプレートファイルなどの他のリソースファイルを含めることもできます。ただし、アドオンごとに 1 つの .addon ファイルのみが許可されます。
以下の例は、アドオンの名前と説明、追加のメタデータ、および適用する実際のアドオンコマンドなど、アドオンの内容を示しています。
例: anyuid アドオン定義ファイル
- 1
- (必須) アドオンの名前。
- 2
- (必須 アドオンの説明。
- 3
- (必要に応じて) 必要な挿入変数のコンマ区切りリスト。「変数の挿入」を参照してください。
- 4
- (必要に応じて) 特定のアドオンの実行に必要な OpenShift バージョン。「OpenShift バージョンセマンティクス」を参照してください。
- 5
- (必要に応じて) 特定のアドオンの実行に必要な CDK バージョン。「最小バージョンセマンティクス」を参照してください。
- 6
- 実際のアドオンコマンドを実行し、その出力を変数に保存します。内部変数 を参照してください。
- 7
- 実際の追加コマンドです。この場合、コマンドは
mytoken変数の値を使用して oc バイナリーを実行します。 - 8
- 実際の追加コマンドです。この場合、コマンドは oc バイナリーを実行します。
- 「#」文字で始まるコメント行は、ファイルのどこにでも挿入できます。
-
!文字で始まるコマンドは、実行の失敗を無視します。そのため、アドオンがべき等になります (つまり、アドオンの最終的な動作を変更せずに、コマンドは複数回実行できます)。
有効なアドオンは、初期クラスタープロビジョニングが正常に完了した直後に、minishift start 時に適用されます。
2.4.2. OpenShift-Version セマンティクス リンクのコピーリンクがクリップボードにコピーされました!
アドオンメタデータの一部として、アドオンを適用するために実行中の OpenShift バージョンを指定できます。これを実行するには、任意の OpenShift-Version メタデータフィールドを指定できます。セマンティクスは以下のとおりです。
| >3.6.0 | アドオンを適用するには、3.6.0 を超える OpenShift バージョンを実行する必要があります。 |
| >=3.6.0 | アドオンを適用するには、OpenShift バージョン 3.6.0 以降を実行している必要があります。 |
| 3.6.0 | アドオンを適用するには、OpenShift バージョン 3.6.0 を実行する必要があります。 |
| >=3.5.0, <3.8.0 | OpenShift バージョンは 3.5.0 以上 3.8.0 未満にする必要があります。 |
| >=3.5.0, <=3.8.0 | OpenShift バージョンは 3.5.0 以上 3.8.0 以下にする必要があります。 |
- metadata フィールド OpenShift-Version がアドオンヘッダーで指定されていない場合、アドオンはすべてのバージョンの OpenShift に対して適用できます。
- OpenShift-Version では、バージョンの形式は <major>.<minor>.<patch> のみをサポートします。
2.4.3. Minishift-Version セマンティクス リンクのコピーリンクがクリップボードにコピーされました!
アドオンメタデータの一部として、アドオンを適用するために実行する必要のある Minishift バージョンを指定できます。これを行うには、オプションの Minishift-Version メタデータフィールドを指定できます。セマンティクスは以下のとおりです。
| >1.22.0 | アドオンを適用するには、1.22.0 より大きい minishift バージョンを実行する必要があります。 |
| >=1.22.0 | アドオンを適用するには、1.22.0 以上の minishift バージョンを実行する必要があります。 |
| 1.22.0 | アドオンを適用するには、minishift バージョン 1.22.0 を実行する必要があります。 |
| >=1.21.0, <1.25.0 | minishift バージョンは 1.21.0 以上でなければなりませんが、1.25.0 未満です。 |
| >=1.22.0, <=1.25.0 | minishift バージョンは 1.22.0 以上でなければなりませんが、1.25.0 以下である必要があります。 |
- アドオンヘッダーで metadata フィールド Minishift-Version が指定されていない場合、アドオンは CDK のバージョンに対して適用できます。
- Minishift-Version では、バージョンの形式は <major>.<minor>.<patch> のみをサポートします。
2.4.4. アドオン依存関係の定義 リンクのコピーリンクがクリップボードにコピーされました!
アドオン依存関係は、Depends-On メタデータフィールドを使用して定義できます。複数の依存関係は、アドオン名のコンマ区切りリストを使用して定義できます。
例: アドオン定義ファイルのアドオン依存関係の定義
Name: example Description: Shows the use of the Depends-On metadata field Depends-On: anyuid, admin-user
# Name: example
# Description: Shows the use of the Depends-On metadata field
# Depends-On: anyuid, admin-user
echo Depends on the anyuid and admin-user add-ons, requiring them to be installed.
2.4.5. アドオンコマンド リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、アドオンファイルに追加できるコマンドを説明します。CDK アドオンのドメイン固有の小さな言語を形成します。
- ssh
-
sshでアドオンコマンドを起動する場合は、CDK 管理の仮想マシン内でコマンドを実行できます。これは、minishift sshの実行と似ており、仮想マシンで任意のコマンドを実行します。minishift sshコマンドの使用方法は、「SSH を使用した CDK 仮想マシンへの接続」を参照してください。 - oc
ocでアドオンコマンドを起動する場合は、ホストにキャッシュされたocバイナリーを使用して、指定されたocコマンドを実行します。コマンドラインからoc --as system:admin …を実行するのと似ています。注記ocコマンドは system:admin として実行されます。- openshift
-
openshiftでアドオンコマンドを起動する場合、これは OpenShift コンテナーに存在するocバイナリーを使用してコマンドを実行します。つまり、ファイルパラメーターやその他のシステム固有のパラメーターは、ホストではなくコンテナーの環境と一致する必要があります。 - docker
-
dockerでアドオンコマンドを起動すると、CDK 仮想マシン内の Docker デーモンに対してdockerコマンドを実行します。これは、単一ノードの OpenShift クラスターを実行しているのと同じデーモンです。これは、ホストでeval $(minishift docker-env)を実行し、dockerコマンドを実行するのと似ています。minishift docker-envも参照してください。 - echo
-
echoでアドオンコマンドを起動すると、echoコマンドの後の引数がコンソールに出力されます。これは、アドオンの実行中に追加のフィードバックを提供するために使用できます。 - sleep
-
sleepでアドオンコマンドを起動すると、指定した秒数だけ待機します。これは、特定のリソースをクエリーする前にocなどのコマンドに数秒かかる可能性がある場合に便利です。 - cat
-
catでアドオンコマンドがを起動する場合は、catコマンドに続く引数を有効なファイルパスにする必要があります。これにより、有効なファイルの内容をコンソールに出力するか、ファイルパスが無効であればエラーメッセージが表示されます。これは、別のコマンドでファイルの内容を使用するのに便利です。
undefined コマンドの使用を試みると、アドオンが解析される際にエラーが発生します。
2.4.6. 変数の挿入 リンクのコピーリンクがクリップボードにコピーされました!
CDK では、アドオンコマンド内で変数を使用できます。変数の形式は #{<variable-name>} です。以下の例は、OpenShift ルーティング接尾辞が openshift コマンドに挿入され、OpenShift レジストリーのセキュリティー保護の一環として新規証明書を作成する方法を示しています。使用された変数 #{routing-suffix} は組み込みアドオン変数の一部です。
例: routing-suffix 変数の使用
2.4.6.1. 組み込み変数 リンクのコピーリンクがクリップボードにコピーされました!
常に挿入に使用できる組み込み変数が複数存在しています。以下の表は、これらの変数を示しています。
| 変数 | 説明 |
|---|---|
| ip | CDK 仮想マシンの IP。 |
| routing-suffix | アプリケーションの OpenShift ルーティング接尾辞。 |
| addon-name | 現在のアドオンの名前。 |
| user | SSH を介してコマンドを実行するために CDK が使用するユーザー。 |
2.4.6.2. 動的変数 リンクのコピーリンクがクリップボードにコピーされました!
minishift addons apply コマンドおよび minishift start コマンドも適用されます。これにより、--addon-env フラグも適用され、挿入用の変数を動的に渡すことができます。以下に例を示します。
minishift addons apply --addon-env PROJECT_USER=user acme
$ minishift addons apply --addon-env PROJECT_USER=user acme
--addon-env フラグは、挿入用に複数の変数を定義するために複数回指定できます。
動的変数の指定は、永続的な設定値の設定 と併用することもできます。
minishift config set addon-env PROJECT_USER=user minishift addons apply acme
$ minishift config set addon-env PROJECT_USER=user
$ minishift addons apply acme
minishift config set コマンドを使用する場合は、複数の変数をコンマ区切りにする必要があります。
また、アドオンが適用される際に、環境変数の値で変数を動的に挿入する可能性もあります。この場合には、変数値の前に env を付ける必要があります。
minishift config set addon-env PROJECT_USER=env.USER minishift addons apply acme
$ minishift config set addon-env PROJECT_USER=env.USER
$ minishift addons apply acme
アドオンの開発者は、変数名を Required-Vars メタデータヘッダーに追加することで、アドオンの適用時に変数の値が提供されるようにすることができます。複数の変数はコンマ区切りにする必要があります。
Name: acme Description: ACME add-on Required-Vars: PROJECT_USER
# Name: acme
# Description: ACME add-on
# Required-Vars: PROJECT_USER
Var-Defaults メタデータヘッダーを使用して変数のデフォルト値を指定することもできます。Var-Defaults は、<key>=<value> の形式で指定する必要があります。複数のデフォルトのキーと値のペアはカンマで区切る必要があります。
Name: acme Description: ACME add-on Required-Vars: PROJECT_USER Var-Defaults: PROJECT_USER=user
# Name: acme
# Description: ACME add-on
# Required-Vars: PROJECT_USER
# Var-Defaults: PROJECT_USER=user
-
=と,はメタ文字で、キーまたは値の一部として使用できません。 Var-Defaults キーの値として「NULL」、「Null」、「Null」、または「null」が指定されている場合は、空の値が設定されます。以下は例になります。
Var-Defaults: PROJECT_USER=null
# Var-Defaults: PROJECT_USER=nullCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
--addon-envを使用するか、minishift config set addon-envを設定してコマンドラインで指定される変数値は、Var-Defaults よりも優先されます。
2.4.6.3. 内部変数 リンクのコピーリンクがクリップボードにコピーされました!
アドオンは変数の定義を許可します。これらの変数は、アドオンコマンド の出力を保存するために使用できます。
たとえば、oc コマンド出力を mytoken 変数に保存し、以下のように後続のアドオンコマンドで使用できます。
mytoken := oc sa get-token oauth-client
oc new-app -p OPENSHIFT_OAUTH_CLIENT_SECRET=#{mytoken}
mytoken := oc sa get-token oauth-client
oc new-app -p OPENSHIFT_OAUTH_CLIENT_SECRET=#{mytoken}
2.4.7. デフォルトのアドオン リンクのコピーリンクがクリップボードにコピーされました!
CDK は、開発を支援する共通の OpenShift カスタマイズを提供する一連のビルトインアドオンを提供します。minishift setup-cdk では、Minishift は自動的に xpaas アドオン、anyuid アドオン、および admin-user アドオンをインストールして有効にします。デフォルトのアドオンをインストールするには、以下を実行します。
minishift addons install --defaults
$ minishift addons install --defaults
このコマンドは、デフォルトのアドオンインストールディレクトリー $MINISHIFT_HOME/addons に展開します。インストールされたアドオンの一覧を表示するには、以下のコマンドを実行します。
minishift addons list --verbose=true
$ minishift addons list --verbose=true
このコマンドは、インストールされているアドオンの一覧を出力します。少なくとも、anyuid アドオンが表示されるはずです。これは、事前に割り当てられた UID を使用しないイメージを実行できるようにする重要なアドオンです。デフォルトでは、これは OpenShift では使用できません。
| アドオン名 | 説明 |
|---|---|
| anyuid | デフォルトのセキュリティーコンテキスト制約を変更し、Pod が任意の UID で実行できるようにします。 |
| admin-user | 「admin」という名前のユーザーを作成し、cluster-admin ロールを割り当てます。 |
| che | Eclipse Che 統合開発環境のインスタンスを実行します。 |
| eap-cd | JBoss EAP CD テンプレートをインポートします。 |
| htpasswd-identity-provider | ユーザーは、OpenShift インスタンスのデフォルトのログインユーザー名およびパスワードを変更および追加できます。 |
| registry-route | OpenShift レジストリーのエッジ終端ルートを作成します。 |
| xpaas | xPaaS テンプレートをインポートします。 |
eap-cd アドオンは、JBoss EAP CD 19 のテンプレートを提供します。最新バージョンの JBoss EAP CD を使用するには、アップストリームの eap-cd アドオンを使用します。アップストリームアドオンのインストール方法は、「コミュニティーによるアドオン」を参照してください。
2.4.7.1. コミュニティーによるアドオン リンクのコピーリンクがクリップボードにコピーされました!
複数のデフォルトアドオンの他に、CDK 用にコミュニティーで開発したアドオンが多数あります。コミュニティーアドオンは minishift-addons リポジトリーにあります。リポジトリー のアドオンに関する情報をすべて取得できます。インストール手順は、README を参照してください。
2.4.8. アドオンのインストール リンクのコピーリンクがクリップボードにコピーされました!
アドオンは minishift addons install コマンドでインストールされます。
以下の例は、アドオンのインストール方法を示しています。
例: アドオンのインストール
minishift addons install <path_to_addon_directory>
$ minishift addons install <path_to_addon_directory>
2.4.9. アドオンの有効化および無効化 リンクのコピーリンクがクリップボードにコピーされました!
アドオンは minishift addons enable コマンドで有効にされ、minishift addons disable コマンドで無効にされます。有効にするアドオンは、minishift start 時に自動的に実行されます。
以下の例は、anyuid アドオンを有効にして無効にする方法を示しています。
例: anyuid アドオンの有効化
minishift addons enable anyuid
$ minishift addons enable anyuid
例: anyuid アドオンの無効化
minishift addons disable anyuid
$ minishift addons disable anyuid
2.4.9.1. アドオンの優先度 リンクのコピーリンクがクリップボードにコピーされました!
アドオンを有効にすると、優先度を指定することもできます。これにより、アドオンが適用される順序が決定されます。
以下の例は、優先度が高い レジストリー アドオンを有効にする方法を示しています。
例: 優先順位を持つレジストリーアドオンの有効化
minishift addons enable registry --priority=5
$ minishift addons enable registry --priority=5
アドオンの priority 属性は、アドオンの適用順序を決定します。デフォルトでは、アドオンの優先度は 0 です。優先度の値が低いアドオンが最初に適用されます。
以下の例では、anyuid アドオン、registry アドオン、eap アドオンは、それぞれの優先度 0、5、および 10 で有効にされています。つまり、anyuid が最初に適用され、その後に registry が続き、最後に eap アドオンが最後に適用されます。
例: 明示的な優先度でのコマンドの出力の一覧表示
minishift addons list
$ minishift addons list
- anyuid : enabled P(0)
- registry : enabled P(5)
- eap : enabled P(10)
2 つのアドオンの優先順位が同じ場合は、適用される順序は判断されません。
2.4.10. アドオンの適用 リンクのコピーリンクがクリップボードにコピーされました!
アドオンは minishift addons apply コマンドを使用して明示的に実行できます。有効なアドオンと無効なアドオンの両方に apply コマンドを使用できます。1 つのコマンドで複数のアドオンを適用するには、スペースで区切られたアドオン名を指定します。
以下の例は、anyuid アドオンおよび admin-user アドオンを明示的に適用する方法を示しています。
例: anyuid アドオンおよび admin-user アドオンの適用
minishift addons apply anyuid admin-user
$ minishift addons apply anyuid admin-user
2.4.11. アドオンの削除 リンクのコピーリンクがクリップボードにコピーされました!
アドオンは minishift addons remove コマンドを使用して削除できます。これは minishift addons apply のミラーコマンドであり、アドオンが有効かどうかに関わらず、同様に使用できます。指定したアドオンがインストールされ、<addon_name>.addon.remove ファイルがある場合、minishift addons remove は、このファイルで指定されたコマンドを実行します。
1 つのコマンドで複数のアドオンを削除するには、スペースで区切られたアドオン名を指定します。以下の例は、admin-user アドオンを明示的に削除する方法を示しています。
例: admin-user アドオンの削除
minishift addons remove admin-user
$ minishift addons remove admin-user
-- Removing addon 'admin-user':.
admin user deleted
2.4.12. アドオンのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
アドオンは、minishift addons uninstall コマンドを使用してアンインストールできます。これは minishift addons install のミラーコマンドであり、アドオンが有効かどうかに関わらず、同様に使用できます。指定したアドオンがインストールされている場合、minishift addons uninstall は対応するアドオンディレクトリーを $MINISHIFT_HOME/addons から削除します。
以下の例は、admin-user アドオンを明示的にアンインストールする方法を示しています。
例: admin-user アドオンのアンインストール
minishift addons uninstall admin-user
$ minishift addons uninstall admin-user
Add-on 'admin-user' uninstalled
2.4.13. カスタムアドオンの作成 リンクのコピーリンクがクリップボードにコピーされました!
カスタムアドオンを作成するには、ディレクトリーを作成し、そのディレクトリーに、拡張子 .addon で少なくとも 1 つのテキストファイルを作成する必要があります (例: admin-role.addon)。
このファイルには、アドオンの一部として実行するコマンドと、Name および Description メタデータフィールドが含まれている必要があります。
以下の例は、開発者ユーザーに cluster-admin 権限を付与するアドオンの定義を示しています。
例: admin-role のアドオン定義
Name: admin-role Description: Gives the developer user cluster-admin privileges
# Name: admin-role
# Description: Gives the developer user cluster-admin privileges
oc adm policy add-role-to-user cluster-admin developer
アドオンを定義したら、以下を実行してインストールできます。
minishift addons install <ADDON_DIR_PATH>
$ minishift addons install <ADDON_DIR_PATH>
複数の行でメタデータを作成することもできます。
例: 複数行の説明が含まれるアドオン定義
CDK アドオンインストールディレクトリー $MINISHIFT_HOME/addons で、アドオンを直接編集することもできます。アドオンにエラーがある場合は、addons コマンドの実行時には表示されませんが、これは minishift start プロセス中は適用されないことに注意してください。
アドオンの削除手順を提供するには、拡張子 .addon.remove でテキストファイルを作成できます (例: admin-user.addon.remove)。.addon ファイルと同様に、Name および Description メタデータフィールドが必要です。.addon.remove ファイルが存在する場合は、remove コマンドで適用できます。