Serviço Red Hat OpenShift na AWS com NetApp ONTAP
Visão geral
Nesta seção, mostraremos como utilizar o FSx para ONTAP como uma camada de armazenamento persistente para aplicativos em execução no ROSA. Ele mostrará a instalação do driver NetApp Trident CSI em um cluster ROSA, o provisionamento de um FSx para o sistema de arquivos ONTAP e a implantação de um aplicativo com estado de exemplo. Ele também mostrará estratégias para fazer backup e restaurar os dados do seu aplicativo. Com esta solução integrada, você pode estabelecer uma estrutura de armazenamento compartilhado que pode ser facilmente dimensionada entre AZs, simplificando os processos de dimensionamento, proteção e restauração de seus dados usando o driver Trident CSI.
Pré-requisitos
-
Usuário IAM"com permissões apropriadas" para criar e acessar o cluster ROSA
-
Leme 3"documentação"
Este diagrama mostra o cluster ROSA implantado em várias AZs. Os nós mestres e os nós de infraestrutura do cluster ROSA estão na VPC da Red Hat, enquanto os nós de trabalho estão em uma VPC na conta do cliente. Criaremos um FSx para o sistema de arquivos ONTAP dentro da mesma VPC e instalaremos o driver Trident no cluster ROSA, permitindo que todas as sub-redes dessa VPC se conectem ao sistema de arquivos.
Configuração inicial
1. Provisão FSx para NetApp ONTAP
Crie um FSx multi-AZ para o NetApp ONTAP na mesma VPC que o cluster ROSA. Há várias maneiras de fazer isso. Os detalhes da criação do FSxN usando uma pilha CloudFormation são fornecidos
a.Clone o repositório GitHub
$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
b.Execute o CloudFormation Stack Execute o comando abaixo substituindo os valores dos parâmetros pelos seus próprios valores:
$ cd rosa-fsx-netapp-ontap/fsx
$ aws cloudformation create-stack \
--stack-name ROSA-FSXONTAP \
--template-body file://./FSxONTAP.yaml \
--region <region-name> \
--parameters \
ParameterKey=Subnet1ID,ParameterValue=[subnet1_ID] \
ParameterKey=Subnet2ID,ParameterValue=[subnet2_ID] \
ParameterKey=myVpc,ParameterValue=[VPC_ID] \
ParameterKey=FSxONTAPRouteTable,ParameterValue=[routetable1_ID,routetable2_ID] \
ParameterKey=FileSystemName,ParameterValue=ROSA-myFSxONTAP \
ParameterKey=ThroughputCapacity,ParameterValue=1024 \
ParameterKey=FSxAllowedCIDR,ParameterValue=[your_allowed_CIDR] \
ParameterKey=FsxAdminPassword,ParameterValue=[Define Admin password] \
ParameterKey=SvmAdminPassword,ParameterValue=[Define SVM password] \
--capabilities CAPABILITY_NAMED_IAM
Onde: region-name: o mesmo que a região onde o cluster ROSA está implantado subnet1_ID: id da sub-rede preferencial para FSxN subnet2_ID: id da sub-rede em espera para FSxN VPC_ID: id da VPC onde o cluster ROSA está implantado routetable1_ID, routetable2_ID: ids das tabelas de rota associadas às sub-redes escolhidas acima your_allowed_CIDR: intervalo CIDR permitido para o FSx para grupos de segurança ONTAP regras de entrada para controlar o acesso. Você pode usar 0.0.0.0/0 ou qualquer CIDR apropriado para permitir que todo o tráfego acesse as portas específicas do FSx para ONTAP. Definir senha do administrador: uma senha para fazer login no FSxN Definir senha do SVM: uma senha para fazer login no SVM que será criado.
Verifique se seu sistema de arquivos e máquina virtual de armazenamento (SVM) foram criados usando o console do Amazon FSx , mostrado abaixo:
2.Instale e configure o driver Trident CSI para o cluster ROSA
b.Instalar o Trident
Os nós de trabalho do cluster ROSA vêm pré-configurados com ferramentas nfs que permitem usar protocolos NAS para provisionamento e acesso ao armazenamento.
Se você quiser usar iSCSI, precisará preparar os nós de trabalho para iSCSI. A partir da versão Trident 25.02, você pode preparar facilmente os nós de trabalho do cluster ROSA (ou qualquer cluster OpenShift) para executar operações iSCSI no armazenamento FSxN. Há duas maneiras fáceis de instalar o Trident 25.02 (ou posterior) que automatiza a preparação do nó de trabalho para iSCSI. 1. usando o node-prep-flag na linha de comando usando a ferramenta tridentctl. 2. Usando o operador Trident certificado pela Red Hat do hub do operador e personalizando-o. 3.Usando o Helm.
|
Usar qualquer um dos métodos acima sem habilitar o node-prep permitirá que você use apenas protocolos NAS para provisionar armazenamento no FSxN. |
Método 1: Use a ferramenta tridentctl
Use o sinalizador node-prep e instale o Trident conforme mostrado. Antes de emitir o comando de instalação, você deve ter baixado o pacote do instalador. Consulte "a documentação aqui" .
#./tridentctl install trident -n trident --node-prep=iscsi
Método 2: usar o operador Red Hat Certified Trident e personalizar No OperatorHub, localize o operador Red Hat Certified Trident e instale-o.
Em seguida, crie a instância do Trident Orchestrator. Use a visualização YAML para definir quaisquer valores personalizados ou habilitar a preparação do nó iscsi durante a instalação.
A instalação do Trident usando qualquer um dos métodos acima preparará os nós de trabalho do cluster ROSA para iSCSI iniciando os serviços iscsid e multipathd e definindo o seguinte no arquivo /etc/multipath.conf
c.Verifique se todos os pods Trident estão em execução
3. Configurar o backend Trident CSI para usar FSx para ONTAP (ONTAP NAS)
A configuração de back-end do Trident informa ao Trident como se comunicar com o sistema de armazenamento (neste caso, FSx para ONTAP). Para criar o backend, forneceremos as credenciais da máquina virtual de armazenamento para conexão, juntamente com o gerenciamento de cluster e as interfaces de dados NFS. Nós usaremos o"driver ontap-nas" para provisionar volumes de armazenamento no sistema de arquivos FSx.
um. Primeiro, crie um segredo para as credenciais do SVM usando o seguinte yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-fsx-ontap-nas-secret
namespace: trident
type: Opaque
stringData:
username: vsadmin
password: <value provided for Define SVM password as a parameter to the Cloud Formation Stack>
|
Você também pode recuperar a senha do SVM criada para o FSxN no AWS Secrets Manager, conforme mostrado abaixo. |
b. Em seguida, adicione o segredo para as credenciais do SVM ao cluster ROSA usando o seguinte comando
$ oc apply -f svm_secret.yaml
Você pode verificar se o segredo foi adicionado no namespace trident usando o seguinte comando
$ oc get secrets -n trident |grep backend-fsx-ontap-nas-secret
c. Em seguida, crie o objeto de backend Para isso, vá para o diretório fsx do seu repositório Git clonado. Abra o arquivo backend-ontap-nas.yaml. Substitua o seguinte: managementLIF pelo nome DNS de gerenciamento, dataLIF pelo nome DNS NFS do Amazon FSx SVM e svm pelo nome do SVM. Crie o objeto de backend usando o seguinte comando.
Crie o objeto de backend usando o seguinte comando.
$ oc apply -f backend-ontap-nas.yaml
|
Você pode obter o nome DNS de gerenciamento, o nome DNS NFS e o nome SVM no console Amazon FSx, conforme mostrado na captura de tela abaixo |
d. Agora, execute o seguinte comando para verificar se o objeto de backend foi criado e se a Fase está mostrando Bound e o Status é Success
4. Criar classe de armazenamento Agora que o backend do Trident está configurado, você pode criar uma classe de armazenamento do Kubernetes para usar o backend. A classe de armazenamento é um objeto de recurso disponibilizado ao cluster. Ele descreve e classifica o tipo de armazenamento que você pode solicitar para um aplicativo.
um. Revise o arquivo storage-class-csi-nas.yaml na pasta fsx.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
fsType: "ext4"
allowVolumeExpansion: True
reclaimPolicy: Retain
b. Crie uma classe de armazenamento no cluster ROSA e verifique se a classe de armazenamento trident-csi foi criada.
Isso conclui a instalação do driver Trident CSI e sua conectividade com o FSx para o sistema de arquivos ONTAP . Agora você pode implantar um aplicativo Postgresql com estado de exemplo no ROSA usando volumes de arquivo no FSx para ONTAP.
c. Verifique se não há PVCs e PVs criados usando a classe de armazenamento trident-csi.
d. Verifique se os aplicativos podem criar PV usando o Trident CSI.
Crie um PVC usando o arquivo pvc-trident.yaml fornecido na pasta fsx.
pvc-trident.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: basic
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: trident-csi
You can issue the following commands to create a pvc and verify that it has been created. image:redhat-openshift-container-rosa-011.png["criar PVC de teste usando Trident"]
|
Para usar o iSCSI, você deve ter habilitado o iSCSI nos nós de trabalho, conforme mostrado anteriormente, e precisa criar um backend iSCSI e uma classe de armazenamento. Aqui estão alguns arquivos yaml de exemplo. |
cat tbc.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-san-secret
type: Opaque
stringData:
username: fsxadmin
password: <password for the fsxN filesystem>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <management lif of fsxN filesystem>
backendName: backend-tbc-ontap-san
svm: svm_FSxNForROSAiSCSI
credentials:
name: backend-tbc-ontap-san-secret
cat sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
allowVolumeExpansion: true
5. Implantar um aplicativo Postgresql com estado de exemplo
um. Use o helm para instalar o postgresql
$ helm install postgresql bitnami/postgresql -n postgresql --create-namespace
b. Verifique se o pod do aplicativo está em execução e se um PVC e um PV foram criados para o aplicativo.
c. Implantar um cliente Postgresql
Use o seguinte comando para obter a senha do servidor postgresql que foi instalado.
$ export POSTGRES_PASSWORD=$(kubectl get secret --namespace postgresql postgresql -o jsoata.postgres-password}" | base64 -d)
Use o seguinte comando para executar um cliente postgresql e conectar-se ao servidor usando a senha
$ kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace postgresql --image docker.io/bitnami/postgresql:16.2.0-debian-11-r1 --env="PGPASSWORD=$POSTGRES_PASSWORD" \
> --command -- psql --host postgresql -U postgres -d postgres -p 5432
d. Crie um banco de dados e uma tabela. Crie um esquema para a tabela e insira 2 linhas de dados na tabela.