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 hoe u:
- 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.