Partager via


Créer Azure Files StorageClass sur Azure Red Hat OpenShift 4

Dans cet article, vous allez créer un StorageClass pour Azure Red Hat OpenShift 4 qui approvisionne dynamiquement le stockage ReadWriteMany (RWX) à l’aide d’Azure Files. Vous découvrirez comment :

  • Configurer les composants requis et installer les outils nécessaires
  • Créer un StorageClass Azure Red Hat OpenShift 4 avec l’approvisionneur Azure Files

Si vous choisissez d’installer et d’utiliser l’interface de ligne de commande localement, ce tutoriel vous demande d’exécuter Azure CLI version 2.6.0 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Avant de commencer

Déployez un cluster Azure Red Hat OpenShift 4 dans votre abonnement, voir Créer un cluster Azure Red Hat OpenShift 4.

Configurer un compte de stockage Azure

Cette étape permet de créer un groupe de ressources en dehors du groupe de ressources du cluster Azure Red Hat OpenShift (ARO). Ce groupe de ressources contient les partages Azure Files créés par l’approvisionneur dynamique d’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

Définir des autorisations

Définir les autorisations du groupe de ressources

Le principal du service ARO requiert l’autorisation « listKeys » sur le groupe de ressources du nouveau compte de stockage Azure. Attribuez le rôle « Contributeur » pour y parvenir.

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

Définir les autorisations de cluster ARO

Le compte de service de liaison de volume persistant OpenShift nécessite la capacité à lire des secrets. Créez et attribuez un rôle de cluster OpenShift pour y parvenir.

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

Créer StorageClass avec l’approvisionneur Azure Files

Cette étape permet de créer une StorageClass avec un approvisionneur Azure Files. Dans le manifeste StorageClass, les détails du compte de stockage sont requis afin que le cluster ARO sache qu’il doit examiner un compte de stockage en dehors du groupe de ressources actuel.

Lors de l’approvisionnement du stockage, une clé secrète nommée secretName est créée pour les informations d’identification de montage. Dans un contexte multilocataire, il est fortement recommandé de définir explicitement la valeur pour secretNamespace. Sinon, les informations d’identification du compte de stockage peuvent être lues par d’autres utilisateurs.

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

Le montage d’options pour Azure Files dépend généralement de l’espace de travail que vous déployez et des exigences de l’application. Spécifiquement pour Azure Files, il existe d’autres paramètres que vous devez envisager d’utiliser.

Paramètres obligatoires :

  • « mfsymlinks » pour mapper symlinks à un formulaire que le client peut utiliser
  • « noperm » pour désactiver les vérifications d’autorisation du côté client

Paramètres recommandés :

  • « nossharesock » pour désactiver la réutilisation de sockets si le client est déjà connecté via un point de montage existant
  • « actimeo=30 » (ou supérieur) pour augmenter le temps de mise en cache par le client CIFS des attributs de répertoires et de fichiers
  • « nobrl » pour désactiver l’envoi de requêtes de verrouillage de plages d’octets au serveur et pour les applications ayant des problèmes avec les verrouillages posix

Modifier le StorageClass par défaut (facultatif)

Le StorageClass par défaut sur ARO s’appelle managed-premium et utilise l’approvisionneur azure-disk. Modifiez ceci en émettant des commandes patch sur les manifestes 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"}}}'

Vérifier Azure File StorageClass (facultatif)

Créez une nouvelle application et attribuez-lui le stockage.

Remarque

Pour utiliser le modèle httpd-example, vous devez déployer votre cluster ARO avec le secret d’extraction activé. Pour plus d’informations, reportez-vous à Obtenir un secret d’extraction 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

Le fichier .txt de test sera également visible via Explorateur Stockage dans le portail Azure.

Étapes suivantes

Dans cet article, vous avez créé un stockage persistant dynamique à l’aide de Microsoft Azure Files et d’Azure Red Hat OpenShift 4. Vous avez appris à :

  • Créer un compte de stockage
  • Configurer un StorageClass sur un cluster Azure Red Hat OpenShift 4 à l’aide de l’approvisionneur Azure Files

Passez à l’article suivant pour en savoir plus sur les ressources prises en charge par Azure Red Hat OpenShift 4.