Een Azure Files-opslagklasse maken op Azure Red Hat OpenShift 4

In dit artikel maakt u een opslagklasse voor Azure Red Hat OpenShift 4 die opslag dynamisch in richt met behulp van Azure Files. U leert het volgende:

  • De vereisten instellen en de benodigde hulpprogramma's installeren
  • Een Azure Red Hat OpenShift 4-opslagklasse maken met de Azure Files-provisioner

Als u ervoor kiest om de CLI lokaal te installeren en te gebruiken, is voor deze zelfstudie Azure CLI versie 2.6.0 of hoger vereist. Voer de az --version opdracht uit om de versie te vinden. Zie Azure CLI installeren als u het Azure CLI wilt installeren of upgraden.

Voordat u begint

Implementeer een Azure Red Hat OpenShift 4-cluster in uw abonnement. Zie Een Azure Red Hat OpenShift 4-cluster maken voor meer informatie.

Een Azure-opslagaccount instellen

Met deze stap maakt u een resourcegroep buiten de resourcegroep van het Azure Red Hat OpenShift cluster. Deze resourcegroep bevat de Azure Files-bestandsshares die door de dynamische Azure Red Hat OpenShift-provisioner zijn 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 en clustermachtigingen instellen.

Voor resourcegroepmachtigingen vereist de service-principal de listKeys machtiging voor de nieuwe Azure resourcegroep van het opslagaccount. Wijs de rol van bijdrager toe.

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

Voor clusterrechten moet het serviceaccount voor het binden van persistente volumes secrets kunnen lezen. Een clusterrol maken en toewijzen in Azure Red Hat 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

Een opslagklasse maken met Azure Files-provisioner

Met deze stap maakt u een opslagklasse met een Azure Files provisioner. U moet de details van het opslagaccount opnemen in het manifest van de opslagklasse. Met deze details weet het cluster een opslagaccount buiten de huidige resourcegroep te bekijken.

Tijdens het inrichten van de opslag verwijst de secretName specificatie naar een geheim dat wordt gebruikt voor de koppelingsreferenties. Stel in een context met meerdere tenants de waarde voor de secretNamespace parameter expliciet in. Anders kunnen andere gebruikers de referenties van het opslagaccount lezen.

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. Voor Azure Files kunt u overwegen andere parameters te gebruiken.

Verplichte parameters:

  • mfsymlinks om symlinks om te zetten naar een vorm die 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 (Common Internet File System) bestands- en mapkenmerken in de cache opneemt.

  • nobrl om het verzenden van bytebereikvergrendelingsaanvragen naar de server uit te schakelen. Deze parameter wordt ook aanbevolen voor toepassingen die problemen hebben met vergrendelingen in Portable Operating System Interface voor Unix (POSIX).

De standaardopslagklasse wijzigen (optioneel)

De standaardopslagklasse heet managed premium, en gebruikt de azure-disk provisioner. Wijzig deze instelling door patchopdrachten uit te geven voor de manifesten van de opslagklasse.

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

De Azure Files-opslagklasse controleren (optioneel)

Maak een nieuwe toepassing en wijs er opslag aan toe.

Opmerking

Als u de httpd-example sjabloon wilt gebruiken, moet u uw cluster implementeren met het pull-geheim ingeschakeld. Zie Een Red Hat-pull-secret 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

U kunt het test.txt bestand zien via de Storage Explorer in de Azure-portal.