Tworzenie klasy Azure Files StorageClass w usłudze Azure Red Hat OpenShift 4

W tym artykule utworzysz klasę StorageClass dla usługi Azure Red Hat OpenShift 4, która dynamicznie aprowizuje magazyn ReadWriteMany (RWX) przy użyciu usługi Azure Files. Omawiane tematy:

  • Konfigurowanie wymagań wstępnych i instalowanie niezbędnych narzędzi
  • Tworzenie klasy StorageClass usługi Azure Red Hat OpenShift 4 przy użyciu usługi Azure File Provisioner

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten samouczek będzie wymagał interfejsu wiersza polecenia platformy Azure w wersji 2.6.0 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Zanim rozpoczniesz

Wdrażanie klastra usługi Azure Red Hat OpenShift 4 w ramach subskrypcji, zobacz Create an Azure Red Hat OpenShift 4 cluster (Tworzenie klastra usługi Azure Red Hat OpenShift 4)

Konfigurowanie konta usługi Azure Storage

W tym kroku zostanie utworzona grupa zasobów spoza grupy zasobów klastra usługi Azure Red Hat OpenShift (ARO). Ta grupa zasobów zawiera udziały usługi Azure Files, które utworzyły dynamiczną aprowizację usługi 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ń

Ustawianie uprawnień grupy zasobów

Jednostka usługi ARO wymaga uprawnienia "listKeys" w nowej grupie zasobów konta usługi Azure Storage. Przypisz rolę "Współautor", aby to osiągnąć.

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

Ustawianie uprawnień klastra usługi ARO

Konto usługi trwałego powiązania woluminów OpenShift wymaga możliwości odczytywania wpisów tajnych. Aby to osiągnąć, utwórz i przypisz rolę klastra 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 StorageClass przy użyciu usługi Azure Files Provisioner

W tym kroku zostanie utworzona klasa StorageClass z aprowizatorem usługi Azure Files. W manifeście StorageClass wymagane są szczegóły konta magazynu, aby klaster usługi ARO mógł przyjrzeć się kontu magazynu poza bieżącą grupą zasobów.

Podczas aprowizacji magazynu dla instalowania poświadczeń jest tworzony wpis tajny o nazwie secretName. W kontekście wielu dzierżaw zdecydowanie zaleca się jawne ustawienie wartości secretNamespace. W przeciwnym razie poświadczenia konta magazynu mogą być odczytywane przez innych użytkowników.

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 usługi Azure Files zwykle zależą od wdrażanego obciążenia i wymagań aplikacji. W szczególności w przypadku usługi Azure Files istnieją inne parametry, których należy rozważyć.

Obowiązkowe parametry:

  • "mfsymlinks" do mapowania symlinków na formularz, który klient może użyć
  • "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 nowszy) w celu zwiększenia czasu buforowania plików i atrybutów katalogu klienta CIFS
  • "nobrl", aby wyłączyć wysyłanie żądań blokady zakresu bajtów do serwera i aplikacji, które mają problemy z blokadami posix

Zmienianie domyślnej klasy StorageClass (opcjonalnie)

Domyślna klasa StorageClass w usłudze ARO nosi nazwę managed-premium i używa usługi azure-disk provisioner. Zmień to, wydając polecenia poprawek względem manifestów StorageClass.

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

Weryfikowanie klasy Azure File StorageClass (opcjonalnie)

Utwórz nową aplikację i przypisz do niej magazyn.

Uwaga

Aby użyć szablonu httpd-example , należy wdrożyć klaster usługi ARO z włączonym wpisem tajnym ściągania. Aby uzyskać więcej informacji, zobacz Get a Red Hat pull secret (Uzyskiwanie wpisu tajnego ściągnięcia 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 będzie również widoczny za pośrednictwem Eksplorator usługi Storage w witrynie Azure Portal.

Następne kroki

W tym artykule utworzono dynamiczny magazyn trwały przy użyciu usług Microsoft Azure Files i Azure Red Hat OpenShift 4. W tym samouczku omówiono:

  • Tworzenie konta magazynu
  • Konfigurowanie klasy StorageClass w klastrze usługi Azure Red Hat OpenShift 4 przy użyciu usługi Azure Files Provisioner

Przejdź do następnego artykułu, aby dowiedzieć się więcej o obsługiwanych zasobach usługi Azure Red Hat OpenShift 4.