Montando Recursos de Serviço do Sistema de Arquivos

Com o serviço Container Instances, você pode montar sistemas de arquivos do OCI File Storage Service (FSS) em contêineres em uma instância de contêiner.

Antes de Começar

Antes de criar uma instância de contêiner que monte o armazenamento FSS, identifique os recursos de armazenamento de arquivos que você deseja usar. Na Console, você pode selecionar ou criar um ponto de acesso NFS suportado e exportar durante o fluxo de criação da instância do contêiner.

Certifique-se de que o usuário que está criando a Instância do Contêiner tenha permissão para ler os recursos FSS referenciados.

Políticas de IAM

Comece com as políticas padrão do IAM do Container Instances que permitem que os usuários criem e usem instâncias de contêiner, redes e imagens de contêiner. Em seguida, adicione permissões específicas de FSS para que o chamador possa usar os recursos de Armazenamento de Arquivos referenciados.

Para obter as políticas gerais do IAM da Instância do Contêiner, consulte a referência da política do Container Instances:

Referência da Política do Container Instances

Os exemplos a seguir usam o mesmo estilo da referência da política do Container Instances e assumem um grupo chamado ContainerInstanceLaunchers.

Ative políticas de contêiner e rede.

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

Se a Instância do Contêiner e os recursos FSS estiverem na mesma tenancy, adicione:

Allow group ContainerInstanceLaunchers to use file-family in tenancy

Se a Instância do Contêiner for criada com base em uma tenancy e os recursos do FSS estiverem em outra tenancy, configure políticas entre tenancies.

Grave as seguintes políticas Endorse na tenancy em que o grupo ContainerInstanceLaunchers está definido:

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' }

Grave as seguintes políticas Admit na tenancy em que existem os recursos do FSS:

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

Se a sub-rede usada pela Instância do Contêiner também estiver em outra tenancy, adicione políticas de rede virtual entre tenancies também. Isso geralmente é necessário quando a sub-rede e os recursos do FSS são gerenciados juntos na mesma tenancy.

Grave as seguintes políticas Endorse na tenancy em que o grupo ContainerInstanceLaunchers está definido:

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

Grave as seguintes políticas Admit na tenancy em que existem recursos de sub-rede:

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>

Regras de Segurança de Rede

Permita o tráfego da instância do contêiner para os servidores FSS em TCP e UDP para as seguintes portas:

  • 111
  • 2048-2051

Configure as listas de segurança relevantes ou os grupos de segurança de rede para que o caminho de sub-rede selecionado possa acessar o ponto de acesso NFS do FSS.

Requer Porta de Origem Privilegiada

Configure a exportação do FSS para que cada opção de cliente de exportação tenha requirePrivilegedSourcePort definido como true.

Se qualquer opção de cliente de exportação usar requirePrivilegedSourcePort=false, o workflow de criação poderá falhar com um erro voltado para o usuário informando que a exportação tem requirePrivilegedSourcePort definido como false para uma ou mais opções de cliente. Essas exportações não podem ser montadas, e requirePrivilegedSourcePort deve ser true para todas as opções do cliente.

Opções de Montagem Suportadas

Somente as opções de montagem de NFSv3 a seguir são suportadas para volumes FSS.

Opção Valor Permitido Descrição
sync Nenhum valor. Solicita comportamento de gravação síncrona.
async Nenhum valor. Solicita comportamento assíncrono de gravação.
ro Nenhum valor. Monta a exportação como somente leitura.
rw Nenhum valor. Monta a exportação como leitura-gravação.
soft Nenhum valor. Permite que as solicitações NFS falhem depois que limites de timeout e repetição são atingidos.
hard Nenhum valor. Repete as solicitações NFS até o servidor responder.
ac Nenhum valor. Ativa o armazenamento em cache do atributo.
noac Nenhum valor. Desativa o armazenamento em cache do atributo.
retries Apenas dígitos, por exemplo, 11. Define o número de novas tentativas de NFS antes que o cliente desista ou continue de acordo com o comportamento de nova tentativa selecionado.

Se você especificar qualquer outra opção ou atribuir um valor inválido a uma opção suportada, a solicitação será rejeitada.

Criando Instância de Contêiner com Sistemas de Arquivos Montados

O sistema de arquivos só pode ser especificado ao criar uma instância de contêiner. O sistema de arquivos será montado automaticamente quando a instância do contêiner estiver sendo criada. O exemplo abaixo mostra um volume FSS referenciado pelo OCID do ponto de acesso NFS e OCID de exportação, montado em um contêiner em /mnt/fss.

Crie a instância usando a CLI, que faz referência ao payload JSON:

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

Exemplo de 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"
    }
  ]
}

Além disso, os sistemas de arquivos serão montados automaticamente quando a instância do contêiner com o sistema de arquivos estiver sendo iniciada ou reiniciada.

Desmontando Sistemas de Arquivos

Depois que a instância do contêiner tiver sido criada, a única maneira de desmontar o sistema de arquivos será interrompendo ou excluindo a instância do contêiner. O serviço não exclui o sistema de arquivos depois de desmontado. Assim, o sistema de arquivos pode ser montado novamente mais tarde, iniciando a instância do contêiner ou criando uma nova instância do contêiner com o sistema de arquivos referenciado pelo OCID do ponto de acesso NFS e OCID de exportação.