kubernetes/udemy
[udemy] Azure Files
bbiyak2da
2025. 2. 18. 14:55
Azure Files
Azure Files를 통해 Volume Mount하여,
웹 페이지를 띄워보자
모든 파일은 kube-manifests/ 폴더 안에 넣어두어, 일괄적으로 생성한다.
Storage Class 파일 작성
# Storage-class.yaml 파일 생성
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile-sc
provisioner: kubernetes.io/azure-file
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
parameters:
skuName: Standard_LRS
Persistent Volume Claim 파일 작성
# Persistent-Volume-Claim.yaml 파일 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-azurefile-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: my-azurefile-sc
resources:
requests:
storage: 5Gi
Nginx Deployment 파일 작성
# Nginx-Deployment.yaml 파일 생성
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-files-nginx-deployment
labels:
app: azure-files-nginx-app
spec:
replicas: 4
selector:
matchLabels:
app: azure-files-nginx-app
template:
metadata:
labels:
app: azure-files-nginx-app
spec:
containers:
- name: azure-files-nginx-app
image: stacksimplify/kube-nginxapp1:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 80
volumeMounts:
- name: my-azurefile-volume
mountPath: "/usr/share/nginx/html/app1"
volumes:
- name: my-azurefile-volume
persistentVolumeClaim:
claimName: my-azurefile-pvc
Nginx Service 생성
# Nginx-Service.yaml 파일 생성
apiVersion: v1
kind: Service
metadata:
name: azure-files-nginx-service
labels:
app: azure-files-nginx-app
spec:
type: LoadBalancer
selector:
app: azure-files-nginx-app
ports:
- port: 80
targetPort: 80
생성 및 확인
# 생성
# Create All Objects
kubectl apply -f kube-manifests/
# 확인
kubectl get pvc
---
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
my-azurefile-pvc Bound pvc-8f726f7a-deda-4998-a845-8fb64f3f1185 5Gi RWX my-azurefile-sc <unset> 4m3s
kubectl get pv
---
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
pvc-2355e8d4-61c8-4a9e-8570-a6bb46ca1295 5Gi RWO Retain Released default/azure-managed-disk-pvc managed-premium-retain-sc <unset> 3h53m
pvc-8f726f7a-deda-4998-a845-8fb64f3f1185 5Gi RWX Delete Bound default/my-azurefile-pvc my-azurefile-sc <unset> 3m39s
kubectl get svc
---
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-files-nginx-service LoadBalancer 10.0.97.191 20.249.198.241 80:31507/TCP 4m21s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 20h
# Azure files에 파일 업로드
해당 pvc에 file1.html과 file2.html를 올린다.
azure-files-nginx-service ip/app1/file1.html 확인 화면
azure-files-nginx-service ip/app1/file2.html 확인 화면
[참고 영상]
Udemy - Azure Kubernetes Service with Azure DevOps and Terraform
섹션 9 : AKS Storage - Azure Files
[참고 문서]