Freigeben über


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: