ファイル・システム・サービス・リソースのマウント

コンテナ・インスタンス・サービスを使用すると、OCI File Storage Service (FSS)ファイル・システムをコンテナ・インスタンスのコンテナにマウントできます。

開始する前に

FSSストレージをマウントするコンテナ・インスタンスを作成する前に、使用するファイル・ストレージ・リソースを特定します。コンソールでは、コンテナ・インスタンスの作成フロー中に、サポートされているマウント・ターゲットおよびエクスポートを選択または作成できます。

コンテナ・インスタンスを作成するユーザーに、参照されるFSSリソースを読み取る権限があることを確認します。

IAMポリシー

ユーザーがコンテナ・インスタンス、ネットワークおよびコンテナ・イメージを作成および使用できるようにする標準のコンテナ・インスタンスIAMポリシーから開始します。次に、FSS固有の権限を追加して、コール元が参照されるファイル・ストレージ・リソースを使用できるようにします。

一般的なコンテナ・インスタンスのIAMポリシーについては、コンテナ・インスタンスのポリシー・リファレンスを参照してください:

コンテナ・インスタンス・ポリシー・リファレンス

次の例では、コンテナ・インスタンス・ポリシー参照と同じスタイルを使用し、ContainerInstanceLaunchersという名前のグループを想定しています。

コンテナおよびネットワーキング・ポリシーを有効にします。

Allow group ContainerInstanceLaunchers to manage compute-container-family in compartment <container-instance-compartment-name>
Allow group ContainerInstanceLaunchers to use virtual-network-family in compartment <network-compartment-name>
Allow group ContainerInstanceLaunchers to read repos in tenancy

コンテナ・インスタンスとFSSリソースが同じテナンシにある場合は、次を追加します:

Allow group ContainerInstanceLaunchers to use file-family in tenancy

コンテナ・インスタンスが1つのテナンシから作成され、FSSリソースが別のテナンシにある場合は、クロステナンシ・ポリシーを構成します。

ContainerInstanceLaunchersグループが定義されているテナンシに、次のEndorseポリシーを記述します:

Define tenancy FssResourceTenancy as <fss-resource-tenancy-ocid>

Endorse group ContainerInstanceLaunchers to use file-family in tenancy FssResourceTenancy
Endorse group ContainerInstanceLaunchers to associate compute-container-instances in tenancy with all-resources in tenancy FssResourceTenancy where ALL { 2.resource.kind = 'file-family', request.operation = 'CreateContainerInstance' }

FSSリソースが存在するテナンシに、次のAdmitポリシーを記述します:

Define tenancy ContainerInstanceResourceTenancy as <source-tenancy-ocid>
Define group ContainerInstanceLaunchers as <source-group-ocid>

Admit group ContainerInstanceLaunchers of tenancy ContainerInstanceResourceTenancy to associate compute-container-instances in tenancy ContainerInstanceResourceTenancy with all-resources in compartment id <fss-resource-compartment-ocid> where ALL { 2.resource.kind = 'file-family', request.operation = 'CreateContainerInstance' }
Admit group ContainerInstanceLaunchers of tenancy ContainerInstanceResourceTenancy to use file-family in tenancy

コンテナ・インスタンスによって使用されるサブネットも別のテナンシにある場合は、クロステナンシの仮想ネットワーク・ポリシーも追加します。これは通常、サブネットとFSSリソースが同じテナンシで一緒に管理される場合に必要です。

ContainerInstanceLaunchersグループが定義されているテナンシに、次のEndorseポリシーを記述します:

Define tenancy NetworkResourceTenancy as <network-resource-tenancy-ocid>

Endorse group ContainerInstanceLaunchers to manage virtual-network-family in tenancy NetworkResourceTenancy
Endorse group ContainerInstanceLaunchers to associate compute-container-instances in tenancy with subnets in tenancy NetworkResourceTenancy

サブネット・リソースが存在するテナンシに次のAdmitポリシーを記述します:

Define tenancy ContainerInstanceResourceTenancy as <source-tenancy-ocid>
Define group ContainerInstanceLaunchers as <source-group-ocid>
                    
Admit group ContainerInstanceLaunchers of tenancy ContainerInstanceResourceTenancy to manage virtual-network-family in compartment id <network-resource-compartment-ocid>
Admit group ContainerInstanceLaunchers of tenancy ContainerInstanceResourceTenancy to associate compute-container-instances in tenancy ContainerInstanceResourceTenancy with subnets in compartment id <network-resource-compartment-ocid>

ネットワーク・セキュリティ・ルール

次のポートについて、コンテナ・インスタンスからFSSサーバーへのトラフィックをTCPとUDPの両方で許可します。

  • 111
  • 2048-2051

