Azure Security

Azure Computing (1) AKS와 ACR

마띠(쥔장) 2025. 4. 4. 06:07

클라우드 환경에서 컨테이너를 효과적으로 운영하려면 컨테이너 오케스트레이션이미지 관리가 핵심이다. Azure에서는 이를 위해 Azure Kubernetes Service(AKS)와 Azure Container Registry(ACR) 서비스를 제공한다. 이 글에서는 AKS와 ACR이 무엇인지, 그리고 이 둘이 어떻게 함께 동작하는지 설명해보겠다.

출처: https://stacksimplify.com/azure-aks/azure-container-registry-attach-to-aks/

Azure Kubernetes Services(AKS)란?

AKS는 Kubernetes를 Azure에서 쉽게 사용할 수 있도록 관리형 서비스로 제공하는 것이다. Kubernetes는 컨테이너화된 애플리케이션을 배포하고 관리하는 강력한 오픈소스 플랫폼인데, 직접 설정하려면 복잡한 구성과 관리가 필요하다. AKS는 이런 복잡함을 줄이고, Azure에서 클릭 몇 번만으로 Kubernetes 클러스터를 설정하고 운영할 수 있도록 지원한다.

  • 관리형 K8S: 클러스터 설치, 업그레이드, 패치 적용을 Azure가 대신 처리
  • 자동 확장: 트래픽이 증가하면 자동으로 노드를 추가하고 감소하면 제거
  • 통합 보안: Azure AD 인증, 네트워크 정책, RBAC 등을 통한 보안 강화
  • CI/CD 연동: GitHub Actions, Azure DevOps 등을 사용해 자동 배포 가능

어떤 회사가 웹 애플리케이션을 운영한다고 가정하자. 이 회사는 Docker 컨테이너로 웹 애플리케이션을 만들었고, 이를 수십 개의 서버에서 실행해야 한다. 만약 직접 컨테이너를 하나하나 배포하고 관리하면 매우 비효율적이다. AKS를 사용하면 컨테이너를 쉽게 배포하고, 트래픽이 많을 때는 자동으로 확장하며, 장애가 발생하면 자동으로 복구할 수 있다. 즉, 운영 부담을 줄이고 안정성을 높일 수 있는 것이다.

Azure Container Registry(ACR)란?

ACR은 Azure에서 제공하는 컨테이너 이미지 저장소이다. Kubernetes 같은 환경에서 컨테이너를 배포하려면 컨테이너 이미지가 필요하다. 이 이미지를 저장하고 관리하는 것이 ACR의 역할이다.

  • 프라이빗 저장소: 퍼블릭 Docker Hub와 달리, 기업 전용 컨테이너 이미지 저장 및 안전한 이미지 배포 가능
  • 이미지 빌드 & 서명: Azure에서 직접 이미지 빌드 및 보안 서명 지원
  • Geo-Replication: 여러 지역에서 빠르게 이미지를 제공할 수 있도록 지원

개발팀이 웹 애플리케이션을 컨테이너화하여 배포한다고 해보자. 일반적으로 Docker Hub에 올릴 수도 있지만, 보안과 성능을 고려하면 기업 내부용 프라이빗 저장소가 더 유리하다. ACR을 사용하면 내부에서 만든 컨테이너 이미지를 안전하게 저장하고, 필요할 때 빠르게 AKS로 배포할 수 있다. 또한, 특정 지역에 배포할 때도 Geo-Replication 기능을 사용하면 가까운 지역의 ACR에서 이미지를 가져올 수 있어 속도가 빨라진다.

AKS와 ACR은 어떤 관계일까?

보통 AKS를 사용할 때 컨테이너 이미지는 ACR에서 가져온다. 하지만 기본적으로 AKS는 ACR에 접근할 권한이 없기 때문에, 연결 설정을 해줘야 한다. 이 때 IAM에서 설명했던 Managed Identity나 Service Principal이 사용된다. 

  •  Managed Identity 사용
# AKS가 ACR에 접근할 수 있도록 권한 부여
az aks update -n <AKS_이름> -g <리소스 그룹> --attach-acr <ACR_이름>
  • Service Principal 사용

AKS 클러스터를 생성할 때 Service Principal을 만들고, ACR에 권한을 할당하는 방식이다.

# AKS 클러스터의 Service Principal에 ACR 권한 부여
az role assignment create --assignee <SP_ID> --scope <ACR_ID> --role acrpull
728x90