Aracılığıyla paylaş


Azure Red Hat OpenShift 4 üzerinde bir Azure Dosyalar StorageClass oluşturma

Bu makalede, Azure Dosyaları kullanarak ReadWriteMany (RWX) depolama alanını dinamik olarak sağlayan bir Azure Red Hat OpenShift 4 için StorageClass oluşturacaksınız. Şunları yapmayı öğreneceksiniz:

  • Önkoşulları ayarlama ve gerekli araçları yükleme
  • Azure Dosya sağlama ile Azure Red Hat OpenShift 4 StorageClass oluşturma

CLI'yi yerel olarak yükleyip kullanmayı seçerseniz, bu öğretici için Azure CLI 2.6.0 veya sonraki bir sürümünü çalıştırmanız gerekir. Sürümü bulmak için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

Başlamadan önce

Azure Red Hat OpenShift 4 kümesini aboneliğinize dağıtma bkz. Azure Red Hat OpenShift 4 kümesi oluşturma.

Azure depolama hesabını ayarlama

Bu adım, Azure Red Hat OpenShift (ARO) kümesinin kaynak grubunun dışında bir kaynak grubu oluşturur. Bu kaynak grubu, Azure Red Hat OpenShift'in dinamik sağlayıcısı tarafından oluşturulan Azure Dosyalar paylaşımlarını içerir.

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

İzinleri ayarlama

Kaynak grubu izinlerini ayarlama

ARO hizmet sorumlusu, yeni Azure depolama hesabı kaynak grubu üzerinde izin gerektirir listKeys . Katkı Sağlayan rolünü atayın.

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 küme izinlerini ayarlama

OpenShift kalıcı birim bağlayıcı hizmeti hesabı gizli dizileri okuyabilmeyi gerektirir. OpenShift kümesi rolü oluşturun ve atayın.

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

Azure Dosyalar sağlama ile StorageClass oluşturma

Bu adım, Azure Dosyalar sağlama ile bir StorageClass oluşturur. StorageClass bildiriminde, ARO kümesinin geçerli kaynak grubunun dışındaki bir depolama hesabına bakması için depolama hesabının ayrıntıları gereklidir.

Depolama sağlama sırasında, bağlama kimlik bilgileri için secretName adlı bir gizli dizi oluşturulur. Çok kiracılı bir bağlamda, secretNamespace değerinin açıkça ayarlanması önerilir; aksi takdirde depolama hesabı kimlik bilgileri diğer kullanıcılar tarafından okunabilir.

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 Dosyalar bağlama seçenekleri genellikle dağıttığınız iş yüküne ve uygulamanın gereksinimlerine bağlıdır. Özellikle Azure dosyaları için kullanmayı göz önünde bulundurmanız gereken başka parametreler de vardır.

Zorunlu parametreler:

  • mfsymlinks symlink'leri istemcinin kullanabileceği bir forma eşlemek için
  • noperm istemci tarafında izin denetimlerini devre dışı bırakmak için

Önerilen parametreler:

  • nossharesock istemci zaten var olan bir bağlama noktası üzerinden bağlıysa yuvaları yeniden kullanma özelliğini devre dışı bırakmak için
  • actimeo=30 (veya üzeri), CIFS istemcisinin dosya ve dizin özniteliklerini önbelleğe alma süresini artırmak için
  • nobrl sunucuya bayt aralığı kilit istekleri göndermeyi devre dışı bırakmak ve posix kilitleri ile ilgili zorlukları olan uygulamalar için

Varsayılan StorageClass'ı değiştirme (isteğe bağlı)

ARO'da varsayılan StorageClass, managed-premium olarak adlandırılır ve azure-disk sağlamayı kullanır. StorageClass bildirimlerinde yama komutları kullanarak bu ayarı değiştirin.

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"}}}'

Azure Dosya Depolama Sınıfını Doğrulama (isteğe bağlı)

Yeni bir uygulama oluşturun ve buna depolama alanı atayın.

Uyarı

Şablonu kullanmak httpd-example için ARO kümenizi çekme gizli dizisi etkin olarak dağıtmanız gerekir. Daha fazla bilgi için bkz . Red Hat çekme gizli dizisi alma.

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 dosyası Azure portalındaki Depolama Gezgini aracılığıyla görülebilir.

Sonraki Adımlar

Bu makalede, Microsoft Azure Dosyalar ve Azure Red Hat OpenShift 4 kullanarak dinamik kalıcı depolama oluşturdunuz. Nasıl yapılacağını öğrendinsiniz:

  • Depolama Hesabı oluşturma
  • Azure Dosyalar sağlamayı kullanarak Azure Red Hat OpenShift 4 kümesinde StorageClass yapılandırma

Azure Red Hat OpenShift 4 tarafından desteklenen kaynaklar hakkında bilgi edinmek için sonraki makaleye geçin.