Erstellen einer Azure Files Storage-Klasse in Azure Red Hat OpenShift 4
In diesem Artikel wird eine Storage-Klasse für Azure Red Hat OpenShift 4 zur dynamischen Bereitstellung von RWX-Speicher (ReadWriteMany) unter Verwendung von Azure Files erstellt. Sie lernen Folgendes:
- 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 az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Voraussetzungen
Stellen Sie einen Azure Red Hat OpenShift 4-Cluster in Ihrem Abonnement bereit. Eine entsprechende Anleitung finden Sie unter Tutorial: Erstellen eines Azure Red Hat OpenShift 4-Clusters.
Einrichten des Azure-Speicherkontos
In diesem Schritt wird eine Ressourcengruppe außerhalb der Ressourcengruppe des ARO-Clusters (Azure Red Hat OpenShift) erstellt. Diese Ressourcengruppe enthält die Azure Files-Freigaben, die die dynamische Bereitstellung von Azure Red Hat OpenShift erstellt haben.
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 ARO-Dienstprinzipal benötigt die Berechtigung „listKeys“ für die neue Ressourcengruppe des Azure-Speicherkontos. Weisen Sie die Rolle „Mitwirkender“ zu, um dies zu erreichen.
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 der ARO-Clusterberechtigungen
Das OpenShift-Binderdienstkonto für persistente Volumes muss Geheimnisse lesen können. Erstellen Sie eine OpenShift-Clusterrolle, und weisen Sie sie zu, um dies zu erreichen.
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. Im Manifest der Storage-Klasse müssen die Details des Speicherkontos enthalten sein, um den ARO-Cluster darüber zu informieren, dass nach einem Speicherkonto gesucht werden muss, das sich außerhalb der aktuellen Ressourcengruppe befindet.
Während der Speicherbereitstellung wird für die Einbindungsanmeldeinformationen ein durch „secretName“ benanntes Geheimnis erstellt. In einem mehrinstanzenfähigen Kontext wird dringend empfohlen, den Wert für „secretNamespace“ explizit festzulegen. Andernfalls können 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:
- „mfsymlinks“ zum Zuordnen von symbolischen Verknüpfungen zu einem Formular, das der Client verwenden kann
- „noperm“ zum Deaktivieren von Berechtigungsprüfungen auf der Clientseite
Empfohlene Parameter:
- „nossharesock“, um die Wiederverwendung von Sockets zu deaktivieren, wenn der Client bereits über einen vorhandenen Bereitstellungspunkt verbunden ist
- „actimeo=30“ (oder höher), um den Zeitraum zu verlängern, für den der CIFS-Client Datei- und Verzeichnisattribute zwischenspeichert
- „nobrl“ zum Deaktivieren des Sendens von Anforderungen für Byte-Bereichssperrungen an den Server und für Anwendungen, die Probleme mit Posix-Sperren haben
Ändern der standardmäßigen Storage-Klasse (optional)
Die standardmäßige Storage-Klasse in ARO heißt „managed-premium“ und verwendet die Azure-Datenträgerbereitstellung. Ändern Sie dies, indem Sie Patchbefehle für die Manifeste der Storage-Klasse 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 Vorlage httpd-example
verwenden zu können, müssen Sie Ihren ARO-Cluster mit aktiviertem Pullgeheimnis bereitstellen. 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 Datei „test.txt“ wird auch im Azure-Portal im Storage-Explorer angezeigt.
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 Folgendes gelernt:
- 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: