3.2.8. リモートクラスターの使用
APB の開発において、開発者が apb
ツールが提供する完全な開発ライフサイクルを使用できない状態になるいくつかの要因があります。これらの主な要因には、以下が含まれます。
- リモートホストにある OpenShift Container Platform クラスターに対して開発を行っている。
- docker デーモンへのアクセスがないマシンで APB を開発している。
開発者が上記のいずれかの条件を満たす場合は、以下のワークフローを使用してイメージを内部 OpenShift Container Platform レジストリーに公開し、ブローカーがイメージのブートストラップ (APB 仕様をブローカーに読み込むプロセス) を実行できるようにします。以下のセクションでは、apb
ツールを使用する場合と使用しない場合にこれらの手順を実行する方法について説明しています。
3.2.8.1. APB のプッシュ
リモートの OpenShift Container Platform クラスターを使って apb push
コマンドを使用するには、以下を実行します。
base64 エンコードされた APB 仕様が Dockerfile のラベルであることを確認します。これは、通常は
apb prepare
コマンドを使用して実行できます。apb
ツールがインストールされていない場合は、以下を実行できます。$ cat apb.yml | base64
base64 エンコードされた apb.yml を返します。 これは、以下のように Dockerfile の
LABEL "com.redhat.apb.spec"
の下にコピーアンドペーストできます。LABEL "com.redhat.apb.spec"=\ "dmVyc2lvbjogMS4wCm5hbWU6IG1lZGlhd2lraS1hcGIKZGVzY3JpcHRpb246IE1lZGlhd2lraSBh\ cGIgaW1wbGVtZW50YXRpb24KYmluZGFibGU6IEZhbHNlCmFzeW5jOiBvcHRpb25hbAptZXRhZGF0\ YToKICBkb2N1bWVudGF0aW9uVXJsOiBodHRwczovL3d3dy5tZWRpYXdpa2kub3JnL3dpa2kvRG9j\ dW1lbnRhdGlvbgogIGxvbmdEZXNjcmlwdGlvbjogQW4gYXBiIHRoYXQgZGVwbG95cyBNZWRpYXdp\ a2kgMS4yMwogIGRlcGVuZGVuY2llczogWydkb2NrZXIuaW8vYW5zaWJsZXBsYXlib29rYnVuZGxl\ L21lZGlhd2lraTEyMzpsYXRlc3QnXQogIGRpc3BsYXlOYW1lOiBNZWRpYXdpa2kgKEFQQilmZGZk\ CiAgY29uc29sZS5vcGVuc2hpZnQuaW8vaWNvbkNsYXNzOiBpY29uLW1lZGlhd2lraQogIHByb3Zp\ ZGVyRGlzcGxheU5hbWU6ICJSZWQgSGF0LCBJbmMuIgpwbGFuczoKICAtIG5hbWU6IGRlZmF1bHQK\ ICAgIGRlc2NyaXB0aW9uOiBBbiBBUEIgdGhhdCBkZXBsb3lzIE1lZGlhV2lraQogICAgZnJlZTog\ VHJ1ZQogICAgbWV0YWRhdGE6CiAgICAgIGRpc3BsYXlOYW1lOiBEZWZhdWx0CiAgICAgIGxvbmdE\ ZXNjcmlwdGlvbjogVGhpcyBwbGFuIGRlcGxveXMgYSBzaW5nbGUgbWVkaWF3aWtpIGluc3RhbmNl\ IHdpdGhvdXQgYSBEQgogICAgICBjb3N0OiAkMC4wMAogICAgcGFyYW1ldGVyczoKICAgICAgLSBu\ YW1lOiBtZWRpYXdpa2lfZGJfc2NoZW1hCiAgICAgICAgZGVmYXVsdDogbWVkaWF3aWtpCiAgICAg\ ICAgdHlwZTogc3RyaW5nCiAgICAgICAgdGl0bGU6IE1lZGlhd2lraSBEQiBTY2hlbWEKICAgICAg\ ICBwYXR0ZXJuOiAiXlthLXpBLVpfXVthLXpBLVowLTlfXSokIgogICAgICAgIHJlcXVpcmVkOiBU\ cnVlCiAgICAgIC0gbmFtZTogbWVkaWF3aWtpX3NpdGVfbmFtZQogICAgICAgIGRlZmF1bHQ6IE1l\ ZGlhV2lraQogICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgIHRpdGxlOiBNZWRpYXdpa2kgU2l0\ ZSBOYW1lCiAgICAgICAgcGF0dGVybjogIl5bYS16QS1aXSskIgogICAgICAgIHJlcXVpcmVkOiBU\ cnVlCiAgICAgICAgdXBkYXRhYmxlOiBUcnVlCiAgICAgIC0gbmFtZTogbWVkaWF3aWtpX3NpdGVf\ bGFuZwogICAgICAgIGRlZmF1bHQ6IGVuCiAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgdGl0\ bGU6IE1lZGlhd2lraSBTaXRlIExhbmd1YWdlCiAgICAgICAgcGF0dGVybjogIl5bYS16XXsyLDN9\ JCIKICAgICAgICByZXF1aXJlZDogVHJ1ZQogICAgICAtIG5hbWU6IG1lZGlhd2lraV9hZG1pbl91\ c2VyCiAgICAgICAgZGVmYXVsdDogYWRtaW4KICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICB0\ aXRsZTogTWVkaWF3aWtpIEFkbWluIFVzZXIgKENhbm5vdCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBB\ ZG1pbiBVc2VyIFBhc3N3b3JkKQogICAgICAgIHJlcXVpcmVkOiBUcnVlCiAgICAgIC0gbmFtZTog\ bWVkaWF3aWtpX2FkbWluX3Bhc3MKICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICB0aXRsZTog\ TWVkaWF3aWtpIEFkbWluIFVzZXIgUGFzc3dvcmQKICAgICAgICByZXF1aXJlZDogVHJ1ZQogICAg\ ICAgIGRpc3BsYXlfdHlwZTogcGFzc3dvcmQK"
内部 OpenShift Container Platform レジストリーにビルドされた APB イメージを設定します。
通常、これは
apb push
コマンドで処理されます。docker
CLI を使用せずにイメージをビルドするには、OpenShift Container Platform の S2I 機能を利用することができます。デフォルトで、OAB は openshift プロジェクトで公開済みの APB を検索するように設定されます。このプロジェクトは、クラスターのすべての認証ユーザーが利用できるようにイメージとイメージストリームを公開するグローバル namespace です。イメージをビルドするために openshift プロジェクトで
oc new-app
コマンドを使用して、この利点を活用できます。$ oc new-app <path_to_bundle_source> \ --name <bundle_name> \ -n openshift
2 分ほど経過したら、イメージが内部レジストリーに表示されるはずです。
$ oc get images | grep <bundle_name> sha256:b2dcb4b95e178e9b7ac73e5ee0211080c10b24260f76cfec30b89e74e8ee6742 172.30.1.1:5000/openshift/<bundle_name>@sha256:b2dcb4b95e178e9b7ac73e5ee0211080c10b24260f76cfec30b89e74e8ee6742
OAB をブートストラップします。通常、これも
apb push
またはapb bootstrap
コマンドで処理されます。apb bootstrap
コマンドは 5 分から 10 分の待機時間なしにサービスカタログを再度一覧表示するため、このコマンドをこの手順で使用するのが適しています。apb
ツールがインストールされていない場合、代わりに以下を実行できます。ブローカーのルート名を取得します。
$ oc get route -n openshift-ansible-service-broker NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD asb-1338 asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io asb port-1338 reencrypt None
ブローカーのサポートされているパスの一覧を取得します。
$ curl -H "Authorization: Bearer $(oc whoami -t)" -k \ https://asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io/ { "paths": [ "/apis", "/ansible-service-broker/", 1 "/healthz", "/healthz/ping", "/healthz/poststarthook/generic-apiserver-start-informers", "/metrics" ] }
- 1
- このパスは
v2/bootstrap
およびv2/catalog
パスを指定します。
直前の手順で検出される値を使用し、
v2/bootstrap
パスに対して curl を実行します。$ curl -H "Authorization: Bearer $(oc whoami -t)" -k -X POST \ https://asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io/ansible-service-broker/v2/bootstrap 1 { "spec_count": 38, "image_count": 109 }
- 1
- 直前の手順で検出される値と異なる場合には、
ansible-service-broker
を置き換えます。
注記oc whoami -t
コマンドはトークンを返し、認証ユーザーにはアクセスパーミッションで説明されているパーミッションがなければなりません。
新規 APB が OAB に存在することを確認します。通常、これは
apb list
コマンドの機能になります。apb
ツールがインストールされていない場合、代わりに以下を実行できます。直前の
v2/bootstrap
の手順で収集されるルートおよびサポートされているパスと名前を使用して、v2/catalog
パスに対して curl を実行します。$ curl -H "Authorization: Bearer $(oc whoami -t)" -k \ https://asb-1338-openshift-ansible-service-broker.172.17.0.1.nip.io/ansible-service-broker/v2/catalog
ブートストラップされたすべての APB 仕様の一覧および
localregistry-<bundle_name>
のラベルが付けられたものが表示されるはずです。出力の形式が JSON であるため、|grep <bundle_name>
を使用して検索することができます。