Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erstellen Sie eine StorageClass für Azure Red Hat OpenShift 4, die ReadWriteMany (RWX)-Speicher dynamisch mithilfe von Azure Files bereitstellen. Hier erfahren Sie, wie Sie:
- Einrichten der erforderlichen Komponenten und Installieren der erforderlichen Tools
- Erstellen einer Storage-Klasse in Azure Red Hat OpenShift 4 mithilfe der Azure Files-Bereitstellung
Wenn Sie die CLI lokal installieren und verwenden möchten, müssen Sie für dieses Tutorial mindestens die Azure CLI-Version 2.6.0 ausführen. Führen Sie den Befehl az --version aus, um die Version zu ermitteln. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
Bevor Sie anfangen
Stellen Sie einen Azure Red Hat OpenShift 4-Cluster in Ihrem Abonnement bereit, siehe Erstellen eines Azure Red Hat OpenShift 4-Clusters.
Einrichten des Azure-Speicherkontos
In diesem Schritt wird eine Ressourcengruppe außerhalb der Ressourcengruppe des Azure Red Hat OpenShift-Clusters erstellt. Diese Ressourcengruppe enthält die Azure Files-Freigaben, die vom dynamischen Bereitsteller von Azure Red Hat OpenShift erstellt wurden.
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
Festlegen von Berechtigungen
Festlegen der Ressourcengruppenberechtigungen
Der Dienstprinzipal benötigt listKeys Berechtigungen für die neue Ressourcengruppe des Azure-Speicherkontos. Weisen Sie die Rolle "Mitwirkender" zu.
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
Festlegen von Clusterberechtigungen
Das OpenShift-Binderdienstkonto für persistente Volumes muss Geheimnisse lesen können. Erstellen und Zuweisen einer OpenShift-Clusterrolle
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
Erstellen einer Storage-Klasse mit einer Azure Files-Bereitstellung
In diesem Schritt wird eine Storage-Klasse (StorageClass) mit einer Azure Files-Bereitstellung erstellt. Innerhalb des StorageClass-Manifests sind die Details des Speicherkontos erforderlich, damit der Cluster weiß, ein Speicherkonto außerhalb der aktuellen Ressourcengruppe anzuzeigen.
Während der Speicherbereitstellung wird für die Einbindungsanmeldeinformationen ein durch „secretName“ benanntes Geheimnis erstellt. In einem Mandantenkontext wird empfohlen, den Wert für secretNamespace explizit festzulegen, andernfalls könnten die Anmeldeinformationen des Speicherkontos von anderen Benutzern gelesen werden.
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
Einbindungsoptionen für Azure Files hängen in der Regel von der Workload, die Sie bereitstellen, und den Anforderungen der Anwendung ab. Speziell für Azure-Dateien gibt es weitere Parameter, die Sie ggf. verwenden sollten.
Erforderliche Parameter:
-
mfsymlinkszum Zuordnen von Symlinks zu einem Formular, das der Client verwenden kann -
nopermzum Deaktivieren von Berechtigungsprüfungen auf clientseitiger Seite
Empfohlene Parameter:
-
nossharesockum die erneute Wiederverwendung von Sockets zu deaktivieren, wenn der Client bereits über einen vorhandenen Bereitstellungspunkt verbunden ist -
actimeo=30(oder höher) um die Zeit zu erhöhen, die der CIFS-Client Datei- und Verzeichnisattribute zwischenspeichert -
nobrlzum Deaktivieren des Sendens von Bytebereichssperranforderungen an den Server und für Anwendungen, die Probleme mit Posix-Sperren haben
Ändern der standardmäßigen Storage-Klasse (optional)
Die Standardmäßige StorageClass on wird als managed-premium bezeichnet und verwendet den Azure-Disk-Provisioner. Ändern Sie diese Einstellung, indem Sie Patchbefehle für die StorageClass-Manifeste ausgeben.
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"}}}'
Überprüfen der Azure Files Storage-Klasse (optional)
Erstellen Sie eine neue Anwendung, und weisen Sie ihr Speicher zu.
Hinweis
Um die httpd-example Vorlage zu verwenden, müssen Sie Ihren Cluster bereitstellen und dabei das Pull-Secret aktivieren. Weitere Informationen finden Sie unter Abrufen eines Red Hat-Pullgeheimnisses (optional).
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
Die test.txt Datei ist über den Speicher-Explorer im Azure-Portal sichtbar.
Nächste Schritte
In diesem Artikel haben Sie mithilfe von Microsoft Azure Files und Azure Red Hat OpenShift 4 einen dynamischen beständigen Speicher erstellt. Sie haben gelernt, wie Sie:
- Erstellen eines Speicherkontos
- Konfigurieren einer Storage-Klasse in einem Azure Red Hat OpenShift 4-Cluster mithilfe der Azure Files-Bereitstellung
Im nächsten Artikel erfahren Sie mehr über die von Azure Red Hat OpenShift 4 unterstützten Ressourcen: