Sdílet prostřednictvím


Vytvoření třídy Azure Files Storage v Azure Red Hat OpenShiftu 4

V tomto článku vytvoříte třídu StorageClass pro Azure Red Hat OpenShift 4, která dynamicky zřizuje úložiště ReadWriteMany (RWX) pomocí služby Azure Files. Naučíte se:

  • Nastavení požadovaných součástí a instalace potřebných nástrojů
  • Vytvoření třídy Azure Red Hat OpenShift 4 StorageClass pomocí zřizovacího nástroje Azure File

Pokud se rozhodnete nainstalovat a používat rozhraní příkazového řádku místně, musíte mít Azure CLI verze 2.6.0 nebo novější. Verzi najdete spuštěním az --version příkazu. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.

Než začnete

Nasazení clusteru Azure Red Hat OpenShift 4 do vašeho předplatného najdete v tématu Vytvoření clusteru Azure Red Hat OpenShift 4.

Nastavení účtu úložiště Azure

Tento krok vytvoří skupinu prostředků mimo skupinu prostředků clusteru Azure Red Hat OpenShift. Tato skupina prostředků obsahuje sdílené složky Azure Files, které vytvořily dynamický zřizovací nástroj 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

Nastavení oprávnění

Nastavení oprávnění skupiny prostředků

Služební objekt vyžaduje listKeys oprávnění ke skupině prostředků nového účtu úložiště Azure. Přiřaďte roli přispěvatel.

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

Nastavení oprávnění clusteru

Účet služby Trvalé pořadače svazků OpenShift vyžaduje schopnost číst tajné kódy. Vytvořte a přiřaďte roli clusteru 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

Vytvoření třídy StorageClass pomocí zřizovacího nástroje Azure Files

Tento krok vytvoří třídu StorageClass se zřizovacím nástrojem azure Files. V manifestu StorageClass se vyžadují podrobnosti o účtu úložiště, aby cluster věděl, že se podívá na účet úložiště mimo aktuální skupinu prostředků.

Během zřizování úložiště se pro přihlašovací údaje připojení vytvoří tajný klíč pojmenovaný secretName. V kontextu s více tenanty doporučujeme explicitně nastavit hodnotu pro secretNamespace, jinak mohou přihlašovací údaje k účtu úložiště číst jiní uživatelé.

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

Možnosti připojení pro Azure Files budou obecně závislé na úloze, kterou nasazujete, a na požadavcích aplikace. Konkrétně pro soubory Azure existují další parametry, které byste měli zvážit.

Povinné parametry:

  • mfsymlinks mapování symlinků na formulář, který může klient použít
  • noperm zakázání kontrol oprávnění na straně klienta

Doporučené parametry:

  • nossharesock zakázání opakovaného připojení soketů, pokud je klient již připojen přes existující přípojný bod
  • actimeo=30 (nebo vyšší), aby se zvýšil čas, kdy klient CIFS ukládá soubory a atributy adresáře do mezipaměti
  • nobrl pro zakázání odesílání žádostí o uzamčení rozsahu bajtů na server a pro aplikace, které mají problémy se zámky POSIX.

Změna výchozí třídy StorageClass (volitelné)

Výchozí třída StorageClass se nazývá managed-premium a používá zřizovací nástroj azure-disk. Toto nastavení můžete změnit tak, že vydáte příkazy oprav pro manifesty 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"}}}'

Ověření třídy Azure File StorageClass (volitelné)

Vytvořte novou aplikaci a přiřaďte k ní úložiště.

Poznámka:

Pokud chcete šablonu httpd-example použít, musíte cluster nasadit s povoleným pull secret. Další informace najdete v tématu Získání tajného kódu pro přijetí změn z Red Hatu.

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

Soubor test.txt se zobrazí prostřednictvím Průzkumníka služby Storage na webu Azure Portal.

Další kroky

V tomto článku jste vytvořili dynamické trvalé úložiště pomocí služby Microsoft Azure Files a Azure Red Hat OpenShift 4. Naučili jste se:

  • Vytvoření účtu úložiště
  • Konfigurace třídy StorageClass v clusteru Azure Red Hat OpenShift 4 pomocí zřizovacího nástroje Azure Files

V dalším článku se dozvíte o podporovaných prostředcích Azure Red Hat OpenShift 4.