Share via


Creare un'istanza di StorageClass di File di Azure in Azure Red Hat OpenShift 4

In questo articolo si creerà una Archiviazione Class per Azure Red Hat OpenShift 4 che effettua il provisioning dinamico dell'archiviazione ReadWriteMany (RWX) usando File di Azure. Verrà descritto come:

  • Configurare i prerequisiti e installare gli strumenti necessari
  • Creare un'istanza di Azure Red Hat OpenShift 4 Archiviazione Class con il provisioner 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. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Operazioni preliminari

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 (ARO). Questo gruppo di risorse contiene le condivisioni 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

L'entità servizio ARO richiede l'autorizzazione 'listKeys' per il nuovo gruppo di risorse dell'account di archiviazione di Azure. Assegnare il ruolo "Collaboratore" per ottenere questo risultato.

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 ARO

L'account del servizio di associazione di volumi permanenti OpenShift richiede la possibilità di leggere i segreti. Creare e assegnare un ruolo del cluster OpenShift per ottenere questo risultato.

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 Archiviazione Class con File di Azure provisioner

Questo passaggio crea una Archiviazione Class con un provisioner File di Azure. All'interno del manifesto Archiviazione Class, i dettagli dell'account di archiviazione sono necessari in modo che il cluster ARO sappia esaminare un account di archiviazione all'esterno del gruppo di risorse corrente.

Durante il provisioning dell'archiviazione, viene creato un segreto denominato da 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 possono 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 dipendono in genere dal carico di lavoro che si sta distribuendo e dai requisiti dell'applicazione. In particolare per i file di Azure, è consigliabile usare altri parametri.

Parametri obbligatori:

  • "mfsymlinks" per mappare i collegamenti simbolici a un modulo che il client può usare
  • "noperm" per disabilitare i controlli delle autorizzazioni sul lato client

Parametri consigliati:

  • "nossharesock" per 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
  • "nobrl" per 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 il Archiviazione Class predefinito (facoltativo)

Il valore predefinito Archiviazione Class in ARO è denominato managed-premium e usa il provisioner azure-disk. Modificare questa impostazione eseguendo i comandi patch rispetto ai manifesti Archiviazione Class.

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 Archiviazione Classe file di Azure (facoltativo)

Creare una nuova applicazione e assegnarvi spazio di archiviazione.

Nota

Per usare il httpd-example modello, è necessario distribuire il cluster ARO 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 file test.txt sarà visibile anche tramite Esplora Archiviazione nel portale di Azure.

Passaggi successivi

In questo articolo è stata creata l'archiviazione permanente dinamica usando Microsoft File di Azure e Azure Red Hat OpenShift 4. Contenuto del modulo:

  • Creare un account di archiviazione
  • Configurare una Archiviazione Class in un cluster Azure Red Hat OpenShift 4 usando il provisioner File di Azure

Passare all'articolo successivo per informazioni sulle risorse supportate di Azure Red Hat OpenShift 4.