Создание StorageClass службы "Файлы Azure" в Azure Red Hat OpenShift 4
В этой статье рассказано, как создать StorageClass для Azure Red Hat OpenShift 4, который динамически подготавливает хранилище ReadWriteMany (RWX) с использованием службы "Файлы Azure". Вы научитесь:
- настроить необходимые компоненты и установить необходимые инструменты;
- Создание StorageClass для Azure Red Hat OpenShift 4 с использованием средства подготовки службы "Файлы Azure"
Если решено установить и использовать CLI локально, то для работы с этим учебником понадобится Azure CLI 2.6.0 или более поздней версии. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Подготовка к работе
Развертывание кластера Azure Red Hat OpenShift 4 для подписки (см. статью Создание кластера Azure Red Hat OpenShift 4)
Настройка учетной записи хранения Azure
На этом шаге создается группа ресурсов за пределами группы ресурсов кластера Azure Red Hat OpenShift (ARO). Эта группа ресурсов содержит общие папки Файлы Azure, которые создали динамический поставщик 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
Настройка разрешений
Настройка разрешений группы ресурсов
Субъекту-службе ARO требуется разрешение "listKeys" в новой группе ресурсов учетной записи хранения Azure. Для этого назначьте роль "Contributor".
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
Настройка разрешений для кластера ARO
Для учетной записи службы привязки постоянных томов OpenShift требуется возможность чтения секретов. Для этого создайте и назначьте роль кластера 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
Создание StorageClass с помощью средства подготовки службы "Файлы Azure"
На этом шаге создается класс StorageClass с Файлы Azure подготовкой. В манифесте StorageClass сведения об учетной записи хранения необходимы, чтобы кластер ARO знал о том, что учетная запись хранения находится за пределами текущей группы ресурсов.
Во время подготовки хранилища создается секрет, названный secretName, для учетных данных подключения. В контексте многотенантности настоятельно рекомендуется явно задать значение для secretNamespace, в противном случае учетные данные учетной записи хранения могут считываться другими пользователями.
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
Параметры подключения для Файлы Azure обычно зависят от рабочей нагрузки, развернутой и требований приложения. В частности, для файлов Azure следует использовать другие параметры.
Обязательные параметры:
- "Mfsymlinks" для сопоставления символов с формой клиент может использовать
- Noperm для отключения проверок разрешений на стороне клиента
Рекомендуемые параметры:
- Nossharesock, чтобы отключить повторное использование сокетов, если клиент уже подключен через существующую точку подключения
- "actimeo=30" (или более поздней версии) для увеличения времени, когда клиентские атрибуты и атрибуты каталога CIFS кэшируют файлы и каталоги.
- Nobrl, чтобы отключить отправку запросов на блокировку диапазона байтов на сервер и для приложений, которые имеют проблемы с блокировками posix
Изменение StorageClass по умолчанию (необязательно)
StorageClass по умолчанию для ARO называется managed-premium и использует средство подготовки azure-disk. Измените это, выполнив команды patch для манифестов 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"}}}'
Проверка StorageClass службы "Файлы Azure" (необязательно)
Создайте новое приложение и назначьте для него хранилище.
Примечание.
Чтобы использовать шаблон httpd-example
, необходимо развернуть кластер ARO с включенным секретом для извлечения. Дополнительные сведения см. в статье Получение секрета для извлечения 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
Файл test.txt будет также виден через Обозреватель службы хранилища Azure на портале Azure.
Следующие шаги
Следуя инструкциям этой статьи, вы создали динамическое постоянное хранилище с использованием службы "Файлы Azure" от Майкрософт и Azure Red Hat OpenShift 4. Вы научились выполнять следующие задачи:
- Создание учетной записи хранения
- Настройка StorageClass в кластере Azure Red Hat OpenShift 4 с использованием средства подготовки службы "Файлы Azure"
Перейдите к следующей статье, чтобы узнать о поддерживаемых ресурсах Azure Red Hat OpenShift 4.