Configurando cotas de capacidade para apps que usam IBM Cloud Object Storage

Nuvem privada virtual Infraestrutura clássica

Com o IBM Cloud Object Storage, você pode provisionar dinamicamente buckets para aplicativos em execução em seus clusters Red Hat OpenShift on IBM Cloud. Você também pode configurar dinamicamente cotas de capacidade nesses baldes durante o fornecimento. As cotas podem ajudá-lo a gerenciar os recursos que suas cargas de trabalho utilizam enquanto também evita encargos desnecessários.

Objetivos

Neste tutorial, você instala o plug-in Object Storage em seu cluster e habilitar cotas para quaisquer reclamações de volume persistente (PVC) criadas com o plug-in.

Em seguida, você cria um PVC que cria dinamicamente um balde com um limite de cota em sua instância Object Storage.

Depois disso, você faz o upload de um arquivo para o seu balde e implementa um app simples para o seu cluster que monta o balde e imprime o conteúdo desse arquivo.

Pré-requisitos

Antes de iniciar este tutorial, certifique-se de que você criou ou instalou os seguintes recursos e ferramentas.

  • Uma conta do IBM Cloud. Para obter mais informações, consulte Criando uma conta.
  • As ferramentas CLI incluindo a CLI IBM Cloud, o plug-in CLI do serviço de Contêineres e a CLI Helm. Para obter mais informações, consulte Introdução à CLI da IBM Cloud.
  • Um cluster Red Hat OpenShift on IBM Cloud. Se você tiver um cluster de VPC, certifique-se de que sua VPC tenha um gateway público conectado. Para obter mais informações, consulte Criando clusters
  • Uma instância Object Storage na mesma região do seu cluster. Para obter mais informações, consulte Provision uma instância de Object Storage.

Criação de um conjunto de credenciais de serviço

  1. Siga as etapas para criar um conjunto de HMAC credenciais de serviço para sua instância Object Storage. Note que as credenciais que você cria devem ter a função Manager para criar baldes.

  2. Depois de criar um conjunto de credenciais de serviço HMAC, revise os detalhes de suas credenciais e faça uma nota dos apikey, access_key_id e secret_access_key. Guarde esses valores para a próxima etapa.

Criação de um segredo para armazenar suas credenciais

  1. Crie um segredo usando o apikey, access_key_id e secret_access_key a partir de suas credenciais de serviço.
    oc create secret generic my-cos-secret --type=ibm/ibmc-s3fs --from-literal=access-key=ACCESS-KEY --from-literal=secret-key=SECRET-KEY --from-literal=res-conf-apikey=API-KEY
    
    Exemplo de saída
    secret/my-cos-secret created
    
  2. Verifique se o segredo foi criado.
    oc get secrets | grep my-cos
    
    Exemplo de saída
    my-cos-secret              ibm/ibmc-s3fs                         3      11m
    

Instalando o plug-in

Ao instalar o plug-in em seu cluster, certise-se de especificar a opção --set quotaLimit=true. Especificar esta opção significa qualquer buckets que você criar com PVCs tem um limite de cota igual ao tamanho de armazenamento no PVC.

  1. Siga os passos para instalar o plug-in e ativar limites de cotas. Se você já instalou o plug-in em seu cluster, você pode pular esta etapa. Para ver se o plug-in já está instalado, siga o próximo passo.

  2. Verifique se o plug-in está instalado listando os pods do driver.

    oc get pods -n ibm-object-s3fs | grep object
    

    Exemplo de saída

    ibmcloud-object-storage-driver-k9x4l             1/1     Running   0          6m52s
    ibmcloud-object-storage-driver-kj9m6             1/1     Running   0          6m52s
    ibmcloud-object-storage-driver-l8gqk             1/1     Running   0          6m52s
    ibmcloud-object-storage-plugin-576fb8bd7-sxlkb   1/1     Running   0          6m52s
    

Provisionar dinamicamente um balde com uma cota

Você pode usar o provisionamento dinâmico para criar automaticamente um balde Object Storage quando você for criar um PVC.

  1. Copie a configuração PVC a seguir e salve-a em um arquivo chamado pvc.yaml. Este exemplo PVC cria automaticamente um balde com uma cota igual a 20Gi.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my-cos-pvc
      namespace: default
      annotations:
        ibm.io/auto-create-bucket: "true"
        ibm.io/auto-delete-bucket: "true"
        ibm.io/secret-name: "my-cos-secret"
        ibm.io/quota-limit: "true"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      storageClassName: ibmc-s3fs-standard-cross-region
    
  2. Crie o PVC em seu cluster.

    oc apply -f pvc.yaml
    

    Exemplo de saída

    persistentvolumeclaim/my-cos-pvc created
    
  3. Liste seus PVCs e verifique se o my-cos-pvc está no estado Bound.

    NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                      AGE
    my-cos-pvc   Bound    pvc-64a4e0c9-b5ec-40e3-8b7e-77ff47ae6c5e   20Gi       RWO            ibmc-s3fs-standard-cross-region   6s
    
  4. Navegue em sua instância Object Storage no console e clique na aba Buckets.

  5. Revise os detalhes do balde criado automaticamente. O nome do balde está no formato tmp-s3fs-XXXX.

  6. Clique no balde tmp-s3fs-XXXX, em seguida, clique na aba Configuração.

  7. Na página Configuração, procure a seção Quota enforcement. Observe que o balde foi criado automaticamente com uma cota igual ao tamanho que você especificou no PVC. Neste exemplo, o valor foi 20Gi.

Fazendo o upload de um arquivo para o seu balde

  1. Salve a seguinte configuração do pod em um arquivo chamado pod.yaml.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    
  2. Navegue em sua instância Object Storage no console e clique na aba Buckets.

  3. Clique no balde tmp-s3fs-XXXX, em seguida, clique em Upload.

  4. Faça o upload do arquivo pod.yaml que você salvou anteriormente.

Criando um app que monta o balde

  1. Copie a configuração Pod a seguir e salve-a em um arquivo chamado pod.yaml. Este pod de exemplo monta o balde que foi criado pelo PVC my-cos-pvc e imprime o conteúdo do arquivo pod.yaml que você carregou mais cedo.
    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    
  2. Crie o pod em seu cluster.
    oc apply -f pod.yaml
    
    Exemplo de saída
    pod/cat-test-file created
    
  3. Obtem os logs do pod cat-test-file. Neste exemplo, os logs contêm o conteúdo impresso do arquivo pod.yaml que você carregou mais cedo.
    apiVersion: v1
    kind: Pod
    metadata:
      name: cat-test-file
    spec:
      containers:
        - name: app
          image: nginx
          volumeMounts:
          - name: my-vol
            mountPath: "/mnt"
          command: ["/bin/sh"]
          args: ["-c", "cat mnt/pod.yaml && sleep 5 && exit"]
      volumes:
        - name: my-vol
          persistentVolumeClaim:
            claimName: my-cos-pvc
    

Revisar

Neste tutorial, você instalou o plug-in Object Storage no seu cluster e ativou cotas para quaisquer PVCs criados com o plug-in. Em seguida, você criou um PVC que criou dinamicamente um balde com um limite de cotas em sua instância Object Storage. Depois disso, implantou um app simples que imprime o conteúdo de um arquivo em seu balde.

Próximas etapas