Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln skapar du en lagringsklass för Azure Red Hat OpenShift 4 som dynamiskt etablerar lagring 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-lagringsklass med Azure Files provisioner
Om du väljer att installera och använda CLI:t lokalt, förutsätter den här självstudien 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 kan du läsa Installera Azure CLI.
Innan du börjar
Distribuera ett Azure Red Hat OpenShift 4-kluster till din prenumeration. Mer information finns i Skapa ett Azure Red Hat OpenShift 4-kluster.
Skapa ett Azure-lagringskonto
Det här steget skapar en resursgrupp utanför Azure Red Hat OpenShift klustrets resursgrupp. Den här resursgruppen innehåller de Azure Files-fildelningar som skapades av Azure Red Hat OpenShifts dynamiska provisionerare.
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 och ange klusterbehörigheter.
För behörigheter för resursgruppen kräver tjänsthuvudnamnet behörigheten listKeys för resursgruppen för det nya Azure-lagringskontot. Tilldela deltagarrollen.
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
För klusterbehörigheter måste tjänstkontot för bindning av beständiga volymer kunna läsa Secrets. Skapa och tilldela en klusterroll i 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
Skapa en lagringsklass med Azure Files provisioner
Det här steget skapar en lagringsklass med en Azure Files provisioner. Du måste inkludera information om lagringskontot i lagringsklassmanifestet. Med den här informationen vet klustret att de ska titta på ett lagringskonto utanför den aktuella resursgruppen.
Vid etablering av lagring anger specifikationen secretName en hemlighet som används för autentiseringsuppgifterna för montering. I en kontext med flera klientorganisationer anger du värdet för parametern secretNamespace explicit. Annars kan andra användare läsa autentiseringsuppgifterna för lagringskontot.
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 beror vanligtvis på den arbetsbelastning som du distribuerar och programmets krav. Mer specifikt för Azure Files bör du överväga att använda andra parametrar.
Obligatoriska parametrar:
mfsymlinksför att mappasymlinkstill ett formulär som klienten kan använda.nopermför att inaktivera behörighetskontroller på klientsidan.
Rekommenderade parametrar:
nossharesockfö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-protokollets klient cachelagrar fil- och katalogattribut.nobrlför att stänga av begäranden om byteintervalllås till servern. Den här parametern rekommenderas också för program som har problem med lås i Portable Operating System Interface for Unix (POSIX).
Ändra standardlagringsklassen (valfritt)
Standardlagringsklassen kallas managed premium och använder provisioneraren azure-disk. Ändra den här inställningen genom att utfärda korrigeringskommandon mot lagringsklassmanifesten.
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"}}}'
Kontrollera Azure Files lagringsklassen (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 Skaffa en pull secret från Red Hat.
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
Du kan se test.txt-filen via Storage Explorer i Azure-portalen.