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
-
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.
-
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_idesecret_access_key. Guarde esses valores para a próxima etapa.
Criação de um segredo para armazenar suas credenciais
- Crie um segredo usando o
apikey,access_key_idesecret_access_keya partir de suas credenciais de serviço.Exemplo de saídaoc 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-KEYsecret/my-cos-secret created - Verifique se o segredo foi criado.
Exemplo de saídaoc get secrets | grep my-cosmy-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.
-
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.
-
Verifique se o plug-in está instalado listando os pods do driver.
oc get pods -n ibm-object-s3fs | grep objectExemplo 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.
-
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 a20Gi.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 -
Crie o PVC em seu cluster.
oc apply -f pvc.yamlExemplo de saída
persistentvolumeclaim/my-cos-pvc created -
Liste seus PVCs e verifique se o
my-cos-pvcestá no estadoBound.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 -
Navegue em sua instância Object Storage no console e clique na aba Buckets.
-
Revise os detalhes do balde criado automaticamente. O nome do balde está no formato
tmp-s3fs-XXXX. -
Clique no balde
tmp-s3fs-XXXX, em seguida, clique na aba Configuração. -
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
-
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 -
Navegue em sua instância Object Storage no console e clique na aba Buckets.
-
Clique no balde
tmp-s3fs-XXXX, em seguida, clique em Upload. -
Faça o upload do arquivo
pod.yamlque você salvou anteriormente.
Criando um app que monta o balde
- 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 PVCmy-cos-pvce imprime o conteúdo do arquivopod.yamlque 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 - Crie o pod em seu cluster.
Exemplo de saídaoc apply -f pod.yamlpod/cat-test-file created - Obtem os logs do pod
cat-test-file. Neste exemplo, os logs contêm o conteúdo impresso do arquivopod.yamlque 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
- Configure o Object Storage CLI para apontar para o seu balde.
- Use os SDKs Object Storage para adicionar armazenamento aos seus apps.