Prepare-se para configurar um backend com drivers ONTAP NAS
Compreenda os requisitos, as opções de autenticação e as políticas de exportação para configurar um backend ONTAP com drivers ONTAP NAS.
A partir da versão 25.10, NetApp Trident oferece suporte "NetApp AFX sistema de storage". NetApp AFX storage systems diferem de outros sistemas ONTAP (ASA, AFF e FAS) na implementação de sua camada de storage.
|
|
Apenas o `ontap-nas`driver (com o protocolo NFS) é compatível com sistemas AFX; o protocolo SMB não é compatível. |
Na configuração do backend do Trident, não é necessário especificar que seu sistema é AFX. Ao selecionar ontap-nas como o storageDriverName, o Trident detecta automaticamente os sistemas AFX.
Requisitos
-
Para todos os backends ONTAP, Trident exige que pelo menos um agregado seja atribuído à SVM.
-
Você pode executar mais de um driver e criar classes de armazenamento que apontem para um ou outro. Por exemplo, você pode configurar uma classe Gold que usa o driver
ontap-nase uma classe Bronze que usa oontap-nas-economy. -
Todos os seus nós de trabalho do Kubernetes devem ter as ferramentas NFS apropriadas instaladas. Consulte "aqui" para mais detalhes.
-
Trident suporta volumes SMB montados em pods executados apenas em nós Windows. Consulte Prepare-se para provisionar volumes SMB para obter detalhes.
Autenticar o backend ONTAP
Trident oferece dois modos de autenticação de um backend ONTAP.
-
Baseado em credenciais: Este modo requer permissões suficientes no backend do ONTAP. Recomenda-se usar uma conta associada a uma função de login de segurança predefinida, como
adminouvsadminpara garantir a máxima compatibilidade com as versões do ONTAP. -
Baseado em certificado: Este modo requer um certificado instalado no backend para o Trident se comunicar com um cluster ONTAP. Aqui, a definição do backend deve conter os valores codificados em Base64 do certificado do cliente, da chave e do certificado da CA confiável, se utilizado (recomendado).
Você pode atualizar os backends existentes para alternar entre métodos baseados em credenciais e baseados em certificados. No entanto, apenas um método de autenticação é suportado por vez. Para mudar para um método de autenticação diferente, você deve remover o método existente da configuração do backend.
|
|
Se você tentar fornecer tanto credenciais quanto certificados, a criação do backend falhará com um erro informando que mais de um método de autenticação foi fornecido no arquivo de configuração. |
Ativar autenticação baseada em credenciais
Trident requer as credenciais de um administrador com escopo de SVM/cluster para se comunicar com o backend do ONTAP. Recomenda-se o uso de funções padrão predefinidas, como admin ou vsadmin. Isso garante a compatibilidade futura com versões do ONTAP que possam expor APIs de recursos a serem usadas por versões futuras do Trident. Uma função de login de segurança personalizada pode ser criada e usada com Trident, mas não é recomendada.
Uma definição de backend de exemplo será semelhante a esta:
---
version: 1
backendName: ExampleBackend
storageDriverName: ontap-nas
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: svm_nfs
credentials:
name: secret-backend-creds
{
"version": 1,
"backendName": "ExampleBackend",
"storageDriverName": "ontap-nas",
"managementLIF": "10.0.0.1",
"dataLIF": "10.0.0.2",
"svm": "svm_nfs",
"credentials": {
"name": "secret-backend-creds"
}
}
Lembre-se de que a definição do backend é o único local onde as credenciais são armazenadas em texto simples. Após a criação do backend, os nomes de usuário/senhas são codificados em Base64 e armazenados como segredos do Kubernetes. A criação/atualização de um backend é a única etapa que requer conhecimento das credenciais. Assim, é uma operação exclusiva do administrador, a ser realizada pelo administrador de storage do Kubernetes.
Habilitar autenticação baseada em certificado
Novos e existentes backends podem usar um certificado e se comunicar com o backend do ONTAP. Três parâmetros são necessários na definição do backend.
-
clientCertificate: Valor codificado em Base64 do certificado do cliente.
-
clientPrivateKey: Valor codificado em Base64 da chave privada associada.
-
trustedCACertificate: valor codificado em Base64 do certificado CA confiável. Se uma CA confiável estiver sendo usada, este parâmetro deve ser fornecido. Isso pode ser ignorado se nenhuma CA confiável for usada.
Um fluxo de trabalho típico envolve as seguintes etapas.
-
Gere um certificado de cliente e uma chave. Ao gerar, defina o Nome Comum (CN) para o usuário ONTAP que será usado para autenticação.
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout k8senv.key -out k8senv.pem -subj "/C=US/ST=NC/L=RTP/O=NetApp/CN=vsadmin"
-
Adicione um certificado de CA confiável ao cluster ONTAP. Isso pode já ter sido configurado pelo administrador de storage. Ignore se nenhuma CA confiável for utilizada.
security certificate install -type server -cert-name <trusted-ca-cert-name> -vserver <vserver-name> ssl modify -vserver <vserver-name> -server-enabled true -client-enabled true -common-name <common-name> -serial <SN-from-trusted-CA-cert> -ca <cert-authority>
-
Instale o certificado do cliente e a chave (do passo 1) no cluster ONTAP.
security certificate install -type client-ca -cert-name <certificate-name> -vserver <vserver-name> security ssl modify -vserver <vserver-name> -client-enabled true
-
Confirme se a função de login de segurança do ONTAP suporta
certmétodo de autenticação.security login create -user-or-group-name vsadmin -application ontapi -authentication-method cert -vserver <vserver-name> security login create -user-or-group-name vsadmin -application http -authentication-method cert -vserver <vserver-name>
-
Teste autenticação usando certificado gerado. Substitua <ONTAP Management LIF> e <vserver name> pelo endereço IP do Management LIF e o nome do SVM. Você deve garantir que o LIF tenha sua política de serviço definida como
default-data-management.curl -X POST -Lk https://<ONTAP-Management-LIF>/servlets/netapp.servlets.admin.XMLrequest_filer --key k8senv.key --cert ~/k8senv.pem -d '<?xml version="1.0" encoding="UTF-8"?><netapp xmlns="http://www.netapp.com/filer/admin" version="1.21" vfiler="<vserver-name>"><vserver-get></vserver-get></netapp>'
-
Codifique o certificado, a chave e o certificado da CA confiável com Base64.
base64 -w 0 k8senv.pem >> cert_base64 base64 -w 0 k8senv.key >> key_base64 base64 -w 0 trustedca.pem >> trustedca_base64
-
Crie o backend usando os valores obtidos na etapa anterior.
cat cert-backend-updated.json { "version": 1, "storageDriverName": "ontap-nas", "backendName": "NasBackend", "managementLIF": "1.2.3.4", "dataLIF": "1.2.3.8", "svm": "vserver_test", "clientCertificate": "Faaaakkkkeeee...Vaaalllluuuueeee", "clientPrivateKey": "LS0tFaKE...0VaLuES0tLS0K", "storagePrefix": "myPrefix_" } #Update backend with tridentctl tridentctl update backend NasBackend -f cert-backend-updated.json -n trident +------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +------------+----------------+--------------------------------------+--------+---------+ | NasBackend | ontap-nas | 98e19b74-aec7-4a3d-8dcf-128e5033b214 | online | 9 | +------------+----------------+--------------------------------------+--------+---------+
Atualize os métodos de autenticação ou altere as credenciais
Você pode atualizar um backend existente para usar um método de autenticação diferente ou para rotacionar suas credenciais. Isso funciona nos dois sentidos: backends que utilizam nome de usuário/senha podem ser atualizados para usar certificados; backends que utilizam certificados podem ser atualizados para usar nome de usuário/senha. Para fazer isso, você deve remover o método de autenticação existente e adicionar o novo método de autenticação. Em seguida, use o arquivo backend.json atualizado contendo os parâmetros necessários para executar tridentctl update backend.
cat cert-backend-updated.json
{
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "NasBackend",
"managementLIF": "1.2.3.4",
"dataLIF": "1.2.3.8",
"svm": "vserver_test",
"username": "vsadmin",
"password": "password",
"storagePrefix": "myPrefix_"
}
#Update backend with tridentctl tridentctl update backend NasBackend -f cert-backend-updated.json -n trident +------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +------------+----------------+--------------------------------------+--------+---------+ | NasBackend | ontap-nas | 98e19b74-aec7-4a3d-8dcf-128e5033b214 | online | 9 | +------------+----------------+--------------------------------------+--------+---------+
|
|
Ao rotacionar senhas, o administrador de storage deve primeiro atualizar a senha do usuário no ONTAP. Em seguida, é feita uma atualização no backend. Ao rotacionar certificados, vários certificados podem ser adicionados ao usuário. O backend é então atualizado para usar o novo certificado, após o que o certificado antigo pode ser excluído do cluster ONTAP. |
A atualização do backend não interrompe o acesso aos volumes já criados, nem afeta as conexões de volume feitas posteriormente. Uma atualização bem-sucedida do backend indica que Trident pode se comunicar com o ONTAP backend e lidar com operações de volume futuras.
Criar função ONTAP personalizada para Trident
Você pode criar uma função de cluster ONTAP com privilégios mínimos para que não precise usar a função de administrador do ONTAP para executar operações no Trident. Ao incluir o nome de usuário em um arquivo de configuração de backend do Trident, o Trident usa a função de cluster ONTAP que você criou para executar as operações.
Consulte "Gerador de funções personalizadas Trident" para obter mais informações sobre como criar funções personalizadas do Trident.
-
Crie uma nova função usando o seguinte comando:
security login role create <role_name\> -cmddirname "command" -access all –vserver <svm_name\> -
Crie um nome de usuário para o usuário do Trident:
security login create -username <user_name\> -application ontapi -authmethod <password\> -role <name_of_role_in_step_1\> –vserver <svm_name\> -comment "user_description" -
Mapeie a função para o usuário:
security login modify username <user_name\> –vserver <svm_name\> -role <role_name\> -application ontapi -application console -authmethod <password\>
Execute as seguintes etapas no ONTAP System Manager:
-
Crie uma função personalizada:
-
Para criar uma função personalizada no nível do cluster, selecione Cluster > Settings.
(Ou) Para criar uma função personalizada no nível da SVM, selecione Storage > Storage VMs >
required SVM> Settings > Users and Roles. -
Selecione o ícone de seta (→) ao lado de Users and Roles.
-
Selecione +Adicionar em Roles.
-
Defina as regras para a função e clique em Save.
-
-
Mapeie a função ao usuário Trident: + Execute as seguintes etapas na página Usuários e Funções:
-
Selecione o ícone Adicionar + em Usuários.
-
Selecione o nome de usuário desejado e selecione uma função no menu suspenso para Função.
-
Clique em Salvar.
-
Consulte as seguintes páginas para obter mais informações:
Gerenciar políticas de exportação NFS
Trident usa políticas de exportação NFS para controlar o acesso aos volumes que provisiona.
Trident oferece duas opções ao trabalhar com políticas de exportação:
-
Trident pode gerenciar dinamicamente a própria política de exportação; nesse modo de operação, o administrador de storage especifica uma lista de blocos CIDR que representam endereços IP admissíveis. Trident adiciona automaticamente os IPs de nó aplicáveis que se enquadram nesses intervalos à política de exportação no momento da publicação. Alternativamente, quando nenhum CIDR é especificado, todos os IPs unicast de escopo global encontrados no nó para o qual o volume está sendo publicado serão adicionados à política de exportação.
-
Os administradores de storage podem criar uma política de exportação e adicionar regras manualmente. Trident usa a política de exportação padrão, a menos que um nome de política de exportação diferente seja especificado na configuração.
Gerencie dinamicamente as políticas de exportação
Trident oferece a capacidade de gerenciar dinamicamente políticas de exportação para backends ONTAP. Isso fornece ao administrador de storage a capacidade de especificar um espaço de endereços permitido para os endereços IP dos nós de trabalho, em vez de definir regras explícitas manualmente. Isso simplifica muito o gerenciamento de políticas de exportação; as modificações na política de exportação não exigem mais intervenção manual no cluster de storage. Além disso, isso ajuda a restringir o acesso ao cluster de storage apenas aos nós de trabalho que estão montando volumes e possuem endereços IP no intervalo especificado, oferecendo um gerenciamento detalhado e automatizado.
|
|
Não utilize Network Address Translation (NAT) ao usar políticas de exportação dinâmicas. Com NAT, o controlador de storage vê o endereço NAT de frontend e não o endereço IP real do host, portanto, o acesso será negado quando nenhuma correspondência for encontrada nas regras de exportação. |
Exemplo
Existem duas opções de configuração que devem ser usadas. Veja um exemplo de definição de backend:
---
version: 1
storageDriverName: ontap-nas-economy
backendName: ontap_nas_auto_export
managementLIF: 192.168.0.135
svm: svm1
username: vsadmin
password: password
autoExportCIDRs:
- 192.168.0.0/24
autoExportPolicy: true
|
|
Ao usar este recurso, você deve garantir que a junção raiz em sua SVM tenha uma política de exportação previamente criada com uma regra de exportação que permita o bloco CIDR do nó (como a política de exportação padrão). Sempre siga a prática recomendada pela NetApp de dedicar uma SVM ao Trident. |
Aqui está uma explicação de como esse recurso funciona usando o exemplo acima:
-
autoExportPolicyestá definido comotrue. Isso indica que Trident cria uma política de exportação para cada volume provisionado com este backend para osvm1SVM e lida com a adição e exclusão de regras usandoautoexportCIDRsblocos de endereços. Até que um volume seja anexado a um nó, o volume usa uma política de exportação vazia, sem regras, para impedir o acesso indesejado a esse volume. Quando um volume é publicado em um nó, Trident cria uma política de exportação com o mesmo nome da qtree subjacente, contendo o endereço IP do nó dentro do bloco CIDR especificado. Esses IPs também serão adicionados à política de exportação usada pelo volume pai FlexVol.-
Por exemplo:
-
UUID do backend 403b5326-8482-40db-96d0-d83fb3f4daec
-
autoExportPolicy`definido para `true -
prefixo de storage
trident -
PVC UUID a79bcf5f-7b6d-4a40-9876-e2551f159c1c
-
qtree denominada trident_pvc_a79bcf5f_7b6d_4a40_9876_e2551f159c1c cria uma política de exportação para a FlexVol denominada
trident-403b5326-8482-40db96d0-d83fb3f4daec, uma política de exportação para a qtree denominada
trident_pvc_a79bcf5f_7b6d_4a40_9876_e2551f159c1c, e uma política de exportação vazia denominadatrident_emptyno SVM. As regras para a política de exportação da FlexVol serão um superconjunto de quaisquer regras contidas nas políticas de exportação da qtree. A política de exportação vazia será reutilizada por quaisquer volumes que não estejam anexados.
-
-
-
autoExportCIDRscontém uma lista de blocos de endereços. Este campo é opcional e ele é definido por padrão como ["0.0.0.0/0", "::/0"]. Se não for definido, Trident adiciona todos os endereços unicast de escopo global encontrados nos nós de trabalho com publicações.
Neste exemplo, o 192.168.0.0/24 espaço de endereços é fornecido. Isso indica que os IPs dos nós do Kubernetes que se enquadram nesse intervalo de endereços com publicações serão adicionados à política de exportação que o Trident cria. Quando o Trident registra um nó no qual está sendo executado, ele recupera os endereços IP do nó e os compara com os blocos de endereços fornecidos em autoExportCIDRs. No momento da publicação, após filtrar os IPs, o Trident cria as regras da política de exportação para os endereços IP dos clientes do nó para o qual está publicando.
Você pode atualizar autoExportPolicy e autoExportCIDRs para backends após criá-los. Você pode adicionar novos CIDRs para um backend que é gerenciado automaticamente ou excluir CIDRs existentes. Tenha cuidado ao excluir CIDRs para garantir que conexões existentes não sejam interrompidas. Você também pode optar por desativar autoExportPolicy para um backend e voltar para uma política de exportação criada manualmente. Isso exigirá a configuração do parâmetro exportPolicy no seu arquivo de configuração do backend.
Após Trident criar ou atualizar um backend, você pode verificar o backend usando tridentctl ou o correspondente tridentbackend CRD:
./tridentctl get backends ontap_nas_auto_export -n trident -o yaml
items:
- backendUUID: 403b5326-8482-40db-96d0-d83fb3f4daec
config:
aggregate: ""
autoExportCIDRs:
- 192.168.0.0/24
autoExportPolicy: true
backendName: ontap_nas_auto_export
chapInitiatorSecret: ""
chapTargetInitiatorSecret: ""
chapTargetUsername: ""
chapUsername: ""
dataLIF: 192.168.0.135
debug: false
debugTraceFlags: null
defaults:
encryption: "false"
exportPolicy: <automatic>
fileSystemType: ext4
Quando um nó é removido, Trident verifica todas as políticas de exportação para remover as regras de acesso correspondentes ao nó. Ao remover esse endereço IP do nó das políticas de exportação dos backends gerenciados, Trident impede montagens não autorizadas, a menos que esse endereço IP seja reutilizado por um novo nó no cluster.
Para backends preexistentes, atualizar o backend com tridentctl update backend garante que Trident gerencie as políticas de exportação automaticamente. Isso cria duas novas políticas de exportação nomeadas de acordo com o UUID do backend e o nome da qtree quando necessário. Volumes presentes no backend usarão as novas políticas de exportação após serem desmontados e montados novamente.
|
|
A exclusão de um backend com políticas de exportação gerenciadas automaticamente excluirá a política de exportação criada dinamicamente. Se o backend for recriado, ele será tratado como um novo backend e resultará na criação de uma nova política de exportação. |
Se o endereço IP de um nó ativo for atualizado, você deve reiniciar o pod do Trident nesse nó. Trident então atualizará a política de exportação dos backends que gerencia para refletir essa alteração de IP.
Prepare-se para provisionar volumes SMB
Com um pouco de preparação adicional, você pode provisionar volumes SMB usando ontap-nas drivers.
|
|
Você deve configurar ambos os protocolos NFS e SMB/CIFS na SVM para criar um ontap-nas-economy volume SMB para clusters ONTAP locais. A falha ao configurar qualquer um desses protocolos fará com que a criação do volume SMB falhe.
|
|
|
autoExportPolicy não é compatível com volumes SMB.
|
Antes de poder provisionar volumes SMB, você deve ter o seguinte.
-
Um cluster Kubernetes com um nó controlador Linux e pelo menos um nó de trabalho Windows executando Windows Server 2022. Trident suporta volumes SMB montados em pods executados apenas em nós Windows.
-
Pelo menos um segredo Trident contendo suas credenciais do Active Directory. Para gerar o segredo
smbcreds:kubectl create secret generic smbcreds --from-literal username=user --from-literal password='password'
-
Um proxy CSI configurado como um serviço do Windows. Para configurar um
csi-proxy, consulte "GitHub: CSI Proxy" ou "GitHub: CSI Proxy para Windows" para nós do Kubernetes em execução no Windows.
-
Para o ONTAP local, você pode opcionalmente criar um compartilhamento SMB ou o Trident pode criar um para você.
Os compartilhamentos SMB são necessários para Amazon FSx for ONTAP. Você pode criar os compartilhamentos administrativos SMB de duas maneiras: usando o "Microsoft Management Console" snap-in Shared Folders ou usando a ONTAP CLI. Para criar os compartilhamentos SMB usando a ONTAP CLI:
-
Se necessário, crie a estrutura de caminho de diretórios para o compartilhamento.
O
vserver cifs share createcomando verifica o caminho especificado na opção -path durante a criação do compartilhamento. Se o caminho especificado não existir, o comando falha. -
Crie um compartilhamento SMB associado à SVM especificada:
vserver cifs share create -vserver vserver_name -share-name share_name -path path [-share-properties share_properties,...] [other_attributes] [-comment text]
-
Verifique se o compartilhamento foi criado:
vserver cifs share show -share-name share_name
Consulte "Criar um compartilhamento SMB" para obter detalhes completos.
-
-
Ao criar o backend, você deve configurar o seguinte para especificar os volumes SMB. Para todas as opções de configuração do backend do FSx para ONTAP, consulte "Opções e exemplos de configuração do FSx for ONTAP".
Parâmetro Descrição Exemplo smbShareVocê pode especificar uma das seguintes opções: o nome de um compartilhamento SMB criado usando o Microsoft Management Console ou ONTAP CLI; um nome para permitir que o Trident crie o compartilhamento SMB; ou você pode deixar o parâmetro em branco para impedir o acesso comum aos volumes. Este parâmetro é opcional para ONTAP on-premises. Este parâmetro é obrigatório para Amazon FSx for ONTAP backends e não pode ficar em branco.
smb-sharenasTypeDeve ser definido como
smb. Se for nulo, o padrão énfs.smbsecurityStyleEstilo de segurança para novos volumes. Deve ser definido como
ntfsoumixedpara volumes SMB.ntfsoumixedfor SMB volumesunixPermissionsModo para novos volumes. Deve ser deixado em branco para volumes SMB.
""
Ativar SMB seguro
A partir da versão 25.06, NetApp Trident oferece suporte ao provisionamento seguro de volumes SMB criados usando ontap-nas e ontap-nas-economy backends. Quando o SMB seguro está habilitado, você pode fornecer acesso controlado aos compartilhamentos SMB para usuários e grupos de usuários do Active Directory (AD) usando listas de controle de acesso (ACLs).
-
A importação de
ontap-nas-economyvolumes não é suportada. -
Apenas clones somente leitura são suportados para
ontap-nas-economyvolumes. -
Se o Secure SMB estiver ativado, Trident ignorará o compartilhamento SMB mencionado no backend.
-
A atualização da anotação PVC, da anotação da storage class e do campo backend não atualiza a ACL de compartilhamento SMB.
-
A ACL de compartilhamento SMB especificada na anotação do PVC clonado terá precedência sobre as do PVC de origem.
-
Certifique-se de fornecer usuários válidos do Active Directory ao habilitar o SMB seguro. Usuários inválidos não serão adicionados à ACL.
-
Se você fornecer o mesmo usuário do AD no backend, na storage class e no PVC com permissões diferentes, a prioridade de permissão será: PVC, storage class e, em seguida, backend.
-
Secure SMB é compatível com `ontap-nas`importações de volumes gerenciados e não se aplica a importações de volumes não gerenciados.
-
Especifique adAdminUser em TridentBackendConfig conforme mostrado no exemplo a seguir:
apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-ontap namespace: trident spec: version: 1 storageDriverName: ontap-nas managementLIF: 10.193.176.x svm: svm0 useREST: true defaults: adAdminUser: tridentADtest credentials: name: backend-tbc-ontap-invest-secret -
Adicione a anotação na storage class.
Adicione a
trident.netapp.io/smbShareAdUseranotação à storage class para habilitar SMB seguro sem falhas. O valor de usuário especificado para a anotaçãotrident.netapp.io/smbShareAdUserdeve ser o mesmo que o nome de usuário especificado nosmbcredssecret. Você pode escolher um dos seguintes parasmbShareAdUserPermission:full_control,changeouread. A permissão padrão éfull_control.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-smb-sc
annotations:
trident.netapp.io/smbShareAdUserPermission: change
trident.netapp.io/smbShareAdUser: tridentADuser
parameters:
backendType: ontap-nas
csi.storage.k8s.io/node-stage-secret-name: smbcreds
csi.storage.k8s.io/node-stage-secret-namespace: trident
trident.netapp.io/nasType: smb
provisioner: csi.trident.netapp.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
-
Crie um PVC.
O exemplo a seguir cria um PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc4
namespace: trident
annotations:
trident.netapp.io/snapshotDirectory: "true"
trident.netapp.io/smbShareAccessControl: |
read:
- tridentADtest
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-smb-sc