VPC: configurando endereços IP autorizados para o IBM Cloud Object Storage

Nuvem privada virtual

É possível autorizar os endereços IP de origem do seu VPC Cloud Service Endpoint para acessar o bucket do IBM Cloud Object Storage. Ao configurar endereços IP autorizados, é possível acessar seus dados do depósito somente desses endereços IP; por exemplo, em um pod de app.

Permissões mínimas necessárias
Função de acesso ao serviço Gerenciador para o serviço Red Hat OpenShift on IBM Cloud.
Função de acesso ao serviço Gravador para o serviço IBM Cloud Object Storage.
  1. Siga as instruções para instalar o plug-in ibmc Helm. Certifique-se de instalar o ibm-object-storage-plugin e definir a opção bucketAccessPolicy como true.

  2. Crie as credenciais de serviço HMAC Manager e Writer para sua instância do IBM Cloud Object Storage.

  3. Codifique a apikey de suas credenciais de Gerenciador do IBM Cloud Object Storage para base64.

    echo -n "<cos_manager_apikey>" | base64
    
  4. Codifique a access-key e a secret-key de suas credenciais de Gravador do IBM Cloud Object Storage para base64.

    echo -n "<cos_writer_access-key>" | base64
    echo -n "<cos_writer_secret-key>" | base64
    
  5. Crie um arquivo de configuração de segredo com os valores codificados. Para a access-key e a secret-key, insira a access-key e a secret-key codificadas em base64 por meio das credenciais HMAC de Gravador que você criou. Para a res-conf-apikey, insira a apikey codificada em base64 por meio de suas credenciais HMAC de Gerenciador.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
    type: ibm/ibmc-s3fs
    data:
      access-key: # Enter your base64 encoded COS Writer access-key
      secret-key: # Enter your base64 encoded COS Writer secret-key
      res-conf-apikey: # Enter your base64 encoded COS Manager api-key
    
  6. Crie o segredo em seu cluster.

    oc create -f secret.yaml
    
  7. Verifique se o segredo foi criado.

    oc get secrets
    
  8. Crie uma PVC que use o segredo que você criou. Configure as anotações ibm.io/auto-create-bucket: "true" e ibm.io/auto_cache: "true" para criar automaticamente um depósito que armazena seus dados em cache.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc_name>
      annotations:
        ibm.io/auto-create-bucket: "true"
        ibm.io/auto-delete-bucket: "false"
        ibm.io/auto_cache: "true"
        ibm.io/bucket: "<bucket_name>"
        ibm.io/secret-name: "<secret_name>"
        ibm.io/secret-namespace: "<secret-namespace>" # By default, the COS plug-in searches for your secret in the same namespace where you create the PVC. If you created your secret in a namespace other than the namespace where you want to create your PVC, enter the namespace where you created your secret.
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 8Gi
      storageClassName: ibmc-s3fs-standard-regional
      volumeMode: Filesystem
    
  9. Obtenha uma lista dos endereços IP de origem do Terminal em serviço de nuvem de sua VPC.

    1. Obtenha uma lista de suas VPCs.

      ibmcloud is vpcs
      
    2. Obtenha os detalhes de sua VPC e anote os endereços IP de origem do Terminal em serviço de nuvem.

      ibmcloud is vpc <vpc_ID>
      

      Saída de exemplo

      ...                                              
      Cloud Service Endpoint source IP addresses:    Zone         Address      
                                                  us-south-1   10.249.XXX.XX      
                                                  us-south-2   10.249.XXX.XX     
                                                  us-south-3   10.249.XXX.XX
      
  10. Verifique se os endereços IP de origem do Terminal em serviço de nuvem de sua VPC estão autorizados em seu depósito do IBM Cloud Object Storage.

  11. Em sua lista de recursos do IBM Cloud Object Storage, selecione a sua instância do IBM Cloud Object Storage e selecione o depósito que você especificou em sua PVC.

  12. Selecione Políticas de acesso > IPs autorizados e verifique se os endereços IP de origem do Terminal em serviço de nuvem de sua VPC são exibidos.

Não é possível ler ou gravar no depósito por meio do console. É possível acessar o seu depósito somente de dentro de um pod de app em seu cluster.

  1. Crie um YAML de implementação que referencie a PVC que você criou.

  2. Crie o app em seu cluster.

oc create -f app.yaml
  1. Verifique se o seu pod de app é Running.
oc get pods | grep <app_name>
  1. Verifique se o seu volume está montado e se é possível ler e gravar em seu depósito do COS.

  2. Efetue login em seu pod de app.

    oc exec -it <pod_name> bash
    
  3. Verifique se o seu depósito do COS é montado por meio de seu pod de app e se é possível ler e gravar em seu depósito do COS. Execute o comando df de disco livre para ver os discos disponíveis em seu sistema. Seu depósito do COS exibe o tipo de sistema de arquivos s3fs e o caminho de montagem que você especificou em sua PVC.

    df
    

    Neste exemplo, o depósito do COS é montado em /cos-vpc.

    Filesystem        1K-blocks    Used    Available Use% Mounted on
    overlay           102048096 9071556     87786140  10% /
    tmpfs                 65536       0        65536   0% /dev
    tmpfs               7565792       0      7565792   0% /sys/fs/cgroup
    shm                   65536       0        65536   0% /dev/shm
    /dev/vda2         102048096 9071556     87786140  10% /etc/hosts
    s3fs           274877906944       0 274877906944   0% /cos-vpc
    tmpfs               7565792      44      7565748   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs               7565792       0      7565792   0% /proc/acpi
    tmpfs               7565792       0      7565792   0% /proc/scsi
    tmpfs               7565792       0      7565792   0% /sys/firmware
    
  4. Mude os diretórios para o diretório no qual seu depósito do COS está montado. Neste exemplo, o depósito é montado em /cos-vpc.

    cd cos-vpc
    
  5. Grave um arquivo test.txt em seu depósito do COS e liste os arquivos para verificar se o arquivo foi gravado.

    touch test.txt && ls
    
  6. Remova o arquivo e efetue logout de seu pod de app.

    rm test.txt && exit