2.4. アドオン
2.4.1. 概要
CDK を使用すると、cluster up により提供される dashilla OpenShift 設定をアドオンメカニズムで拡張できます。
アドオンは、.addon 拡張子が付いたテキストファイルを含むディレクトリーです。このディレクトリーには、JSON テンプレートファイルなどの他のリソースファイルを含めることもできます。ただし、アドオンごとに 1 つの .addon ファイルのみが許可されます。
以下の例は、アドオンの名前と説明、追加のメタデータ、および適用する実際のアドオンコマンドなど、アドオンの内容を示しています。
例: anyuid アドオン定義ファイル
# Name: anyuid 1 # Description: Allows authenticated users to run images under a non pre-allocated UID 2 # Required-Vars: ACME_TOKEN 3 # OpenShift-Version: >3.6.0 4 # Minishift-Version: >1.22.0 5 mytoken := oc sa get-token oauth-client 6 oc new-app -p OPENSHIFT_OAUTH_CLIENT_SECRET=#{mytoken} 7 oc adm policy add-scc-to-group anyuid system:authenticated 8
- 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 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 変数の使用
$ openshift admin ca create-server-cert \ --signer-cert=/var/lib/origin/openshift.local.config/master/ca.crt \ --signer-key=/var/lib/origin/openshift.local.config/master/ca.key \ --signer-serial=/var/lib/origin/openshift.local.config/master/ca.serial.txt \ --hostnames='docker-registry-default.#{routing-suffix},docker-registry.default.svc.cluster.local,172.30.1.1' \ --cert=/etc/secrets/registry.crt \ --key=/etc/secrets/registry.key
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
--addon-env
フラグは、挿入用に複数の変数を定義するために複数回指定できます。
動的変数の指定は、永続的な設定値の設定 と併用することもできます。
$ 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 1 $ minishift addons apply acme 2
アドオンの開発者は、変数名を Required-Vars メタデータヘッダーに追加することで、アドオンの適用時に変数の値が提供されるようにすることができます。複数の変数はコンマ区切りにする必要があります。
# 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
-
=
と,
はメタ文字で、キーまたは値の一部として使用できません。 Var-Defaults キーの値として「NULL」、「Null」、「Null」、または「null」が指定されている場合は、空の値が設定されます。以下は例になります。
# Var-Defaults: PROJECT_USER=null
-
--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}
2.4.7. デフォルトのアドオン
CDK は、開発を支援する共通の OpenShift カスタマイズを提供する一連のビルトインアドオンを提供します。minishift setup-cdk
では、Minishift は自動的に xpaas アドオン、anyuid アドオン、および admin-user アドオンをインストールして有効にします。デフォルトのアドオンをインストールするには、以下を実行します。
$ minishift addons install --defaults
このコマンドは、デフォルトのアドオンインストールディレクトリー $MINISHIFT_HOME/addons に展開します。インストールされたアドオンの一覧を表示するには、以下のコマンドを実行します。
$ 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>
2.4.9. アドオンの有効化および無効化
アドオンは minishift addons enable
コマンドで有効にされ、minishift addons disable
コマンドで無効にされます。有効にするアドオンは、minishift start
時に自動的に実行されます。
以下の例は、anyuid アドオンを有効にして無効にする方法を示しています。
例: anyuid アドオンの有効化
$ minishift addons enable anyuid
例: anyuid アドオンの無効化
$ minishift addons disable anyuid
2.4.9.1. アドオンの優先度
アドオンを有効にすると、優先度を指定することもできます。これにより、アドオンが適用される順序が決定されます。
以下の例は、優先度が高い レジストリー アドオンを有効にする方法を示しています。
例: 優先順位を持つレジストリーアドオンの有効化
$ minishift addons enable registry --priority=5
アドオンの priority 属性は、アドオンの適用順序を決定します。デフォルトでは、アドオンの優先度は 0 です。優先度の値が低いアドオンが最初に適用されます。
以下の例では、anyuid アドオン、registry アドオン、eap アドオンは、それぞれの優先度 0、5、および 10 で有効にされています。つまり、anyuid が最初に適用され、その後に registry が続き、最後に eap アドオンが最後に適用されます。
例: 明示的な優先度でのコマンドの出力の一覧表示
$ 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
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 -- 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 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 oc adm policy add-role-to-user cluster-admin developer
アドオンを定義したら、以下を実行してインストールできます。
$ minishift addons install <ADDON_DIR_PATH>
複数の行でメタデータを作成することもできます。
例: 複数行の説明が含まれるアドオン定義
# Name: prometheus # Description: This template creates a Prometheus instance preconfigured to gather OpenShift and # Kubernetes platform and node metrics and report them to admins. It is protected by an # OAuth proxy that only allows access for users who have view access to the prometheus # namespace. You may customize where the images (built from openshift/prometheus # and openshift/oauth-proxy) are pulled from via template parameters. # Url: https://prometheus.io/
CDK アドオンインストールディレクトリー $MINISHIFT_HOME/addons で、アドオンを直接編集することもできます。アドオンにエラーがある場合は、addons
コマンドの実行時には表示されませんが、これは minishift start
プロセス中は適用されないことに注意してください。
アドオンの削除手順を提供するには、拡張子 .addon.remove でテキストファイルを作成できます (例: admin-user.addon.remove)。.addon ファイルと同様に、Name および Description メタデータフィールドが必要です。.addon.remove ファイルが存在する場合は、remove
コマンドで適用できます。