Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você criará uma classe de armazenamento para Red Hat OpenShift no Azure 4 que provisiona dinamicamente o armazenamento usando Arquivos do Azure. Você aprenderá como:
- Configurar os pré-requisitos e instalar as ferramentas necessárias
- Criar uma classe de armazenamento Red Hat OpenShift no Azure 4 com o provisionador de Arquivos do Azure
Se você optar por instalar e usar a CLI localmente, este tutorial exigirá o CLI do Azure versão 2.6.0 ou posterior. Para localizar a versão, execute o comando az --version. Se você precisar instalar ou atualizar, consulte Instale o CLI do Azure.
Antes de começar
Implante um cluster Red Hat OpenShift no Azure 4 em sua assinatura. Para obter mais informações, consulte Criar um cluster Red Hat OpenShift no Azure 4.
Configure uma conta de armazenamento do Azure
Esta etapa cria um grupo de recursos fora do grupo de recursos do cluster de Red Hat OpenShift no Azure. Esse grupo de recursos contém os compartilhamentos de Arquivos do Azure que criaram o provisionador dinâmico Red Hat OpenShift no Azure.
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 grupo de recursos, a entidade de serviço requer a permissão listKeys 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
Para permissões de cluster, a conta de serviço do associador de volume persistente precisa da capacidade de ler segredos. Crie e atribua uma função de cluster no Red Hat OpenShift no Azure.
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 uma classe de armazenamento com o provisionador do Arquivos do Azure
Esta etapa cria uma classe de armazenamento com um provisionador de Arquivos do Azure. Você deve incluir os detalhes da conta de armazenamento no manifesto da classe de armazenamento. Com esses detalhes, o cluster sabe examinar uma conta de armazenamento fora do grupo de recursos atual.
Durante o provisionamento de armazenamento, a especificação secretName especifica um segredo usado nas credenciais de montagem. Em um contexto multilocatário, defina explicitamente o valor do parâmetro secretNamespace. Caso contrário, outros usuários poderão 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 Arquivos do Azure geralmente dependem da carga de trabalho que você está implantando e dos requisitos do aplicativo. Especificamente para Arquivos do Azure, considere usar outros parâmetros.
Parâmetros obrigatórios:
mfsymlinkspara mapearsymlinkspara um formulário que o cliente pode usar.nopermpara desabilitar 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 por um ponto de montagem existente.actimeo=30(ou superior) para aumentar o tempo em que o cliente CIFS (Common Internet File System) Protocol armazena em cache os atributos de arquivo e diretório.nobrlpara desativar o envio de solicitações de bloqueio de intervalo de bytes para o servidor. Esse parâmetro também é recomendado para aplicativos que têm desafios com bloqueios na Interface do Sistema Operacional Portátil para Unix (POSIX).
Alterar a classe de armazenamento padrão (opcional)
A classe de armazenamento padrão é chamada premium gerenciado, e usa o provisionador azure-disk. Altere essa configuração emitindo 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 a classe de armazenamento Arquivos do Azure (opcional)
Criar um novo aplicativo e atribuir armazenamento a ele.
Observação
Para usar o template httpd-example, você deve implantar seu cluster com o pull secret habilitado. Para obter mais informações, consulte Obtenha 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
Você pode ver o arquivo test.txt por meio do Gerenciador de Armazenamento no portal do Azure.