PV/PVC with Azure File 구성 시 필요한 Network 설정
Kubernetes 환경에서 **Persistent Volume(PV)**과 **Persistent Volume Claim(PVC)**를 Azure File 스토리지로 구성하려면,
단순히 YAML로 PV/PVC를 정의하는 것뿐만 아니라 네트워크 설정이 반드시 뒷받침되어야 합니다.
Azure File은 SMB(서버 메시지 블록) 프로토콜을 사용하므로, 네트워크 라우팅, DNS, 방화벽(NSG) 규칙 등이 제대로 설정되어 있어야 정상적으로 마운트됩니다.
1. Azure File + PV/PVC 구성 개요
- PV (Persistent Volume)
클러스터 관리자가 프로비저닝한 스토리지 리소스로, 스토리지의 실제 물리적/클라우드 리소스에 대한 추상화 레이어. - PVC (Persistent Volume Claim)
개발자/애플리케이션이 요청하는 스토리지 요구사항. PV에 매칭되어 바인딩됨. - Azure File
Azure Storage 계정에서 제공하는 SMB 3.0 기반 네트워크 파일 공유 서비스. Kubernetes에서는 csi.azure.com 드라이버를 통해 접근.
2. 네트워크 설정의 핵심 포인트
(1) 접근 경로
- Azure File은 퍼블릭 엔드포인트 또는 **프라이빗 엔드포인트(Private Endpoint)**로 접근 가능.
- 보안 강화를 위해 AKS 클러스터와 같은 VNet 내부에 Private Endpoint 구성 권장.
(2) DNS 해석
- Private Endpoint 사용 시, Azure Storage의 FQDN({storageaccount}.file.core.windows.net)이 Private IP로 해석되도록 Azure Private DNS Zone 설정 필요.
- Private DNS Zone 링크: privatelink.file.core.windows.net
- AKS VNet과 DNS Zone을 연결(VNet Link)해야 함.
(3) 네트워크 라우팅
- AKS 노드 → Azure File Storage까지의 경로 확인.
- VNet이 피어링된 경우, PEERING 설정에서 "Allow forwarded traffic" 및 "Allow gateway transit" 활성화 필요.
- On-prem과 연결 시 ExpressRoute 또는 VPN Gateway 사용 가능.
(4) 방화벽(NSG) 규칙
- SMB 포트(445/TCP) 허용.
- Azure File에 접근하는 서브넷에서 Outbound 445/TCP가 막혀 있으면 마운트 불가.
- Private Endpoint 사용 시에도 해당 포트 허용 필요.
(5) 스토리지 방화벽
- Storage Account의 "방화벽 및 가상 네트워크" 설정에서 AKS 서브넷 허용.
- Private Endpoint 사용 시 Public Access 차단 가능.
(6) 인증
- Azure File PV/PVC는 Storage Account Key 또는 Azure AD 기반 SMB 인증 지원.
- Storage Account Key를 Secret로 저장 후 PV/PVC YAML에 참조.
- Azure AD 인증 시, AKS 노드가 Azure File 리소스에 접근 가능한 Managed Identity 권한 필요.
3. PV/PVC + Azure File 네트워크 구성 절차 (Private Endpoint 기준)
- Storage Account 생성
- Performance: Standard (HDD) 또는 Premium (SSD)
- Account kind: StorageV2
- File shares 기능 활성화.
- Private Endpoint 생성
- Target sub-resource: file
- 연결할 VNet/Subnet 지정.
- Private DNS Zone(privatelink.file.core.windows.net)에 자동 등록되도록 설정.
- Private DNS Zone 구성
- privatelink.file.core.windows.net Zone 생성.
- Private Endpoint의 Private IP가 A 레코드로 등록되어야 함.
- AKS VNet과 DNS Zone을 링크.
- NSG 설정
- AKS 노드 서브넷에 Outbound 445/TCP 허용.
- 필요 시 Inbound SMB 규칙도 설정(특정 상황에서만).
- 스토리지 방화벽 설정
- Public access 차단.
- Private Endpoint 서브넷만 허용.
- 인증 구성
- Storage Account Key를 Kubernetes Secret에 저장.
- 또는 Managed Identity에 Azure File Data SMB Share Contributor 권한 부여.
4. 주요 용어 정리
PV (Persistent Volume) | 클러스터에서 사용할 수 있는 스토리지 리소스의 추상화 객체 |
PVC (Persistent Volume Claim) | 사용자가 요청하는 스토리지 요구사항, PV에 바인딩 |
Azure File | SMB 기반 클라우드 파일 공유 서비스 |
Private Endpoint | VNet 내부에서 Azure 서비스에 Private IP로 연결 |
Private DNS Zone | Private Endpoint 연결 시 서비스 FQDN을 Private IP로 해석하는 DNS Zone |
NSG (Network Security Group) | Azure 네트워크의 방화벽 역할 |
SMB (Server Message Block) | 파일 공유를 위한 네트워크 프로토콜 |
Storage Account Key | Storage Account 인증을 위한 키 |
Managed Identity | Azure 리소스에 부여되는 인증 아이덴티티 |
Azure CSI Driver | Kubernetes에서 Azure 스토리지를 사용하기 위한 Container Storage Interface 드라이버 |
5. 예상문제 30문제
Q1. Azure File은 어떤 네트워크 프로토콜을 사용하나요?
A1. SMB(서버 메시지 블록)
Q2. Private Endpoint를 사용할 경우 필수 DNS Zone은?
A2. privatelink.file.core.windows.net
Q3. Azure File 접근 시 기본적으로 허용해야 하는 TCP 포트는?
A3. 445
Q4. AKS에서 Azure File을 사용 시 PV/PVC와 연동하는 Kubernetes 구성 요소는?
A4. Azure CSI Driver
Q5. Storage Account의 Public Access를 차단하고 Private Endpoint로만 접근하도록 설정하는 옵션은?
A5. Storage 방화벽에서 네트워크 규칙 구성
Q6. Azure File 접근 시 Storage Account Key 대신 사용할 수 있는 인증 방식은?
A6. Azure AD 기반 SMB 인증
Q7. Managed Identity로 Azure File 접근 시 필요한 권한은?
A7. Azure File Data SMB Share Contributor
Q8. NSG에서 445/TCP Outbound를 차단하면 어떤 현상이 발생하나요?
A8. Azure File 마운트 실패
Q9. Private DNS Zone과 AKS VNet을 연결하는 기능은?
A9. VNet Link
Q10. Private Endpoint의 IP는 Public IP인가 Private IP인가?
A10. Private IP
Q11. Azure File의 대상 서브 리소스 이름은?
A11. file
Q12. Azure File Storage 성능 옵션 중 SSD 기반은 무엇인가요?
A12. Premium
Q13. Azure File을 AKS에서 사용하기 위해 필요한 드라이버는?
A13. azurefile-csi-driver
Q14. Storage Account Key를 Kubernetes에서 관리하려면 무엇으로 저장하나요?
A14. Secret
Q15. Private Endpoint가 DNS에 등록되지 않으면 어떤 문제가 발생하나요?
A15. FQDN이 Public IP로 해석되어 연결 실패
Q16. On-prem 환경에서 Azure File에 접근하려면 어떤 연결 방식이 필요한가요?
A16. ExpressRoute 또는 VPN Gateway
Q17. Azure File은 기본적으로 어떤 포트 범위를 사용하나요?
A17. TCP 445
Q18. Azure File 방화벽에서 허용할 수 있는 네트워크 옵션은?
A18. 선택한 네트워크 또는 모든 네트워크 허용
Q19. Private Endpoint 생성 시 스토리지 계정 내에서 지정해야 하는 대상 리소스는?
A19. file sub-resource
Q20. Kubernetes PV/PVC에서 Azure File 사용 시 secretName은 어떤 용도로 쓰이나요?
A20. Storage Account Key 참조
Q21. Private DNS Zone에서 A 레코드에 등록되는 값은?
A21. Private Endpoint의 Private IP
Q22. Azure File에서 SMB 대신 NFS를 사용하려면 어떤 조건이 필요한가요?
A22. Premium 계정 및 NFS 공유 활성화
Q23. NSG에서 Inbound SMB 규칙을 설정하는 경우는?
A23. 특정 SMB 클라이언트에서 직접 접근해야 할 때
Q24. PV/PVC 바인딩이 실패하는 이유 중 네트워크 관련 원인은?
A24. DNS 해석 실패, 포트 차단, VNet 연결 문제
Q25. Azure File CSI Driver에서 사용하는 마운트 명령어 계열은?
A25. mount.cifs
Q26. Private Endpoint 사용 시 Public Endpoint를 비활성화하는 이유는?
A26. 보안 강화
Q27. Azure File 성능 문제 시 먼저 확인해야 하는 네트워크 요소는?
A27. SMB 포트 상태, 네트워크 대역폭
Q28. Private DNS Zone 연결이 끊어졌을 때 발생하는 현상은?
A28. 스토리지 이름이 Public IP로 해석되어 연결 불가
Q29. Storage Account Key 방식과 Azure AD 방식 중 더 보안적인 방법은?
A29. Azure AD 기반 인증
Q30. Azure File CSI Driver는 어떤 표준을 기반으로 동작하나요?
A30. Container Storage Interface (CSI)
Q31. Azure File에서 SMB 3.0을 사용하는 이유는?
A31. 데이터 전송 암호화와 성능 향상을 위해.
Q32. Azure File Private Endpoint가 연결된 VNet에서 DNS를 관리하려면 어떤 리소스가 필요하나요?
A32. Azure Private DNS Zone.
Q33. Azure File과 NFS 프로토콜을 사용하려면 어떤 계정 종류가 필요하나요?
A33. Premium Storage 계정.
Q34. Azure File 접근 시 SMB 포트가 막혀 있으면 어떤 에러가 발생하나요?
A34. 마운트 실패 (Timeout 또는 Permission denied).
Q35. Private Endpoint와 Public Endpoint를 동시에 사용할 수 있나요?
A35. 가능하지만 보안상 비권장.
Q36. PV/PVC가 Pending 상태에서 바인딩되지 않을 때 네트워크 측 원인은?
A36. DNS 해석 실패, 포트 차단, 스토리지 방화벽 설정 오류.
Q37. AKS에서 Azure File을 사용하기 위해 필요한 Kubernetes 객체는?
A37. Secret, PV, PVC.
Q38. Azure File CSI Driver 설치는 Helm과 어떤 명령을 통해서도 가능한가요?
A38. kubectl apply -f 매니페스트.
Q39. Azure File에 접근하는 SMB 세션은 어떤 수준에서 암호화되나요?
A39. 전송 계층에서 SMB 3.0 암호화.
Q40. Storage Account에서 특정 VNet만 허용하려면 어떤 설정을 변경해야 하나요?
A40. 네트워크 방화벽 규칙.
Q41. Private Endpoint 연결이 올바르게 되었는지 확인하는 명령은?
A41. nslookup {storageaccount}.file.core.windows.net
Q42. Azure File Storage에서 Outbound 445 허용이 필요한 주체는?
A42. AKS 노드.
Q43. Private DNS Zone을 AKS VNet에 연결하지 않으면 어떤 경로로 연결을 시도하나요?
A43. Public IP 경로.
Q44. Azure File CSI Driver에서 secretNamespace는 무엇을 의미하나요?
A44. Secret이 존재하는 네임스페이스.
Q45. Azure File SMB 연결 시 OS 측에서 필요한 패키지는?
A45. cifs-utils.
Q46. Azure File 접근 시 Storage Account Key를 노출하지 않으려면 어떤 인증을 사용하나요?
A46. Azure AD 기반 인증.
Q47. Managed Identity로 Azure File에 접근하려면 어떤 역할을 부여해야 하나요?
A47. Storage File Data SMB Share Contributor.
Q48. Azure File 마운트 시 SMB 버전을 지정하려면 mount 옵션에 무엇을 추가하나요?
A48. vers=3.0.
Q49. Azure File에 연결하는 Private Endpoint는 Storage Account에서 어떤 리소스 유형으로 생성하나요?
A49. file sub-resource.
Q50. SMB 3.0은 어떤 환경에서만 사용할 수 있나요?
A50. Windows 8/Server 2012 이상 또는 최신 Linux 커널.
Q51. Azure File 마운트 시 vers=2.1을 사용하면 어떤 문제가 발생할 수 있나요?
A51. 암호화 지원 안됨, 연결 거부 가능.
Q52. Private Endpoint 생성 시 자동으로 생성되는 DNS 레코드는 무엇인가요?
A52. A 레코드 (Private IP).
Q53. Azure File 성능이 느릴 때 가장 먼저 확인해야 하는 네트워크 요소는?
A53. 대역폭과 SMB 포트 상태.
Q54. Storage Account 방화벽에서 "선택한 네트워크" 옵션을 쓰면 필요한 것은?
A54. 허용할 VNet/Subnet 지정.
Q55. Azure File NFS 연결 시 SMB 포트는 열 필요가 있나요?
A55. 필요 없음 (2049/TCP 사용).
Q56. PV/PVC를 정의할 때 storageClassName을 지정하지 않으면 어떻게 되나요?
A56. Default StorageClass 사용.
Q57. Azure File CSI Driver의 주요 기능은?
A57. Kubernetes에서 Azure File 스토리지를 PV/PVC로 마운트.
Q58. Private Endpoint 연결 상태를 확인하는 Azure CLI 명령은?
A58. az network private-endpoint-connection list
Q59. Azure File 공유의 최대 크기는 얼마인가요?
A59. Standard: 100TiB, Premium: 100TiB.
Q60. Kubernetes에서 Azure File을 사용하려면 cifs-utils 외에 필요한 네트워크 구성은?
A60. NSG 445 허용, Private DNS Zone 연결, Storage 방화벽 허용.
Q61. Azure File CSI Driver 매니페스트의 mountOptions 항목에 지정할 수 있는 예시 옵션은?
A61. dir_mode=0777,file_mode=0777,vers=3.0.
Q62. Azure File 접근 시 Outbound 445가 차단되면 kubectl describe에서 어떤 에러를 볼 수 있나요?
A62. "mount failed: could not connect to host".
Q63. Azure File을 Private Endpoint로 연결할 경우 Public IP 경로를 차단하는 방법은?
A63. Storage Account에서 "공용 네트워크 액세스"를 차단.
Q64. Azure File을 AKS에서 사용할 때 Managed Identity 인증이 유리한 이유는?
A64. 키 관리 불필요, 보안성 강화.
Q65. Azure File CSI Driver가 사용하는 Container Storage Interface 표준의 주요 목적은?
A65. 다양한 스토리지를 Kubernetes에 통합.
Q66. Azure File Storage에서 NFS를 사용하면 SMB 포트 대신 어떤 포트를 열어야 하나요?
A66. TCP 2049.
Q67. Private DNS Zone 없이도 Azure File Private Endpoint에 접근할 수 있는 방법은?
A67. /etc/hosts 파일에 Private IP 직접 매핑.
Q68. Storage Account Key 인증을 사용할 경우 키가 유출되면 어떤 위험이 있나요?
A68. 전체 스토리지 계정 접근 가능.
Q69. Azure File 연결 테스트를 위해 Linux에서 사용할 수 있는 명령어는?
A69. smbclient 또는 mount -t cifs.
Q70. Kubernetes에서 Secret을 base64로 인코딩하는 이유는?
A70. YAML 내에 바이너리 데이터를 안전하게 저장하기 위해.