Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste artigo, você cria um StorageClass para o Red Hat OpenShift 4 do Azure que provisiona dinamicamente o armazenamento ReadWriteMany (RWX) usando o Azure Files. Você aprende 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. Para localizar a versão, execute o az --version comando. Se precisar de instalar ou atualizar, consulte Install 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. 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
O principal de serviço requer permissão no novo grupo de recursos da conta de armazenamento do Azure. Atribua a função de Colaborador.
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
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.
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 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, a recomendação é 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:
-
mfsymlinksPara mapear links simbólicos para um formulário que o cliente pode usar -
nopermPara desativar as verificações de permissão no lado do cliente
Parâmetros recomendados:
-
nossharesockPara 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 -
nobrlPara desativar o envio de solicitações de bloqueio de intervalo de bytes para o servidor e para aplicações que enfrentam dificuldades com bloqueios POSIX
Alterar o StorageClass padrão (opcional)
O StorageClass padrão é chamado managed-premium e usa o provisionador azure-disk. Altere essa configuração executando comandos de patch nos manifestos da classe de armazenamento.
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.
Observação
Para usar o httpd-example modelo, você deve implantar seu cluster 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 é 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. Você 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.