Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo, crei una StorageClass per Azure Red Hat OpenShift 4 che effettua il provisioning dinamico dell'archiviazione ReadWriteMany (RWX) usando Azure Files. Scopri come:
- Configurare i prerequisiti e installare gli strumenti necessari
- Creare un'istanza di StorageClass di Azure Red Hat OpenShift 4 con lo strumento di provisioning di File di Azure
Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questa esercitazione è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.6.0 o successiva. Per trovare la versione, eseguire il comando az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Prima di iniziare
Distribuire un cluster Azure Red Hat OpenShift 4 nella sottoscrizione, vedere Creare un cluster Azure Red Hat OpenShift 4.
Configurare l'account di archiviazione di Azure
Questo passaggio crea un gruppo di risorse all'esterno del gruppo di risorse del cluster Azure Red Hat OpenShift. Questo gruppo di risorse contiene le condivisioni di File di Azure che hanno creato il provisioner dinamico di 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
Impostare le autorizzazioni
Impostare le autorizzazioni del gruppo di risorse
Il principale servizio richiede listKeys l'autorizzazione nel gruppo di risorse del nuovo account di archiviazione Azure. Assegnare il ruolo Collaboratore.
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
Impostare le autorizzazioni del cluster
L'account del servizio persistent-volume-binder di OpenShift richiede la capacità di leggere i segreti. Creare e assegnare un ruolo del 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
Creare l'istanza di StorageClass con lo strumento di provisioning di File di Azure
In questo passaggio viene creata un'istanza di StorageClass con uno strumento di provisioning di File di Azure. Nel manifesto storageClass sono necessari i dettagli dell'account di archiviazione in modo che il cluster sappia esaminare un account di archiviazione all'esterno del gruppo di risorse corrente.
Durante il provisioning dell'archiviazione viene creato un segreto denominato secretName per le credenziali di montaggio. In un contesto multi-tenancy, è consigliabile impostare il valore per secretNamespace in modo esplicito altrimenti le credenziali dell'account di archiviazione potrebbero essere lette da altri utenti.
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
Le opzioni di montaggio per File di Azure dipenderanno in genere dal carico di lavoro da distribuire e dai requisiti dell'applicazione. In particolare per File di Azure è possibile scegliere di usare altri parametri.
Parametri obbligatori:
-
mfsymlinksper mappare i collegamenti simbolici in una forma che il client può utilizzare -
nopermper disabilitare i controlli delle autorizzazioni sul lato client
Parametri consigliati:
-
nossharesockper disabilitare il riutilizzo dei socket se il client è già connesso tramite un punto di montaggio esistente -
actimeo=30(o superiore) per aumentare il tempo in cui il client CIFS memorizza nella cache gli attributi di file e directory -
nobrlper disabilitare l'invio di richieste di blocco dell'intervallo di byte al server e per le applicazioni che presentano problemi con i blocchi posix
Modificare l'istanza predefinita di StorageClass (facoltativo)
L'oggetto StorageClass predefinito in è denominato managed-premium e usa il provisioner azure-disk. Modificare questa impostazione eseguendo i comandi patch sui manifesti dei 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"}}}'
Verificare l'istanza di StorageClass di File di Azure (facoltativo)
Creare una nuova applicazione e assegnarvi spazio di archiviazione.
Annotazioni
Per utilizzare il modello httpd-example, è necessario implementare il cluster con il segreto pull abilitato. Per altre informazioni, vedere Ottenere un segreto pull di 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
Il filetest.txt è visibile tramite Storage Explorer nel portale di Azure.
Passaggi successivi
In questo articolo è stata creata una risorsa di archiviazione permanente dinamica usando File di Microsoft Azure e Azure Red Hat OpenShift 4. Ecco cosa hai imparato a fare:
- Creare un account di archiviazione
- Configurare un'istanza di StorageClass in un cluster di Azure Red Hat OpenShift 4 con lo strumento di provisioning di File di Azure
Passare all'articolo successivo per informazioni sulle risorse supportate di Azure Red Hat OpenShift 4.