Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, crias uma classe de armazenamento para Azure Red Hat OpenShift 4 que provisiona armazenamento dinamicamente usando o Ficheiros do Azure. Você aprende a:
- Configura os pré-requisitos e instala as ferramentas necessárias
- Crie uma classe de armazenamento Azure Red Hat OpenShift 4 com o Ficheiros do Azure provisioner
Se optar por instalar e usar a CLI localmente, este tutorial requer a versão 2.6.0 ou posterior do CLI do Azure. Para localizar a versão, execute o az --version comando. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.
Antes de começar
Implemente um cluster Azure Red Hat OpenShift 4 na sua subscrição. Para mais informações, veja Criar um cluster Azure Red Hat OpenShift 4.
Configurar uma conta de armazenamento no Azure
Esta etapa cria um grupo de recursos fora do grupo de recursos do cluster Azure Red Hat OpenShift. Este grupo de recursos contém as partilhas Ficheiros do Azure que criaram o provisionador dinâmico 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
Defina permissões de grupo de recursos e defina permissões de cluster.
Para permissões de grupos de recursos, o principal de serviço requer a listKeys permissão sobre o novo grupo de recursos da conta de armazenamento do Azure. Atribui o papel de contribuidor.
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
Para permissões de cluster, a conta de serviço do agrupador de volume persistente requer a capacidade de ler segredos. Criar e atribuir um papel de cluster no Azure Red Hat 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
Crie uma classe de armazenamento com o Ficheiros do Azure provisioner
Este passo cria uma classe de armazenamento com um Ficheiros do Azure provisioner. Deve incluir os detalhes da conta de armazenamento no manifesto da classe de armazenamento. Com estes detalhes, o cluster sabe que deve analisar uma conta de armazenamento fora do grupo de recursos atual.
Durante o provisionamento de armazenamento, a especificação secretName indica um segredo utilizado para as credenciais de montagem. Num contexto multiinquilino, defina explicitamente o valor do secretNamespace parâmetro. Caso contrário, outros utilizadores podem ler as credenciais da conta de armazenamento.
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 Ficheiros do Azure geralmente dependem da carga de trabalho que estás a implementar e dos requisitos da aplicação. Especificamente para o Ficheiros do Azure, considera usar outros parâmetros.
Parâmetros obrigatórios:
mfsymlinkspara mapearsymlinkspara um formulário que o cliente possa usar.nopermpara desativar as verificações de permissões do lado do cliente.
Parâmetros recomendados:
nossharesockpara desligar a reutilização de sockets se o cliente já estiver ligado através de um ponto de montagem existente.actimeo=30(ou superior) para aumentar o tempo durante o qual o cliente do protocolo Common Internet File System (CIFS) coloca em cache os atributos de ficheiros e diretórios.nobrlpara desativar o envio de solicitações de bloqueio de intervalo de bytes para o servidor. Este parâmetro é também recomendado para aplicações que enfrentam desafios com bloqueios no Portable Operating System Interface for Unix (POSIX).
Alterar a classe de armazenamento padrão (opcional)
A classe de armazenamento predefinida chama-se premium gerida e utiliza o azure-disk aprovisionador. Altere esta configuração emitindo comandos de correção contra os 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 a classe de armazenamento Ficheiros do Azure (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 Red Hat pull secret.
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
Pode ver o ficheiro test.txt através do Explorador de Armazenamento no portal do Azure.