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. Poruszone zostaną tematy takie jak:
- 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.