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.