Kf は、kf marketplace
を使用した NFS ボリュームのマウントをサポートしています。
前提条件
NFS サービス インスタンスを作成する
kf marketplace
を実行して、使用可能なサービスを確認します。プラットフォームで NFS が有効になっている場合は、組み込みの NFS サービスがリストに表示されます。
Broker Name Namespace Description
nfsvolumebroker nfs mount nfs shares
外部ファイル システムをマウントする
サービス インスタンスを作成する
既存の NFS サービスにマウントするには:
kf create-service nfs existing SERVICE-INSTANCE-NAME -c '{"share":"SERVER/SHARE", "capacity":"CAPACITY"}'
変数を実際の値に置き換えます。
- SERVICE-INSTANCE-NAME は、この NFS ボリューム サービス インスタンスの名前です。
- SERVER/SHARE は、サーバーと共有の NFS アドレスです。
- CAPACITY は Kubernetes の数量形式を使用します。
サービスのリストに NFS ボリューム サービスが表示されていることを確認します。出力は次の例のようになります。
$ kf services
...
Listing services in Space: demo-space
Name Type ClassName PlanName Age Ready Reason
filestore-nfs volume nfs existing 6s True <nil>
...
サービス インスタンスをアプリにバインドする
NFS サービス インスタンスをアプリにバインドするには、次のコマンドを実行します。
kf bind-service YOUR-APP-NAME SERVICE-NAME -c '{"uid":"2000","gid":"2000","mount":"MOUNT-PATH","readonly":true}'
変数を実際の値に置き換えます。
YOUR-APP-NAME は、ボリューム サービスを使用するアプリの名前です。
SERVICE-NAME は、前の手順で作成したボリューム サービス インスタンスの名前です。
uid
:UID とgid
:GID には、マウント共有のディレクトリ権限を指定します。MOUNT-PATH は、アプリ内にマウントする必要があるボリュームのパスです。
(省略可)
"readonly":true
は、読み取り専用マウントを作成するオプションの JSON 文字列です。デフォルトでは、ボリューム サービスは読み取り / 書き込みファイル システムをマウントします。
kf bindings
コマンドを使用すると、Space 内のすべてのバインディングを一覧表示できます。出力は次の例のようになります。
$ kf bindings
...
Listing bindings in Space: demo-space
Name App Service Age Ready
binding-spring-music-filestore-nfs spring-music filestore-nfs 71s True
...
アプリからボリューム サービスにアクセスする
アプリからボリューム サービスにアクセスするには、コードで使用するファイルパスを確認する必要があります。ファイルパスは、アプリの環境変数に表示されるサービス バインディングの詳細で確認できます。
アプリの環境変数を表示します。
kf vcap-services YOUR-APP-NAME
YOUR-APP-NAME は、アプリの名前に置き換えます。
kf vcap-services
コマンドの出力例は次のとおりです。
kf vcap-services *YOUR-APP-NAME*
{
"nfs": [
{
"instance_name": "nfs-instance",
"name": "nfs-instance",
"label": "nfs",
"tags": [],
"plan": "existing",
"credentials": {
"capacity": "1Gi",
"gid": 2000,
"mount": "/test/mount",
"share": "10.91.208.210/test",
"uid": 2000
},
"volume_mounts": [
{
"container_dir": "/test/mount",
"device_type": "shared",
"mode": "rw"
}
]
}
]
}
アプリで必要な情報には、volume_mounts
にあるプロパティを使用します。
プロパティ | 説明 |
---|---|
container_dir |
アプリにバインドしたマウント ボリュームのパスを含む文字列。 |
device_type |
NFS ボリュームのリリース。現在のところ、共有デバイスのみに対応しています。共有デバイスは、すべてのアプリ インスタンスを同時にマウントできる分散ファイル システムを表します。 |
mode |
アプリが NFS に対してどのようなタイプのアクセスを行っているかを示す文字列。ro (読み取り専用)または rw (読み取りと書き込み)のいずれかになります。 |