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á um StorageClass para o Red Hat OpenShift 4 do Azure que provisiona dinamicamente o armazenamento ReadWriteMany (RWX) usando arquivos do Azure. Você aprenderá como:
- Configurar os pré-requisitos e instalar as ferramentas necessárias
- Criar um StorageClass do 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á a execução da CLI do Azure versão 2.6.0 ou posterior. Para localizar a versão, execute o comando az --version
. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Antes de começar
Implantar um cluster do Azure Red Hat OpenShift 4 em sua assinatura, veja Criar um cluster do Azure Red Hat OpenShift 4.
Configurar uma conta de Armazenamento do Azure
Esta etapa cria um grupo de recursos fora do grupo de recursos do cluster do ARO (Red Hat OpenShift) do Azure. Esse grupo de recursos contém os compartilhamentos de Arquivos do Azure que foram criados pelo 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 do ARO precisa de permissão listKeys
no novo grupo de recursos da conta de armazenamento do Azure. Atribua a função 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 ARO
A conta de serviço do vinculador de volume persistente do OpenShift requer a capacidade de ler segredos. Crie e atribua uma função de cluster do 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
Essa etapa cria uma StorageClass com um provisionador de Arquivos do Azure. No manifesto do StorageClass, os detalhes da conta de armazenamento são necessários para que o cluster de ARO saiba examinar uma conta de armazenamento fora do grupo de recursos atual.
Durante o provisionamento de armazenamento, um segredo nomeado secretname é criado para as credenciais de montagem. Em um contexto de vários locatários, a recomendação é definir o valor de secretNamespace
explicitamente; caso contrário, as credenciais da conta de armazenamento poderão 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 os Arquivos do Azure de modo geral irão depender da carga de trabalho que você está implantando e dos requisitos do aplicativo. Especificamente para arquivos do Azure, existem outros parâmetros que você deve pensar em usar.
Parâmetros obrigatórios:
-
mfsymlinks
para mapear links simbólicos para um formato que o cliente possa usar -
noperm
para desabilitar verificações de permissão no lado do cliente
Parâmetros recomendados:
-
nossharesock
para desabilitar o reutilizamento de soquetes se o cliente já estiver conectado por meio de um ponto de montagem existente -
actimeo=30
(ou superior) para aumentar o tempo em que o cliente CIFS armazena em cache atributos de arquivo e diretório -
nobrl
para desabilitar o envio de solicitações de bloqueio de intervalo de bytes para o servidor e para aplicativos que enfrentam dificuldades com bloqueios POSIX
Alterar o StorageClass padrão (opcional)
O StorageClass padrão no ARO é chamado de managed-premium e usa o provisionador de disco do Azure. Altere essa configuração emitindo comandos de patch nos manifestos do 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 StorageClass de arquivos do Azure (opcional)
Criar um novo aplicativo e atribuir armazenamento a ele.
Observação
Para usar o modelo httpd-example
, você deve implantar o cluster ARO com o segredo de pull habilitado. Para obter mais informações, consulte Obter uma segredo de pull do 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óximas etapas
Neste artigo, você criou armazenamento persistente dinâmico usando Arquivos do Microsoft Azure e Red Hat OpenShift no Azure 4. Você aprendeu a:
- Criar uma conta de armazenamento
- Configurar uma StorageClass em um cluster Red Hat OpenShift no Azure 4 usando o provisionador Arquivos do Azure
Continue para o próximo artigo para aprender sobre recursos suportados pelo Red Hat OpenShift no Azure 4.