Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, creará una clase de almacenamiento para Red Hat OpenShift en Azure 4 que aprovisiona dinámicamente el almacenamiento mediante Azure Files. Aprenderá a:
- Configuración de los requisitos previos e instalación de las herramientas necesarias
- Cree una clase de almacenamiento de Red Hat OpenShift en Azure 4 con el aprovisionador de Azure Files
Si decide instalar y usar la CLI localmente, este tutorial requiere el CLI de Azure versión 2.6.0 o posterior. Para encontrar la versión, ejecute el comando az --version. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.
Antes de empezar
Implemente un clúster de Red Hat OpenShift en Azure 4 en la suscripción. Para obtener más información, consulte Creación de un clúster de Red Hat OpenShift en Azure 4.
Configuración de una cuenta de almacenamiento de Azure
Este paso crea un grupo de recursos fuera del grupo de recursos del clúster de Red Hat OpenShift en Azure. Este grupo de recursos contiene los recursos compartidos de Azure Files que crearon el aprovisionamiento dinámico Red Hat OpenShift en Azure.
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
Establecimiento de permisos
Establezca permisos de grupo de recursos y establezca permisos de clúster.
Para los permisos del grupo de recursos, la entidad de servicio requiere el listKeys permiso en el nuevo grupo de recursos de la cuenta de almacenamiento Azure. Asigne el rol de colaborador.
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
Para los permisos del clúster, la cuenta de servicio encargada de asociar volúmenes persistentes debe tener permiso para leer secretos. Cree y asigne un rol de clúster en Red Hat OpenShift en Azure.
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
Crear una clase de almacenamiento con el aprovisionador de Azure Files
Este paso crea una clase de almacenamiento con un aprovisionamiento de Azure Files. Debe incluir los detalles de la cuenta de almacenamiento en el manifiesto de clase de almacenamiento. Con estos detalles, el clúster sabe examinar una cuenta de almacenamiento fuera del grupo de recursos actual.
Durante el aprovisionamiento del almacenamiento, la especificación secretName indica un secreto utilizado para las credenciales de montaje. En un contexto multiinquilino, establezca explícitamente el valor del parámetro secretNamespace. De lo contrario, otros usuarios podrían leer las credenciales de la cuenta de almacenamiento.
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
Las opciones de montaje para Azure Files generalmente dependen de la carga de trabajo que va a implementar y de los requisitos de la aplicación. Específicamente para Azure Files, considere la posibilidad de usar otros parámetros.
Parámetros obligatorios:
mfsymlinkspara asignarsymlinksa un formulario que el cliente pueda usar.nopermpara deshabilitar las comprobaciones de permisos en el lado cliente.
Parámetros recomendados:
nossharesockpara desactivar la reutilización de sockets si el cliente ya está conectado a través de un punto de montaje existente.actimeo=30(o superior) para aumentar el tiempo que el cliente del protocolo Common Internet File System (CIFS) almacena en caché los atributos de archivo y directorio.nobrlpara desactivar el envío de solicitudes de bloqueo de intervalo de bytes al servidor. Este parámetro también se recomienda para las aplicaciones que tienen desafíos con bloqueos en la interfaz de sistema operativo portátil para Unix (POSIX).
Cambiar la clase de almacenamiento predeterminada (opcional)
La clase de almacenamiento predeterminada se denomina premium administrado y utiliza el aprovisionador azure-disk. Cambie esta configuración mediante la ejecución de comandos de parche en los manifiestos de la clase de almacenamiento.
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"}}}'
Compruebe la clase de almacenamiento Azure Files (opcional)
Cree una aplicación y asígnele almacenamiento.
Nota:
Para usar la httpd-example plantilla, debe desplegar el clúster con el secreto de extracción habilitado. Para obtener más información, consulte Obtener un pull secret de 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
Puede ver el archivo test.txt a través del Explorador de Storage en el portal de Azure.