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

 

[참고 문서]

https://github.com/stacksimplify/azure-aks-kubernetes-masterclass/tree/master/08-Azure-Files-for-AKS-Storage