Configurar um back-end do CVS para GCP
Saiba como configurar o NetApp Cloud Volumes Service (CVS) para o Google Cloud Platform (GCP) como back-end para a instalação do Astra Trident usando as configurações de exemplo fornecidas.
O NetApp Cloud Volumes Service não é compatível com volumes CVS-performance com tamanho inferior a 100 GiB ou volumes CVS com tamanho inferior a 300 GiB. O Astra Trident cria automaticamente volumes do tamanho mínimo se a o volume solicitado for menor que o tamanho mínimo. |
Para configurar e usar o "Cloud Volumes Service para Google Cloud" back-end, você precisa do seguinte:
-
Uma conta do Google Cloud configurada com o NetApp CVS
-
Número do projeto da sua conta do Google Cloud
-
Conta de serviço do Google Cloud com a
netappcloudvolumes.admin
função -
Arquivo de chave de API para sua conta de serviço CVS
O Astra Trident agora inclui suporte a volumes menores com o padrão "Tipo de serviço CVS no GCP". Para backends criados com `storageClass=software`o , os volumes agora terão um tamanho mínimo de provisionamento de 300 GiB. O CVS atualmente fornece esse recurso sob disponibilidade controlada e não fornece suporte técnico. Os usuários devem se inscrever para acesso a volumes menores de 1TiB "aqui" TB . A NetApp recomenda que os clientes consumam volumes inferiores a 1TiB TB para cargas de trabalho que não sejam de produção.
Ao implantar backends usando o tipo de serviço CVS padrão (storageClass=software ), os usuários devem obter acesso ao recurso volumes sub-1TiB no GCP para o(s) número(s) de Projeto e ID(s) de Projeto em questão. Isso é necessário para que o Astra Trident provisione volumes inferiores a 1TiB TB. Caso contrário, as criações de volume falharão para PVCs menores que 600 GiB. Obter acesso a volumes inferiores a 1TiB com "este formulário"o .
|
Os volumes criados pelo Astra Trident para o nível de serviço CVS padrão serão provisionados da seguinte forma:
-
PVCs menores que 300 GiB resultarão em Astra Trident criando um volume CVS de 300 GiB.
-
Os PVCs que estão entre 300 GiB e 600 GiB resultarão na criação do Astra Trident de um volume CVS do tamanho solicitado.
-
Os PVCs que estão entre 600 GiB e 1 TIB resultarão na criação de um volume CVS de 1TiB TB do Astra Trident.
-
PVCs maiores que 1 TIB resultarão na criação do Astra Trident de um volume CVS do tamanho solicitado.
Opções de configuração de back-end
Consulte a tabela a seguir para obter as opções de configuração de back-end:
Parâmetro | Descrição | Padrão |
---|---|---|
|
Sempre 1 |
|
|
Nome do controlador de armazenamento |
"gcp-cvs" |
|
Nome personalizado ou back-end de storage |
Nome do driver e parte da chave da API |
|
Tipo de armazenamento. Escolha entre |
|
|
Número do projeto da conta Google Cloud. O valor é encontrado na página inicial do portal do Google Cloud. |
|
|
Região da conta CVS. É a região onde o backend provisionará os volumes. |
|
|
Chave de API para a conta de serviço do Google Cloud com a |
|
|
URL do proxy se o servidor proxy for necessário para se conetar à conta CVS. O servidor proxy pode ser um proxy HTTP ou um proxy HTTPS. Para um proxy HTTPS, a validação do certificado é ignorada para permitir o uso de certificados autoassinados no servidor proxy. Os servidores proxy com autenticação ativada não são suportados. |
|
|
Controle refinado das opções de montagem NFS. |
"3" |
|
Falha no provisionamento se o tamanho do volume solicitado estiver acima desse valor |
"" (não aplicado por padrão) |
|
O nível de serviço CVS para novos volumes. Os valores são "padrão", "premium" e "extremo". |
"standard" (padrão) |
|
Rede GCP usada para volumes CVS |
"padrão" |
|
Debug flags para usar ao solucionar problemas. Exemplo, |
nulo |
Se estiver usando uma rede VPC compartilhada, ambos projectNumber
e hostProjectNumber
devem ser especificados. Nesse caso, projectNumber
é o projeto de serviço, e hostProjectNumber
é o projeto host.
O apiRegion
representa a região do GCP em que o Astra Trident cria volumes CVS. Ao criar clusters de Kubernetes entre regiões, os volumes CVS criados em um apiRegion
podem ser usados em workloads programados em nós em várias regiões do GCP. Esteja ciente de que o tráfego entre regiões incorre em um custo adicional.
|
A integração do Astra Trident com o tipo de serviço CVS básico no Google Cloud é um recurso beta, não destinado a cargas de trabalho de produção. O Trident é totalmente suportado com o tipo de serviço CVS-Performance e o usa por padrão. |
Cada back-end provisiona volumes em uma única região do Google Cloud. Para criar volumes em outras regiões, você pode definir backends adicionais.
Você pode controlar como cada volume é provisionado por padrão, especificando as seguintes opções em uma seção especial do arquivo de configuração. Veja os exemplos de configuração abaixo.
Parâmetro | Descrição | Padrão |
---|---|---|
|
As regras de exportação para novos volumes |
"0,0.0,0/0" |
|
Acesso ao |
"falso" |
|
Porcentagem de volume reservado para snapshots |
"" (aceitar o padrão CVS de 0) |
|
O tamanho dos novos volumes |
"100Gi" |
O exportRule
valor deve ser uma lista separada por vírgulas de qualquer combinação de endereços IPv4 ou sub-redes IPv4 na notação CIDR.
Para todos os volumes criados em um back-end do Google Cloud do CVS, o Trident copia todas as etiquetas presentes em um pool de storage para o volume de storage no momento em que ele é provisionado. Os administradores de storage podem definir rótulos por pool de storage e agrupar todos os volumes criados em um pool de storage. Isso fornece uma maneira conveniente de diferenciar volumes com base em um conjunto de rótulos personalizáveis que são fornecidos na configuração de back-end. |
Exemplo 1: Configuração mínima
Esta é a configuração mínima absoluta de back-end.
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" } }
Exemplo 2: Configuração do tipo de serviço CVS básico
Este exemplo mostra uma definição de back-end que usa o tipo de serviço CVS básico, destinado a cargas de trabalho de uso geral e fornece desempenho leve/moderado, juntamente com alta disponibilidade por zona.
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "storageClass": "software", "apiRegion": "us-east4", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" } }
Exemplo 3: Configuração de nível de serviço único
Este exemplo mostra um arquivo de back-end que aplica os mesmos aspectos a todo o storage criado pelo Astra Trident na região Google Cloud US-west2. Este exemplo também mostra o uso do proxyURL
no arquivo de configuração de back-end.
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" }, "proxyURL": "http://proxy-server-hostname/", "nfsMountOptions": "vers=3,proto=tcp,timeo=600", "limitVolumeSize": "10Ti", "serviceLevel": "premium", "defaults": { "snapshotDir": "true", "snapshotReserve": "5", "exportRule": "10.0.0.0/24,10.0.1.0/24,10.0.2.100", "size": "5Ti" } }
Exemplo 4: Configuração do pool de armazenamento virtual
Este exemplo mostra o arquivo de definição de back-end configurado com pools de armazenamento virtual juntamente com StorageClasses
isso se referem a eles.
No arquivo de definição de back-end de exemplo mostrado abaixo, padrões específicos são definidos para todos os pools de armazenamento, que definem o snapshotReserve
em 5% e o exportRule
para 0,0.0,0/0. Os pools de armazenamento virtual são definidos na storage
seção. Neste exemplo, cada pool de armazenamento individual define seu próprio serviceLevel
, e alguns pools substituem os valores padrão.
{ "version": 1, "storageDriverName": "gcp-cvs", "projectNumber": "012345678901", "apiRegion": "us-west2", "apiKey": { "type": "service_account", "project_id": "my-gcp-project", "private_key_id": "<id_value>", "private_key": " -----BEGIN PRIVATE KEY----- <key_value> -----END PRIVATE KEY-----\n", "client_email": "cloudvolumes-admin-sa@my-gcp-project.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cloudvolumes-admin-sa%40my-gcp-project.iam.gserviceaccount.com" }, "nfsMountOptions": "vers=3,proto=tcp,timeo=600", "defaults": { "snapshotReserve": "5", "exportRule": "0.0.0.0/0" }, "labels": { "cloud": "gcp" }, "region": "us-west2", "storage": [ { "labels": { "performance": "extreme", "protection": "extra" }, "serviceLevel": "extreme", "defaults": { "snapshotDir": "true", "snapshotReserve": "10", "exportRule": "10.0.0.0/24" } }, { "labels": { "performance": "extreme", "protection": "standard" }, "serviceLevel": "extreme" }, { "labels": { "performance": "premium", "protection": "extra" }, "serviceLevel": "premium", "defaults": { "snapshotDir": "true", "snapshotReserve": "10" } }, { "labels": { "performance": "premium", "protection": "standard" }, "serviceLevel": "premium" }, { "labels": { "performance": "standard" }, "serviceLevel": "standard" } ] }
As seguintes definições do StorageClass referem-se aos pools de armazenamento acima. Usando o parameters.selector
campo, você pode especificar para cada StorageClass o pool virtual usado para hospedar um volume. O volume terá os aspetos definidos no pool escolhido.
O primeiro StorageClass ) (`cvs-extreme-extra-protection`mapeia para o primeiro pool de armazenamento virtual. Esse é o único pool que oferece desempenho extremo com uma reserva de snapshot de 10%. O último StorageClass ) (`cvs-extra-protection`chama qualquer pool de armazenamento que forneça uma reserva de snapshot de 10%. O Astra Trident decide qual pool de storage virtual está selecionado e garante que o requisito de reserva de snapshot seja atendido.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extreme-extra-protection provisioner: netapp.io/trident parameters: selector: "performance=extreme; protection=extra" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extreme-standard-protection provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-premium-extra-protection provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=extra" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-premium provisioner: netapp.io/trident parameters: selector: "performance=premium; protection=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-standard provisioner: netapp.io/trident parameters: selector: "performance=standard" allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cvs-extra-protection provisioner: netapp.io/trident parameters: selector: "protection=extra" allowVolumeExpansion: true
O que se segue?
Depois de criar o arquivo de configuração de back-end, execute o seguinte comando:
tridentctl create backend -f <backend-file>
Se a criação do backend falhar, algo está errado com a configuração do backend. Você pode exibir os logs para determinar a causa executando o seguinte comando:
tridentctl logs
Depois de identificar e corrigir o problema com o arquivo de configuração, você pode executar o comando create novamente.