Delen via


Een Azure Files StorageClass maken in Azure Red Hat OpenShift 4

In dit artikel maakt u een StorageClass voor Azure Red Hat OpenShift 4 waarmee readWriteMany-opslag (RWX) dynamisch wordt ingericht met behulp van Azure Files. U leert het volgende:

  • De vereisten instellen en de benodigde hulpprogramma's installeren
  • Een Azure Red Hat OpenShift 4 StorageClass maken met de Azure File-inrichting

Als u ervoor kiest om CLI lokaal te installeren en gebruiken, moet u Azure CLI versie 2.6.0 of hoger gebruiken voor deze zelfstudie. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Voordat u begint

Een Azure Red Hat OpenShift 4-cluster implementeren in uw abonnement, zie Een Azure Red Hat OpenShift 4-cluster maken

Azure Storage-account instellen

Met deze stap maakt u een resourcegroep buiten de resourcegroep van het Azure Red Hat OpenShift-cluster (ARO). Deze resourcegroep bevat de Azure Files-shares die dynamische inrichting van Azure Red Hat OpenShift hebben gemaakt.

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

Machtigingen instellen

Machtigingen voor resourcegroepen instellen

Voor de ARO-service-principal is de machtiging listKeys vereist voor de nieuwe resourcegroep van het Azure-opslagaccount. Wijs de rol Inzender toe om dit te bereiken.

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

ARO-clustermachtigingen instellen

Het openShift permanente volumebindingsserviceaccount vereist de mogelijkheid om geheimen te lezen. Maak en wijs een OpenShift-clusterrol toe om dit te bereiken.

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

StorageClass maken met Azure Files-inrichting

Met deze stap maakt u een StorageClass met een Azure Files-inrichting. Binnen het StorageClass-manifest zijn de details van het opslagaccount vereist, zodat het ARO-cluster weet dat er een opslagaccount buiten de huidige resourcegroep moet worden bekeken.

Tijdens het inrichten van de opslag wordt een geheim met de naam secretName gemaakt voor de koppelingsreferenties. In een context met meerdere tenants wordt het sterk aanbevolen om de waarde voor secretNamespace expliciet in te stellen, anders kunnen de referenties van het opslagaccount worden gelezen door andere gebruikers.

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

Koppelingsopties voor Azure Files zijn over het algemeen afhankelijk van de workload die u implementeert en de vereisten van de toepassing. Specifiek voor Azure-bestanden zijn er andere parameters die u moet gebruiken.

Verplichte parameters:

  • "mfsymlinks" om symlinks toe te wijzen aan een formulier dat de client kan gebruiken
  • "noperm" om machtigingscontroles aan de clientzijde uit te schakelen

Aanbevolen parameters:

  • "nossharesock" om hergebruik van sockets uit te schakelen als de client al is verbonden via een bestaand koppelpunt
  • "actimeo=30" (of hoger) om de tijd te verhogen dat de CIFS-client bestands- en mapkenmerken in de cache opneemt
  • "nobrl" om het verzenden van bytebereikvergrendelingsaanvragen naar de server uit te schakelen en voor toepassingen die problemen hebben met posix-vergrendelingen

De standaardopslagklasse wijzigen (optioneel)

De standaardopslagklasse op ARO wordt managed-premium genoemd en maakt gebruik van de azure-schijfinrichting. Wijzig dit door patchopdrachten uit te geven voor de StorageClass-manifesten.

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"}}}'

Azure File StorageClass controleren (optioneel)

Maak een nieuwe toepassing en wijs er opslag aan toe.

Notitie

Als u de httpd-example sjabloon wilt gebruiken, moet u uw ARO-cluster implementeren met het pull-geheim ingeschakeld. Zie Een Red Hat-pull-geheim ophalen voor meer informatie.

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

Het test.txt-bestand is ook zichtbaar via Storage Explorer in Azure Portal.

Volgende stappen

In dit artikel hebt u dynamische permanente opslag gemaakt met Behulp van Microsoft Azure Files en Azure Red Hat OpenShift 4. U hebt geleerd hoe u:

  • Een opslagaccount maken
  • Een StorageClass configureren op een Azure Red Hat OpenShift 4-cluster met behulp van de Azure Files-inrichting

Ga naar het volgende artikel voor meer informatie over door Azure Red Hat OpenShift 4 ondersteunde resources.