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. Co se naučíte:

  • 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 zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Než začnete

Nasazení clusteru Azure Red Hat OpenShift 4 do vašeho předplatného, viz 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 (ARO). 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ů

Instanční objekt ARO vyžaduje oprávnění listKeys pro novou skupinu prostředků účtu úložiště Azure. K dosažení tohoto cíle 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 ARO

Účet služby Trvalé pořadače svazků OpenShift vyžaduje schopnost číst tajné kódy. Vytvořte a přiřaďte k tomu 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 účtu úložiště, aby cluster ARO 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 se důrazně doporučuje nastavit hodnotu pro secretNamespace explicitně, jinak můžou přihlašovací údaje úč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" k mapování symlinků na formulář, který může klient použít
  • Noperm pro zakázání kontrol oprávnění na straně klienta

Doporučené parametry:

  • "nossharesock" k 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" zakázat odesílání požadavků na 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 v ARO se nazývá managed-premium a používá zřizovací nástroj azure-disk. Změňte to 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 použít httpd-example šablonu, musíte nasadit cluster ARO s povoleným tajným kódem vyžádané replikace. 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 bude viditelný také prostřednictvím Průzkumník 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.