Exemplos e opções de configuração de back-end do Google Cloud NetApp volumes
Saiba mais sobre as opções de configuração de back-end para o Google Cloud NetApp volumes e revise exemplos de configuração.
Opções de configuração de back-end
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.
Parâmetro | Descrição | Padrão |
---|---|---|
|
Sempre 1 |
|
|
Nome do controlador de armazenamento |
O valor de |
|
(Opcional) Nome personalizado do back-end de armazenamento |
Nome do driver e parte da chave da API |
|
Parâmetro opcional usado para especificar pools de armazenamento para criação de volume. |
|
|
Número do projeto da conta Google Cloud. O valor é encontrado na página inicial do portal do Google Cloud. |
|
|
O Trident cria volumes de GCNV. Ao criar clusters de Kubernetes entre regiões, os volumes criados em a |
|
|
Chave de API para a conta de serviço do Google Cloud com a |
|
|
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 de um pool de storage e seus volumes. Os valores são |
|
|
Rede do Google Cloud usada para volumes GCNV. |
|
|
Debug flags para usar ao solucionar problemas. Exemplo, |
nulo |
|
Configurar a criação de volumes NFS ou SMB. As opções são |
|
|
Representa uma lista de regiões e zonas que são suportadas por este backend. Para obter mais informações, "Use a topologia CSI"consulte . Por exemplo: |
Opções de provisionamento de volume
Você pode controlar o provisionamento de volume padrão defaults
na seção do arquivo de configuração.
Parâmetro | Descrição | Padrão |
---|---|---|
|
As regras de exportação para novos volumes. Deve ser uma lista separada por vírgulas de qualquer combinação de endereços IPv4. |
"0,0.0,0/0" |
|
Acesso ao |
"Verdadeiro" para NFSv4 "falso" para NFSv3 |
|
Porcentagem de volume reservado para snapshots |
"" (aceitar predefinição de 0) |
|
As permissões unix de novos volumes (4 dígitos octal). |
"" |
Exemplos de configurações
Os exemplos a seguir mostram configurações básicas que deixam a maioria dos parâmetros padrão. Esta é a maneira mais fácil de definir um backend.
Configuração mínima
Esta é a configuração mínima absoluta de back-end. Com essa configuração, o Trident descobre todos os pools de armazenamento delegados ao Google Cloud NetApp volumes no local configurado e coloca novos volumes aleatoriamente em um desses pools. Como nasType
é omitido, o nfs
padrão se aplica e o back-end provisionará para volumes NFS.
Essa configuração é ideal quando você está apenas começando a usar o Google Cloud NetApp volumes e experimentando tudo. No entanto, na prática, é provável que você precise fornecer um escopo adicional para os volumes provisionados.
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----\n
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m\n
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m\n
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m\n
XsYg6gyxy4zq7OlwWgLwGa==\n
-----END PRIVATE KEY-----\n
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
serviceLevel: premium
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
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/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuração para volumes SMB
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv1
namespace: trident
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123456789"
location: asia-east1
serviceLevel: flex
nasType: smb
apiKey:
type: service_account
project_id: cloud-native-data
client_email: trident-sample@cloud-native-data.iam.gserviceaccount.com
client_id: "123456789737813416734"
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/trident-sample%40cloud-native-data.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuração com filtro StoragePools
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
XsYg6gyxy4zq7OlwWgLwGa==
-----END PRIVATE KEY-----
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
serviceLevel: premium
storagePools:
- premium-pool1-europe-west6
- premium-pool2-europe-west6
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
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/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuração do pool virtual
Essa configuração de back-end define vários pools virtuais em um único arquivo. Os pools virtuais são definidos na storage
seção. Elas são úteis quando você tem vários pools de storage com suporte a diferentes níveis de serviço e deseja criar classes de storage no Kubernetes que os representem. Rótulos de pool virtual são usados para diferenciar os pools. Por exemplo, no exemplo abaixo performance
label e serviceLevel
type é usado para diferenciar pools virtuais.
Você também pode definir alguns valores padrão para serem aplicáveis a todos os pools virtuais e substituir os valores padrão para pools virtuais individuais. No exemplo a seguir, snapshotReserve
e exportRule
serve como padrão para todos os pools virtuais.
Para obter mais informações, "Pools virtuais"consulte .
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
XsYg6gyxy4zq7OlwWgLwGa==
-----END PRIVATE KEY-----
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
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/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
defaults:
snapshotReserve: "10"
exportRule: 10.0.0.0/24
storage:
- labels:
performance: extreme
serviceLevel: extreme
defaults:
snapshotReserve: "5"
exportRule: 0.0.0.0/0
- labels:
performance: premium
serviceLevel: premium
- labels:
performance: standard
serviceLevel: standard
Identidade de nuvem para GKE
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcp-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: '012345678901'
network: gcnv-network
location: us-west2
serviceLevel: Premium
storagePool: pool-premium1
Configuração de topologias compatíveis
O Trident facilita o provisionamento de volumes para workloads com base em regiões e zonas de disponibilidade. O supportedTopologies
bloco nesta configuração de back-end é usado para fornecer uma lista de regiões e zonas por back-end. Os valores de região e zona especificados aqui devem corresponder aos valores de região e zona dos rótulos em cada nó de cluster do Kubernetes. Essas regiões e zonas representam a lista de valores permitidos que podem ser fornecidos em uma classe de armazenamento. Para classes de armazenamento que contêm um subconjunto das regiões e zonas fornecidas em um back-end, o Trident cria volumes na região e na zona mencionadas. Para obter mais informações, "Use a topologia CSI"consulte .
---
version: 1
storageDriverName: google-cloud-netapp-volumes
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: asia-east1
serviceLevel: flex
supportedTopologies:
- topology.kubernetes.io/region: asia-east1
topology.kubernetes.io/zone: asia-east1-a
- topology.kubernetes.io/region: asia-east1
topology.kubernetes.io/zone: asia-east1-b
O que se segue?
Depois de criar o arquivo de configuração de back-end, execute o seguinte comando:
kubectl create -f <backend-file>
Para verificar se o back-end foi criado com sucesso, execute o seguinte comando:
kubectl get tridentbackendconfig NAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-gcnv backend-tbc-gcnv b2fd1ff9-b234-477e-88fd-713913294f65 Bound Success
Se a criação do backend falhar, algo está errado com a configuração do backend. Você pode descrever o back-end usando o kubectl get tridentbackendconfig <backend-name>
comando ou visualizar 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 excluir o backend e executar o comando create novamente.
Definições de classe de armazenamento
A seguir está uma definição básica StorageClass
que se refere ao backend acima.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-nfs-sc
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
-
Exemplo de definições usando o
parameter.selector
campo:*
Usando parameter.selector
você pode especificar para cada StorageClass
um "pool virtual" que é usado para hospedar um volume. O volume terá os aspetos definidos no pool escolhido.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: extreme-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=extreme
backendType: google-cloud-netapp-volumes
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: premium-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=premium
backendType: google-cloud-netapp-volumes
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=standard
backendType: google-cloud-netapp-volumes
Para obter mais detalhes sobre classes de armazenamento, "Crie uma classe de armazenamento"consulte .
Definições de exemplo para volumes SMB
Usando nasType
, node-stage-secret-name
e node-stage-secret-namespace
, você pode especificar um volume SMB e fornecer as credenciais necessárias do ative Directory. Qualquer usuário/senha do ative Directory com nenhuma ou nenhuma permissão pode ser usada para o segredo da etapa do nó.
Configuração básica no namespace padrão
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
csi.storage.k8s.io/node-stage-secret-namespace: "default"
Usando diferentes segredos por namespace
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
Usando diferentes segredos por volume
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: ${pvc.name}
csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
|
nasType: smb Filtros para pools compatíveis com volumes SMB. nasType: nfs Ou nasType: null filtros para NFS Pools.
|
Exemplo de definição de PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: gcnv-nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: gcnv-nfs-sc
Para verificar se o PVC está vinculado, execute o seguinte comando:
kubectl get pvc gcnv-nfs-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE gcnv-nfs-pvc Bound pvc-b00f2414-e229-40e6-9b16-ee03eb79a213 100Gi RWX gcnv-nfs-sc 1m