Criar um StorageClass dos Ficheiros do Azure no Azure Red Hat OpenShift 4
Neste artigo, você criará um StorageClass para o Red Hat OpenShift 4 do Azure que provisiona dinamicamente o armazenamento ReadWriteMany (RWX) usando o Azure Files. Irá aprender a:
- Configure os pré-requisitos e instale as ferramentas necessárias
- Criar um Azure Red Hat OpenShift 4 StorageClass com o provisionador de arquivos do Azure
Se você optar por instalar e usar a CLI localmente, este tutorial exigirá que você esteja executando a CLI do Azure versão 2.6.0 ou posterior. Executar az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Antes de começar
Implantar um cluster do Azure Red Hat OpenShift 4 em sua assinatura, consulte Criar um cluster do Azure Red Hat OpenShift 4
Configurar a conta de armazenamento do Azure
Esta etapa cria um grupo de recursos fora do grupo de recursos do cluster do Azure Red Hat OpenShift (ARO). Este grupo de recursos contém os compartilhamentos do Azure Files que criaram o provisionador dinâmico do Azure Red Hat OpenShift.
AZURE_FILES_RESOURCE_GROUP=aro_azure_files
LOCATION=eastus
az group create -l $LOCATION -n $AZURE_FILES_RESOURCE_GROUP
AZURE_STORAGE_ACCOUNT_NAME=aroazurefilessa
az storage account create \
--name $AZURE_STORAGE_ACCOUNT_NAME \
--resource-group $AZURE_FILES_RESOURCE_GROUP \
--kind StorageV2 \
--sku Standard_LRS
Definir permissões
Definir permissões de grupo de recursos
A entidade de serviço ARO requer a permissão 'listKeys' no novo grupo de recursos da conta de armazenamento do Azure. Atribua a função 'Colaborador' para conseguir isso.
ARO_RESOURCE_GROUP=aro-rg
CLUSTER=cluster
ARO_SERVICE_PRINCIPAL_ID=$(az aro show -g $ARO_RESOURCE_GROUP -n $CLUSTER --query servicePrincipalProfile.clientId -o tsv)
az role assignment create --role Contributor --scope /subscriptions/mySubscriptionID/resourceGroups/$AZURE_FILES_RESOURCE_GROUP --assignee $ARO_SERVICE_PRINCIPAL_ID
Definir permissões de cluster ARO
A conta de serviço de fichário de volume persistente OpenShift requer a capacidade de ler segredos. Crie e atribua uma função de cluster OpenShift para conseguir isso.
ARO_API_SERVER=$(az aro list --query "[?contains(name,'$CLUSTER')].[apiserverProfile.url]" -o tsv)
oc login -u kubeadmin -p $(az aro list-credentials -g $ARO_RESOURCE_GROUP -n $CLUSTER --query=kubeadminPassword -o tsv) $ARO_API_SERVER
oc create clusterrole azure-secret-reader \
--verb=create,get \
--resource=secrets
oc adm policy add-cluster-role-to-user azure-secret-reader system:serviceaccount:kube-system:persistent-volume-binder
Criar StorageClass com o provisionador de Arquivos do Azure
Esta etapa cria um StorageClass com um provisionador de Arquivos do Azure. No manifesto StorageClass, os detalhes da conta de armazenamento são necessários para que o cluster ARO saiba examinar uma conta de armazenamento fora do grupo de recursos atual.
Durante o provisionamento de armazenamento, um segredo nomeado por secretName é criado para as credenciais de montagem. Em um contexto de multilocação, é altamente recomendável definir o valor para secretNamespace explicitamente, caso contrário, as credenciais da conta de armazenamento podem ser lidas por outros usuários.
cat << EOF >> azure-storageclass-azure-file.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: azure-file
provisioner: file.csi.azure.com
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- noperm
parameters:
location: $LOCATION
secretNamespace: kube-system
skuName: Standard_LRS
storageAccount: $AZURE_STORAGE_ACCOUNT_NAME
resourceGroup: $AZURE_FILES_RESOURCE_GROUP
reclaimPolicy: Delete
volumeBindingMode: Immediate
EOF
oc create -f azure-storageclass-azure-file.yaml
As opções de montagem para Arquivos do Azure geralmente dependerão da carga de trabalho que você está implantando e dos requisitos do aplicativo. Especificamente para arquivos do Azure, há outros parâmetros que você deve considerar usar.
Parâmetros obrigatórios:
- "mfsymlinks" para mapear links simbólicos para um formulário que o cliente pode usar
- "noperm" para desativar as verificações de permissão no lado do cliente
Parâmetros recomendados:
- "nossharesock" para desativar a reutilização de soquetes se o cliente já estiver conectado através de um ponto de montagem existente
- "actimeo=30" (ou superior) para aumentar o tempo que o cliente CIFS armazena em cache atributos de arquivo e diretório
- "nobrl" para desativar o envio de solicitações de bloqueio de intervalo de bytes para o servidor e para aplicativos que têm desafios com bloqueios posix
Alterar o StorageClass padrão (opcional)
O StorageClass padrão no ARO é chamado managed-premium e usa o provisionador azure-disk. Altere isso emitindo comandos de patch nos manifestos StorageClass.
oc patch storageclass managed-premium -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
oc patch storageclass azure-file -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Verificar o Azure File StorageClass (opcional)
Crie um novo aplicativo e atribua armazenamento a ele.
Nota
Para usar o httpd-example
modelo, você deve implantar seu cluster ARO com o segredo de pull habilitado. Para obter mais informações, consulte Obter um segredo de pull da Red Hat.
oc new-project azfiletest
oc new-app httpd-example
#Wait for the pod to become Ready
curl $(oc get route httpd-example -n azfiletest -o jsonpath={.spec.host})
#If you have set the storage class by default, you can omit the --claim-class parameter
oc set volume dc/httpd-example --add --name=v1 -t pvc --claim-size=1G -m /data --claim-class='azure-file'
#Wait for the new deployment to rollout
export POD=$(oc get pods --field-selector=status.phase==Running -o jsonpath={.items[].metadata.name})
oc exec $POD -- bash -c "echo 'azure file storage' >> /data/test.txt"
oc exec $POD -- bash -c "cat /data/test.txt"
azure file storage
O arquivo test.txt também ficará visível por meio do Gerenciador de Armazenamento no portal do Azure.
Próximos passos
Neste artigo, você criou armazenamento dinâmico persistente usando o Microsoft Azure Files e o Azure Red Hat OpenShift 4. Aprendeu a:
- Criar uma Conta de Armazenamento
- Configurar um StorageClass em um cluster do Azure Red Hat OpenShift 4 usando o provisionador do Azure Files
Avance para o próximo artigo para saber mais sobre os recursos suportados pelo Azure Red Hat OpenShift 4.