Membuat Azure Files StorageClass di Azure Red Hat OpenShift 4

Dalam artikel ini, Anda akan membuat StorageClass untuk Azure Red Hat OpenShift 4 yang secara dinamis menyediakan penyimpanan ReadWriteMany (RWX) menggunakan Azure Files. Anda akan mempelajari cara:

  • Menyiapkan prasyarat dan menginstal alat yang diperlukan
  • Membuat Azure Red Hat OpenShift 4 StorageClass dengan provisioner File Azure

Jika Anda memilih untuk memasang dan menggunakan CLI secara lokal, tutorial ini mengharuskan Anda menjalankan Azure CLI versi 2.6.0 atau versi lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Sebelum Anda mulai

Menyebarkan kluster Azure Red Hat OpenShift 4 ke langganan Anda, lihat Membuat kluster Azure Red Hat OpenShift 4

Siapkan akun penyimpanan Azure

Langkah ini membuat grup sumber daya di luar grup sumber daya kluster Azure Red Hat OpenShift (ARO). Grup sumber daya ini berisi berbagi Azure Files yang membuat provisi dinamis 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

Mengatur izin

Hapus izin grup sumber daya

Prinsipal layanan ARO memerlukan izin 'listKeys' pada grup sumber daya akun penyimpanan Azure yang baru. Tetapkan peran 'Kontributor' untuk mencapai hal ini.

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

Mengatur izin kluster ARO

Akun layanan binder volume persisten OpenShift memerlukan kemampuan untuk membaca rahasia. Buat dan tetapkan peran kluster OpenShift untuk mencapai hal ini.

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

Membuat StorageClass dengan provisioner Azure Files

Langkah ini membuat StorageClass dengan provisi Azure Files. Dalam manifes StorageClass, detail akun penyimpanan diperlukan sehingga kluster ARO tahu untuk melihat akun penyimpanan di luar grup sumber daya saat ini.

Selama penyediaan penyimpanan, rahasia bernama secretName dibuat untuk kredensial pemasangan. Dalam konteks multi-penyewaan, sangat disarankan untuk mengatur nilai untuk secretNamespace secara eksplisit, jika tidak, kredensial akun penyimpanan dapat dibaca oleh pengguna lain.

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

Opsi pemasangan untuk Azure Files umumnya akan bergantung pada beban kerja yang Anda sebarkan dan persyaratan aplikasi. Khusus untuk file Azure, ada parameter lain yang harus Anda pertimbangkan untuk digunakan.

Parameter wajib:

  • "mfsymlinks" untuk memetakan symlinks ke formulir yang dapat digunakan klien
  • "noperm" untuk menonaktifkan pemeriksaan izin di sisi klien

Parameter yang direkomendasikan:

  • "nossharesock" untuk menonaktifkan penggunaan kembali soket jika klien sudah terhubung melalui titik pemasangan yang ada
  • "actimeo=30" (atau lebih tinggi) untuk meningkatkan waktu klien CIFS cache file dan atribut direktori
  • "nobrl" untuk menonaktifkan pengiriman permintaan kunci rentang byte ke server dan untuk aplikasi yang memiliki tantangan dengan kunci posix

Mengubah StorageClass default (opsional)

StorageClass default pada ARO disebut managed-premium dan menggunakan media penyediaan disk azure. Ubah ini dengan mengeluarkan perintah patch terhadap manifes 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"}}}'

Memverifikasi Azure File StorageClass (opsional)

Buat aplikasi baru dan tetapkan penyimpanan untuk itu.

Catatan

Untuk menggunakan templat httpd-example, Anda harus menyebarkan kluster ARO Anda dengan penarikan rahasia yang diaktifkan. Untuk informasi lebih lanjut, lihat Dapatkan penarikan rahasia 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

File test.txt juga akan terlihat melalui Storage Explorer di portal Azure.

Langkah berikutnya

Dalam artikel ini, Anda membuat penyimpanan persisten dinamis menggunakan Microsoft Azure Files dan Azure Red Hat OpenShift 4. Anda mempelajari cara untuk:

  • Buat Akun Microsoft Azure Storage
  • Mengonfigurasi StorageClass pada kluster Azure Red Hat OpenShift 4 menggunakan provisioner Azure Files

Lanjutkan ke artikel berikutnya untuk mempelajari tentang sumber daya yang didukung Azure Red Hat OpenShift 4.