Dela via


Skapa en Azure Files StorageClass på Azure Red Hat OpenShift 4

I den här artikeln skapar du en StorageClass för Azure Red Hat OpenShift 4 som dynamiskt etablerar ReadWriteMany-lagring (RWX) med hjälp av Azure Files. Du lär dig att:

  • Konfigurera förutsättningarna och installera nödvändiga verktyg
  • Skapa en Azure Red Hat OpenShift 4 StorageClass med Azure File Provisioner

Om du väljer att installera och använda CLI lokalt kräver den här självstudien att du kör Azure CLI version 2.6.0 eller senare. Kör kommandot az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.

Innan du börjar

Distribuera ett Azure Red Hat OpenShift 4-kluster till din prenumeration i Skapa ett Azure Red Hat OpenShift 4-kluster.

Konfigurera Azure Storage-konto

Det här steget skapar en resursgrupp utanför Azure Red Hat OpenShift-klustrets resursgrupp. Den här resursgruppen innehåller Azure Files-aktier som skapade Azure Red Hat OpenShifts dynamiska tillhandahållare.

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

Ange behörigheter

Ange behörigheter för resursgrupper

Tjänstens principal kräver listKeys behörighet på den nya Azure-lagringskontots resursgrupp. Tilldela rollen Deltagare.

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

Ange klusterbehörigheter

OpenShift-kontot för beständiga volymbindningstjänst kräver att du kan läsa hemligheter. Skapa och tilldela en OpenShift-klusterroll.

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

Skapa StorageClass med Azure Files Provisioner

Det här steget skapar en StorageClass med en Azure Files-etablerare. I StorageClass-manifestet krävs information om lagringskontot så att klustret vet att det ska titta på ett lagringskonto utanför den aktuella resursgruppen.

Under lagringsetableringen skapas en hemlighet med namnet secretName för autentiseringsuppgifterna för montering. I en miljö med flera användare är rekommendationen att uttryckligen ange värdet för secretNamespace, annars kan autentiseringsuppgifterna för lagringskontot bli åtkomliga för andra användare.

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

Monteringsalternativ för Azure Files är vanligtvis beroende av den arbetsbelastning som du distribuerar och kraven för programmet. Specifikt för Azure-filer finns det andra parametrar som du bör överväga att använda.

Obligatoriska parametrar:

  • mfsymlinks för att mappa symlänkar till ett formulär som klienten kan använda
  • noperm för att inaktivera behörighetskontroller på klientsidan

Rekommenderade parametrar:

  • nossharesock för att inaktivera återanvändning av socketar om klienten redan är ansluten via en befintlig monteringspunkt
  • actimeo=30 (eller högre) för att öka tiden som CIFS-klienten cachelagrar fil- och katalogattribut
  • nobrl för att inaktivera sändning av byteintervalllåsbegäranden till servern och för program som har problem med posixlås

Ändra standardlagringsklassen (valfritt)

Standardlagringsklassen på kallas managed-premium och använder azure-disk provisioner. Ändra den här inställningen genom att utfärda korrigeringskommandon mot 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"}}}'

Verifiera Azure File StorageClass (valfritt)

Skapa ett nytt program och tilldela lagring till det.

Anmärkning

Om du vill använda mallen httpd-example måste du distribuera klustret med pull-hemligheten aktiverad. Mer information finns i Hämta en Red Hat-pullhemlighet.

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

Filen test.txt visas via Storage Explorer i Azure-portalen.

Nästa steg

I den här artikeln har du skapat dynamisk beständig lagring med hjälp av Microsoft Azure Files och Azure Red Hat OpenShift 4. Du har lärt dig att:

  • Skapa ett lagringskonto
  • Konfigurera en StorageClass på ett Azure Red Hat OpenShift 4-kluster med hjälp av Azure Files-etableringen

Gå vidare till nästa artikel för att lära dig mer om resurser som stöds av Azure Red Hat OpenShift 4.