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.