Partager via


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

Dans cet article, vous allez créer une classe De stockage pour Azure Red Hat OpenShift 4 qui provisionne dynamiquement le stockage ReadWriteMany (RWX) à l’aide d’Azure Files. Vous apprenez à :

  • 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. Pour connaître la version de l’interface, exécutez la commande az --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, consultez Créer un cluster Azure Red Hat OpenShift 4.

Configurer un compte de stockage Azure

Cette étape crée un groupe de ressources en dehors du groupe de ressources du cluster Azure Red Hat OpenShift. Ce groupe de ressources contient les partages Azure Files qui ont créé le provisionneur 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 de service nécessite listKeys une autorisation sur le nouveau groupe de ressources du compte de stockage Azure. Attribuez le rôle Contributeur.

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 des autorisations de cluster

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.

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 sache 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 recommandé de définir explicitement la valeur de secretNamespace ; sinon, les identifiants du compte de stockage pourraient être lus 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 faire correspondre des liens symboliques à une forme que le client peut utiliser
  • noperm pour désactiver les vérifications d’autorisation côté client

Paramètres recommandés :

  • nossharesock pour désactiver la réutilisation des sockets si le client est déjà connecté via un point de montage existant
  • actimeo=30 (ou supérieur) pour augmenter le temps que le client CIFS met en cache les attributs de fichier et de répertoire
  • nobrl pour désactiver l’envoi de requêtes de verrouillage de plage d’octets au serveur et pour les applications qui ont des difficultés avec les verrous POSIX

Modifier le StorageClass par défaut (facultatif)

La classe de stockage par défaut activée est appelée Managed-Premium et utilise le provisionneur de disque Azure. Modifiez ce paramètre en émettant des commandes correctives 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 httpd-example modèle, vous devez déployer votre cluster 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 test.txt est visible via l’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.