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 Speicherklasse für Azure Red Hat OpenShift 4, die speicher dynamisch mithilfe von Azure Files bereitgestellt. Hier erfahren Sie, wie Sie:
- Einrichten der erforderlichen Komponenten und Installieren der erforderlichen Tools
- Erstellen einer Azure Red Hat OpenShift 4 Speicherklasse mit dem Azure Files Provisioner
Wenn Sie die CLI lokal installieren und verwenden möchten, erfordert dieses Lernprogramm die Azure CLI Version 2.6.0 oder höher. Führen Sie den Befehl az --version aus, um die Version zu ermitteln. Wenn Sie die Azure CLI installieren oder aktualisieren müssen, siehe Installieren der Azure CLI.
Bevor Sie anfangen
Stellen Sie einen Azure Red Hat OpenShift 4 Cluster in Ihrem Abonnement bereit. Weitere Informationen finden Sie unter Erstellen eines Azure Red Hat OpenShift 4-Clusters.
Richten Sie ein Azure-Speicherkonto ein
In diesem Schritt wird eine Ressourcengruppe außerhalb der Ressourcengruppe Azure Red Hat OpenShift Cluster erstellt. Diese Ressourcengruppe enthält die Azure Files-Freigaben, die von der dynamischen Bereitstellung von Azure Red Hat OpenShift erstellt werden.
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
Legen Sie Ressourcengruppenberechtigungen fest, und legen Sie Clusterberechtigungen fest.
Für Berechtigungen auf Ressourcengruppen benötigt der Dienstprinzipal die Berechtigung listKeys für die Ressourcengruppe des neuen 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
Für Clusterberechtigungen benötigt das Dienstkonto des persistenten Volume-Binders die Berechtigung, Geheimnisse zu lesen. Erstellen und Zuweisen einer Clusterrolle in 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
Erstellen einer Speicherklasse mit Azure Files Provisioner
In diesem Schritt wird eine Speicherklasse mit einem Azure Files Provisioner erstellt. Sie müssen die Details des Speicherkontos innerhalb des Speicherklassenmanifests einschließen. Anhand dieser Details weiß der Cluster, dass er nach einem Speicherkonto außerhalb der aktuellen Ressourcengruppe suchen muss.
Während der Speicherbereitstellung benennt die Spezifikation secretName ein Geheimnis, das für die Bereitstellungsanmeldeinformationen verwendet wird. Legen Sie in einem Mehrinstanzenkontext den Wert für den secretNamespace Parameter explizit fest. Andernfalls lesen andere Benutzer möglicherweise die Anmeldeinformationen für das Speicherkonto.
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
Bereitstellungsoptionen für Azure Files hängen in der Regel von der Arbeitsauslastung ab, die Sie bereitstellen, und den Anforderungen der Anwendung. Berücksichtigen Sie speziell für Azure Files die Verwendung anderer Parameter.
Erforderliche Parameter:
mfsymlinks, umsymlinksin ein Format zu überführen, das der Client verwenden kann.nopermum Berechtigungsprüfungen auf clientseitiger Seite zu deaktivieren.
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-Protokollclient (Common Internet File System) Datei- und Verzeichnisattribute zwischenspeichert.nobrlum das Senden von Bytebereichssperranforderungen an den Server zu deaktivieren. Dieser Parameter wird auch für Anwendungen empfohlen, die Herausforderungen mit Sperren in Portable Operating System Interface for Unix (POSIX) haben.
Ändern der Standardspeicherklasse (optional)
Die Standardspeicherklasse wird als verwalteter Premium bezeichnet und verwendet den azure-disk Provisioner. Ändern Sie diese Einstellung, indem Sie Patchbefehle für die Speicherklassenmanifeste 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 Speicherklasse (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 So erhalten Sie ein Red Hat-Pull-Secret.
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
Sie können die test.txt-Datei über den Storage-Explorer im Azure-Portal anzeigen.