Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
-
mfsymlinkspour faire correspondre des liens symboliques à une forme que le client peut utiliser -
nopermpour désactiver les vérifications d’autorisation côté client
Paramètres recommandés :
-
nossharesockpour 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 -
nobrlpour 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.