概要
Oracle Cloud Infrastructure(OCI)のContainer Instance(CI)がFile Storage Service(FSS)を永続ディスクとしてサポートしたので検証しました
参考情報:
構成
FSSを事前に準備してCIを作成します
CIはAlpineをイメージとして作成し、SSHアクセスしてFSSの検証を行います
事前準備
File Storage
File StorageおよびFile Storage Mount Targetを作成します
その際、特権ソース・ポートの設定が必要になります、
この機能により、転送中暗号化によってTLS v.1.2 (Transport Layer Security)暗号化を使用して、インスタンスとマウントされたファイル・システム間のデータが保護されます。
特権ソース・ポートが設定されているか確認するためには以下を選択してポートが特権になっていることを確認します
OCIコンソールからストレージ>>ファイル・ストレージ>>マウント・ターゲット>>対象マウント・ターゲット>>エクスポート>>対象エクスポート>>NFSクライアント・エクスポート・オプションを選択
SSHキー
今回は検証用にAlpineを利用するためSSHアクセス用のキーを作成します
SSHで使う公開鍵・秘密鍵のペアを、Ed25519アルゴリズムで生成します
$ ssh-keygen -t ed25519 -f ~/.ssh/oci-ci-alpine.key -C "oci-ci-alpine.key" -N ""
公開鍵ファイルをBase64形式で変換します
$ base64 -w 0 ~/.ssh/oci-ci-alpine.key.pub
エンコードされた文字列をContainer Instancesの定義ファイルに使用します
Container Instancesの作成
Container Instancesの定義ファイルを作成します
## Replace << >> with the appropriate value
{
"compartmentId": "<<ocid1.compartment.oc1..*******>>",
"displayName": "alpine-ssh",
"availabilityDomain": "<<availabilityDomain>>",
"shape": "CI.Standard.E4.Flex",
"shapeConfig": {
"ocpus": 1.0,
"memoryInGBs": 1.0
},
"vnics": [
{
"subnetId": "<<ocid1.subnet.oc1.*******>>",
"privateIp": "<<Private IP>>",
"isPublicIpAssigned": false
}
],
"containers": [
{
"displayName": "alpine-ssh",
"imageUrl": "docker.io/library/alpine:latest",
"command": ["/bin/sh", "-c"],
"arguments": [
"set -eu && apk add --no-cache openssh-server bash curl iputils net-tools && mkdir -p /run/sshd /root/.ssh && install -m 600 /ssh-authorized-keys/oci-ci-alpine.key.pub /root/.ssh/authorized_keys && ssh-keygen -A && exec /usr/sbin/sshd -D -e -p 2222 -o PermitRootLogin=prohibit-password -o PasswordAuthentication=no -o KbdInteractiveAuthentication=no"
],
"volumeMounts": [
{
"volumeName": "shared-fss",
"mountPath": "/mnt/fss",
"isReadOnly": false
},
{
"volumeName": "ssh-authorized-keys",
"mountPath": "/ssh-authorized-keys",
"isReadOnly": true
}
]
}
],
"volumes": [
{
"name": "shared-fss",
"volumeType": "OCI_FSS_FILE_SYSTEM",
"mountTarget": {
"ociFssMountTargetType": "OCID",
"id": "<<ocid1.mounttarget.oc1.*******>>"
},
"export": {
"ociFssExportType": "OCID",
"id": "<<ocid1.export.oc1.*******>>"
},
"security": {
"auth": "SYS",
"isEncryptedInTransit": true
},
"mountCommand": {
"mountOptions": [
{ "option": "hard" },
{ "option": "noac" },
{ "option": "retrans", "value": "11" }
]
},
"subnetId": "<<ocid1.subnet.oc1.*******>>"
},
{
"name": "ssh-authorized-keys",
"volumeType": "CONFIGFILE",
"configs": [
{
"fileName": "oci-ci-alpine.key.pub",
"data": "<<********************>>" #エンコードした文字列
}
]
}
]
}
OCI CLIコマンドでCI作成実行します
$ oci container-instances container-instance create --from-json file://ci_alpine-ssh.json --debug --region ap-tokyo-1
動作確認
- FSS確認
作成した暗号鍵を使用してSSHアクセスします
## Replace << >> with the appropriate value
$ ssh root@<<Private IP>> -p 2222 -i ./.ssh/oci-ci-alpine.key
Welcome to Alpine!
マウントしたFSSにアクセスできることを確認します
- FSS通信状況
暗号化アクセスに、TCPポート2051が使用されています
localhost:~# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
:
tcp 0 0 10.105.2.21:955 10.105.2.22:2051 ESTABLISHED
:
- ファイル転送パフォーマンス
CI~FSS間のファイル転送を計測します
FSSの標準マウントターゲット速度は1Gbpsです
検証の結果、十分な実用性を示すファイル転送速度が確認できました-
FSS⇒CI ダウンロード
1回目: 93.92MB/s
2回目: 98.56MB/s
3回目: 96.67MB/s -
CI⇒FSS アップロード
1回目: 27.58MB/s
2回目: 29.31MB/s
3回目: 29.56MB/s
-
まとめ
本記事では、OCIのContainer InstancesにおけるFSSの永続ディスクサポートについて、具体的な設定手順からパフォーマンス測定までを検証しました。
- JSON定義ファイルを用いたコンテナ作成手法
- 特権ポート設定による安全な転送暗号化
- 十分な実用性を示すファイル転送速度の確認
これにより、ステートレスなコンテナの制約を超えて、他システムやサーバー間でのファイル共有や永続データの保持が容易になり、Container Instancesの活用シーンが大きく広がることを確認できました。
一方で、FSSはObject Storageと比較してコストが高くなる傾向にあるため、ユースケースに応じた適切なストレージの使い分けによるコスト適正化が重要になります。
