Tworzenie klasy pamięci masowej Azure Files w usłudze Azure Red Hat OpenShift 4

W tym artykule utworzysz klasę magazynu dla usługi Azure Red Hat OpenShift 4, która dynamicznie aprowizuje zasoby magazynu za pomocą usługi Azure Files. Uczysz się, jak:

  • Konfigurowanie wymagań wstępnych i instalowanie niezbędnych narzędzi
  • Utwórz klasę pamięci masowej Azure Red Hat OpenShift 4 za pomocą aprowizatora Azure Files

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten samouczek wymaga Azure CLI w wersji 2.6.0 lub nowszej. Aby znaleźć wersję, uruchom az --version polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Instaluj Azure CLI.

Zanim rozpoczniesz

Wdróż klaster Azure Red Hat OpenShift 4 w ramach subskrypcji. Aby uzyskać więcej informacji, zobacz Tworzenie klastra Azure Red Hat OpenShift 4.

Konfigurowanie konta usługi Azure Storage

Ten krok tworzy grupę zasobów poza grupą zasobów klastra Azure Red Hat OpenShift. Ta grupa zasobów zawiera udziały usługi Azure Files utworzone przez dynamiczny aprowizator Azure Red Hat OpenShift.

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

Ustawianie uprawnień

Skonfiguruj uprawnienia grupy zasobów i klastra.

W przypadku uprawnień do grupy zasobów jednostka usługi wymaga uprawnienia listKeys do grupy zasobów nowego konta magazynu Azure. Przypisz rolę współautora.

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

W przypadku uprawnień na poziomie klastra konto usługi bindera woluminów trwałych wymaga możliwości odczytu sekretów. Utwórz i przypisz rolę klastra w 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

Tworzenie klasy magazynu przy użyciu usługi Azure Files provisioner

W tym kroku zostanie utworzona klasa pamięci masowej z modułem inicjującym Azure Files. Musisz uwzględnić szczegóły konta magazynu w manifeście klasy magazynu. Dzięki tym szczegółom klaster może przyjrzeć się kontu magazynu spoza bieżącej grupy zasobów.

Podczas aprowizowania pamięci masowej specyfikacja secretName określa nazwę wpisu tajnego używanego podczas montowania poświadczeń. W środowisku wielodostępnym jawnie ustaw wartość parametru secretNamespace. W przeciwnym razie inni użytkownicy mogą odczytywać poświadczenia konta magazynu.

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

Opcje instalacji dla Azure Files zwykle zależą od wdrażanego obciążenia i wymagań aplikacji. W szczególności w przypadku Azure Files rozważ użycie innych parametrów.

Obowiązkowe parametry:

  • mfsymlinks aby zamapować symlinks na formularz, którego może użyć klient.

  • noperm aby wyłączyć kontrole uprawnień po stronie klienta.

Zalecane parametry:

  • nossharesock aby wyłączyć ponowne użycie gniazd, jeśli klient jest już połączony za pośrednictwem istniejącego punktu instalacji.

  • actimeo=30 (lub wyższa wartość), aby wydłużyć czas buforowania atrybutów plików i katalogów przez klienta protokołu Common Internet File System (CIFS).

  • nobrl aby wyłączyć wysyłanie żądań blokowania zakresu bajtów do serwera. Ten parametr jest również zalecany w przypadku aplikacji, które mają problemy z blokadami w przenośnym interfejsie systemu operacyjnego dla systemu Unix (POSIX).

Zmienianie domyślnej klasy magazynu (opcjonalnie)

Domyślna klasa pamięci masowej nosi nazwę managed premium i używa prowizjonera azure-disk. Zmień to ustawienie za pomocą poleceń patch dla manifestów klasy pamięci masowej.

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

Sprawdź klasę magazynu Azure Files (opcjonalnie)

Utwórz nową aplikację i przypisz do niej pamięć masową.

Uwaga / Notatka

Aby użyć szablonu httpd-example, należy wdrożyć klaster z włączonym tajnym kluczem pobierania. Aby uzyskać więcej informacji, zobacz Uzyskiwanie wpisu tajnego pobierania 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

Plik test.txt można wyświetlić za pośrednictwem Eksplorator usługi Storage w portalu Azure.