본문 바로가기
CSP (Cloud Service Provider)/Azure

[Azure] AKS (Azure Kubernetes Service) - (3) ACR

by BTC_SUU 2023. 8. 16.

베하! 안녕하세요~
BTC_수신자표시제한 입니다 😊

지난번에 Docker 컨테이너로 올린 web과 was를 연동해서 펫클리닉 사이트에 접속하는거까지 진행해보았습니다!

2023.07.28 - [CSP (Cloud Service Provider)/Azure] - [Azure] AKS (Azure Kubernetes Service) - (2) Web, Was 컨테이너 생성 및 연동

 

[Azure] AKS (Azure Kubernetes Service) - (2) Web, Was 컨테이너 생성 및 연동

베하! 안녕하세요~ BTC_수신자표시제한 입니다 😊 저번주에는 실습환경 구성을 했는데요! 2023.07.20 - [CSP (Cloud Service Provider)/Azure] - [Azure] AKS (Azure Kubernetes Service) - (1) 3Tier 실습 환경구성 [Azure] AKS (A

btcd.tistory.com

오늘은 지난번에 이어 컨테이너 이미지를 ACR에 올리고 그 이미지를 가지고 컨테이너를 빌드 후 연동까지 진행해보겠습니다~!


1. Azure Container Registry : ACR 생성

Azure Container Registry (ACR)는 Docker 및 Open Container Initiative (OCI) 이미지의 레지스트리로, 모든 OCI 아티팩트를 지원합니다. ACR은 컨테이너 이미지와 아티팩트를 빌드, 저장, 보안, 스캔, 복제 및 관리하는 데 사용할 수 있는 완전 관리형, 지리적으로 복제된 OCI 배포 인스턴스입니다. Azure Kubernetes Service 및 Azure Red Hat OpenShift와 같은 환경과 App Service, Machine Learning 및 Batch와 같은 Azure 서비스 간에 연결할 수 있습니다. ACR은 개인 Docker 컨테이너 이미지뿐만 아니라 Helm 차트, OCI 아티팩트 및 OCI 이미지 형식 사양에 따라 빌드된 이미지와 같은 관련 콘텐츠 형식도 처리합니다.

 

[ACR 설정]

  • 리소스 그룹 : sky-rg
  • 레지스트리 이름 : btcarc
  • SKU : 표준

arc,, 오타,,입니둥,,,ㅎㅎ

[az login && az acr 연결]

azure login 후 az acr 연결을 진행합니다. 

az login

az acr login --name <acrName>.azurecr.io

<acrName>에 해당 acr의 이름을 넣어주시면 됩니다.

 

2. 도커 이미지 ACR에 올리기

[docker commit]

docker commit을 하기 전에 컨테이너를 stop 시켜야합니다.

docker stop web
docker stop was

# 컨테이너 stop되어 있는지 확인
docker ps -a

그 다음 컨테이너를 commit 합니다.

docker commit은 Docker 컨테이너의 현재 상태를 새로운 이미지로 저장하는 명령어입니다. 

컨테이너는 파일 시스템 및 실행 환경과 같은 모든 상태를 포함하고 있으며, docker commit을 사용하여 해당 상태를 이미지로 저장하면 컨테이너에서 변경된 사항을 이미지로 고정시킬 수 있습니다.

$ docker commit [컨테이너명] [원하는 이미지명:태그]

docker commit was was:v1
docker commit web web:v1

이렇게 하고나서 docker images를 입력해보면 tag가 v1인 새로운 이미지가 생성된 것을 확인할 수 있습니다.

 

[docker tag]

Docker 이미지를 Azure Container Registry (ACR) 또는 다른 컨테이너 레지스트리에 푸시하려면 반드시 docker tag 명령을 사용해서 이미지에 새로운 태그를 추가해야 합니다. 이는 컨테이너 레지스트리에서 이미지를 구분하고 관리하기 위한 필수적인 단계입니다.

docker tag 명령을 사용하여 이미지에 새로운 태그를 부여하면, 동일한 이미지의 다른 버전이나 변종을 구분할 수 있습니다. 이러한 태그를 사용하면 동일한 이미지의 여러 버전을 저장하고 추적하는 것이 가능하며, 배포 및 롤백 등을 효율적으로 수행할 수 있습니다.

$ docker tag web:v1 <acrName>.azurecr.io/web:v1

docker tag was:v1 btcarc.azurecr.io/was:v1
docker tag web:v1 btcarc.azurecr.io/web:v1

 

이제 이 이미지를 ACR에 등록해보겠습니다!

 

[docker push]

$ docker push <acrName>.azurecr.io/web:v1

docker push btcarc.azurecr.io/was:v1
docker push btcarc.azurecr.io/web:v1

docker push 명령을 사용하여 로컬에서 빌드한 이미지를 Azure 컨테이너 레지스트리로 푸시합니다. 이렇게 함으로써 Azure에서 컨테이너 이미지를 사용할 수 있게 됩니다.

 

[docker pull]

이제 기존 존재하던 도커 이미지를 지우고 ACR에서 이미지를 받아와 해당 이미지로 컨테이너를 빌드해보겠습니다.

# 기존 이미지 삭제
$ docker rmi <acrName>.azurecr.io/web:v1

docker rmi btcarc.azurecr.io/was:v1
docker rmi btcarc.azurecr.io/web:v1

# ARC에 등록된 이미지 다운로드
$ docker pull <acrName>.azurecr.io/web:v1

docker pull btcarc.azurecr.io/was:v1
docker pull btcarc.azurecr.io/web:v1

 

이렇게 다운받은 이미지가 잘 작동하는지 확인해보겠습니다.

 

[docker run]

docker run -d --name was01 -p 8080:8080 <acrName>.azurecr.io/was:v1
docker run -d --name web01 -p 80:80 <acrName>.azurecr.io/web:v1

해당 이미지로 컨테이너가 동작하는거까지 확인했습니다!

 

3. AKS 클러스터에 대한 ACR 통합 & 익명 풀 액세스 활성화

AKS 클러스터에 대한 ACR 통합과 익명 풀 액세스 활성화는 선택 사항입니다. 

이 작업들은 AKS 클러스터에서 ACR의 이미지를 사용하려는 경우 필요합니다. 

AKS 클러스터에 대한 ACR 통합은 AKS 클러스터가 ACR에서 이미지를 다운로드 할 수 있도록 필요한 권한을 부여하는 작업입니다. 

익명 풀 액세스 활성화는 익명 사용자가 ACR에서 이미지를 다운로드 할 수 있도록 허용하는 기능입니다. 

이 작업들은 AKS 클러스터에서 ACR의 이미지를 사용하려는 경우에만 필요하며, 그렇지 않은 경우에는 수행하지 않아도 됩니다.

 

저는 AKS 클러스터의 파드에 ACR의 이미지를 사용할 것이기 때문에 해당 작업을 수행해주었습니다!

$ az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acrName>

az aks update -n btcaks -g btc-rg --attach-acr btcarc

 

그리고 익명 풀 액세스 활성화까지 해주겠습니다!

# 익명 풀 액세스 활성화
## 레지스트리를 업데이트하고 --anonymous-pull-enabled매개 변수를 전달

az acr update --name <acrName> --anonymous-pull-enabled


-----참고-----
# 비활성화
$ az acr update --name myregistry --anonymous-pull-enabled false

 

4. AKS 리소스 그룹과 Node 리소스 그룹 Peering 하기

AKS 리소스 그룹과 Node 리소스 그룹 Peering은 AKS 클러스터의 노드가 클러스터의 다른 리소스와 통신할 수 있도록 하는 데 필요합니다. AKS 클러스터를 만들 때 클러스터 리소스를 만들 리소스 그룹을 지정해야 합니다. AKS 리소스 공급자는 이 리소스 그룹 외에도 노드 리소스 그룹이라는 별도의 리소스 그룹을 만들고 관리합니다. 이 두 리소스 그룹 간의 Peering을 설정하면 노드가 클러스터의 다른 리소스와 통신할 수 있습니다. 이 작업은 AKS 클러스터의 네트워킹을 구성하는 데 필수적입니다.

 

가상네트워크 → aks-vnet → 피어링에 들어가 피어링을 추가를 합니다.

이 가상 네트워크의 피어링 링크 이름은 aks-to-node로 설정하고,

원격 가상 네트워크의 피어링 링크 이름은 aks-to-aks로 설정한 다음, 

가상 네트워크는 btc-vnet을 선택하고 저장해주시면 됩니다!


여기까지 생성한 도커 이미지를 ACR에 업로드하고 ACR에 업로드한 이미지들 받아와 컨테이너로 빌드해보았습니다.

도움이 되셨으면 좋겠습니다.😊

 

다음번엔 Web, Was의 YAML 파일 생성 & 배포를 진행해보겠습니다.
다음에 또 만나요 👋

'CSP (Cloud Service Provider) > Azure' 카테고리의 다른 글

Azure Storage  (0) 2023.08.18
[Azure] Azure Artifacts  (0) 2023.08.18
Azure DDoS 보호  (0) 2023.08.04
[Azure] Test Plans  (0) 2023.08.03
[Azure] 가용성 영역 VS 가용성 집합  (0) 2023.08.02

댓글