選択したサブネット・パスがFSSマウント・ターゲットに到達できるように、関連するセキュリティ・リストまたはネットワーク・セキュリティ・グループを構成します。

特権ソース・ポートが必要

すべてのエクスポート・クライアント・オプションにrequirePrivilegedSourcePorttrueに設定されるように、FSSエクスポートを構成します。

エクスポート・クライアント・オプションにrequirePrivilegedSourcePort=falseが使用されている場合、1つ以上のクライアント・オプションについて、エクスポートのrequirePrivilegedSourcePortfalseに設定されていることを示すユーザー側のエラーで、作成ワークフローが失敗することがあります。このようなエクスポートはマウントできません。また、すべてのクライアント・オプションに対してrequirePrivilegedSourcePorttrueにする必要があります。

サポートされているマウント・オプション

FSSボリュームでは、次の NFSv3マウントオプションのみがサポートされます。

オプション 許可された値 摘要
sync 値がありません。 同期書き込み動作を要求します。
async 値がありません。 非同期書込み動作をリクエストします。
ro 値がありません。 エクスポートを読取り専用としてマウントします。
rw 値がありません。 エクスポートを読取り/書込みとしてマウントします。
soft 値がありません。 再試行およびタイムアウト制限に達したあとの NFS要求の失敗を許可します。
hard 値がありません。 サーバーが応答するまで NFS要求を再試行します。
ac 値がありません。 属性キャッシュを有効にします。
noac 値がありません。 属性キャッシュを無効にします。
retries 数字のみ(たとえば、11)。 選択した再試行動作に従って、クライアントがあきらめたり続行したりするまでの NFS再試行回数を設定します。

他のオプションを指定した場合、またはサポートされているオプションに無効な値を指定した場合、リクエストは拒否されます。

マウントされたファイル・システムを使用したコンテナ・インスタンスの作成

ファイル・システムは、コンテナ・インスタンスの作成中にのみ指定できます。ファイル・システムは、コンテナ・インスタンスの作成時に自動的にマウントされます。次の例は、マウント・ターゲットOCIDによって参照されるFSSボリュームと、/mnt/fssのコンテナにマウントされるエクスポートOCIDを示しています。

ペイロードJSONを参照するCLIを使用してインスタンスを作成します:

oci container-instances container-instance create --from-json ci-fss-payload.json

ci-fss-payload.jsonの例:

{
  "displayName": "ci-fss-demo",
  "compartmentId": "ocid1.compartment.oc1..exampleuniqueID",
  "availabilityDomain": "Uocm:PHX-AD-1",
  "shape": "CI.Standard.E4.Flex",
  "shapeConfig": {
    "ocpus": 1,
    "memoryInGBs": 2
  },
  "securityContext": {
    "securityContextType": "LINUX",
    "fsGroup": 1000,
    "fsGroupChangePolicy": "ON_ROOT_MISMATCH"
  },
  "volumes": [
    {
      "name": "shared-fss",
      "volumeType": "OCI_FSS_FILE_SYSTEM",
      "mountTarget": {
        "ociFssMountTargetType": "OCID",
        "id": "ocid1.mounttarget.oc1.phx.exampleuniqueID"
      },
      "export": {
        "ociFssExportType": "OCID",
        "id": "ocid1.export.oc1.phx.exampleuniqueID"
      },
      "security": {
        "auth": "SYS",
        "isEncryptedInTransit": true
      },
      "mountCommand": {
        "mountOptions": [
          { "option": "hard" },
          { "option": "noac" },
          { "option": "retrans", "value": "11" }
        ]
      }
    }
  ],
  "containers": [
    {
      "displayName": "app",
      "imageUrl": "docker.io/library/busybox:latest",
      "command": ["/bin/sh", "-c"],
      "arguments": ["sleep 3600"],
      "volumeMounts": [
        {
          "volumeName": "shared-fss",
          "mountPath": "/mnt/fss",
          "subPath": "team-a",
          "isReadOnly": false
        }
      ]
    }
  ],
  "vnics": [
    {
      "subnetId": "ocid1.subnet.oc1.phx.primaryuniqueID"
    }
  ]
}

また、ファイル・システムを含むコンテナ・インスタンスが起動または再起動されると、ファイル・システムは自動的にマウントされます。

ファイル・システムのアンマウント

コンテナ・インスタンスが作成されると、ファイル・システムをアンマウントする唯一の方法は、コンテナ・インスタンスを停止または削除することです。ファイル・システムは、アンマウント後に削除されません。そのため、コンテナ・インスタンスを起動するか、マウント・ターゲットのOCIDによって参照されるファイル・システムを使用して新しいコンテナ・インスタンスを作成し、OCIDをエクスポートすることで、ファイル・システムを後で再度マウントできます。