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 följande:

  • 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 az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Innan du börjar

Distribuera ett Azure Red Hat OpenShift 4-kluster till din prenumeration, se 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 (ARO). Den här resursgruppen innehåller De Azure Files-resurser som skapade Azure Red Hat OpenShifts dynamiska etablering.

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

Ställa in behörigheter

Ange behörigheter för resursgrupper

ARO-tjänstens huvudnamn kräver behörigheten "listKeys" för den nya resursgruppen för Azure-lagringskontot. Tilldela rollen Deltagare för att uppnå detta.

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 ARO-klusterbehörigheter

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

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 ARO-klustret vet att de 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 kontext med flera innehavare rekommenderar vi starkt att du uttryckligen anger värdet för secretNamespace, annars kan autentiseringsuppgifterna för lagringskontot läsas av 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å ARO kallas managed-premium och använder azure-disk provisioner. Ändra detta 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.

Kommentar

Om du vill använda mallen httpd-example måste du distribuera ARO-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

Den test.txt filen visas också 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.