참고 자료: https://learn.microsoft.com/ko-kr/azure/aks/tutorial-kubernetes-prepare-app
Azure의 Kubernetes 자습서 - 애플리케이션 준비 - Azure Kubernetes Service
이 AKS(Azure Kubernetes Service) 자습서에서는 Docker Compose를 사용하여 AKS에 배포할 수 있는 다중 컨테이너 앱을 준비하고 빌드하는 방법을 알아봅니다.
learn.microsoft.com
실습을 위한 준비물로 docker를 실행시켜 줘야한다.
이제 시작을 해보자.
github에서 실습할 소스코드를 clone한다.
소스 코드를 보면 docker-compose.yaml이 있는데 이것을 통해 이미지를 다운받고 컨테이너를 실행시킨다.
이 이미지를 이후에 acr에 push하고 aks에서 빌드할 것이다.
아래는 docker-compsoe.yaml파일이다 수정할 것은 없다.
위의 docker-compose명령어를 사용해 이미지를 다운받고 모든 서비스 컨테이너를 한 번에 생성하고 실행한다.
docker-compose: sample에는 이미지가 2개다. docker이미지가 여러개 있을 때 조금 더 빠르고 손 쉽게 할 수있는 명령툴이다.
컨테이너를 실행시켰으므로 아래와 같이 로컬에서 화면을 띄울 수도 있다.
이제 소스코드는 모두 준비되었다.
ACR을 생성해보자.
Azure portal에 접속한다.
ACR을 생성하려면 12개월 무료체험 버전으로 회원가입해야한다.
AWS 무료체험버전으로 공부하다가 과금된 사람을 옆에서 봐서 사용하기 무섭긴하지만 도전해봤다!
Microsoft Azure
portal.azure.com
'컨테이너 레지스트리'에 들어간다.
'컨테이너 레지스트리 만들기' 버튼을 클릭한다.
아래의 이미지 첨부대로 컨테이너 레지스트리를 만든다.
컨테이너 레지스트리가 생성되었다.
다음 순서는 일단 따라와봐라.
위에 적힌 순서대로 3부터 시작해보겠다.
- 지금 만든 ACR에 로그인
- ACR에 로컬에 있는 이미지를 푸시
ACR에 로그인
Username과 Password는 ACR의 액세스 키에서 취득할 수 있다.
아래의 '사용자 이름'과 'password'를 차례로 입력한다.
로그인까지 완료했다.
docker images ls 명령어를 입력하면 아래와 같이 로컬에 생성된 이미지를 확인할 수 있다.
로컬의 레지스토리를 업로드하도록 이미지에 태그를 지정한다.
그리고 ACR에 이미지를 push해준다.
portal의 레지스토리를 들어가보면 방금 올려준 repository가 올라간 것을 확인할 수 있다.
아까 설명한 대로 이미지는 2개다. front와 back으로 이미지는 두개로 나누어져 있다. front을 올려줬으니 이번에는 back을 올려보자.
back의 IMAGE ID이다.
푸시할 이미지를 태깅하고 ACR에 추가해준다.
아래와 같이 front와 back이 잘 올라건 것을 확인할 수 있다.
이제 AKS를 생성해보자.
Azure portal에서 'Kubernetes 서비스'를 클릭한다.
'Kubernetes 클러스터 만들기'를 클릭한다.
클러스터란 말 많이 들어봤는데 이게 뭘까?
각기 다른 서버들을 하나로 묶어서 하나의 시스템같이 동작하게 함으로써, 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말한다.
아래의 순서대로 클러스터를 생성한다.
노드의 개수는 worker node를 가리킨다.(이것때문에 문제가 발생한다)
아래와 같이 '배포하지 못했습니다.'라는 alert창이 표시된다.
내용은 대략 Current Limit은 4인데, 추가적으로 12가 필요하다는 말이다. 뭐가 12인건지 모르겠지만 아래의 링크에 들어가서 설정을 늘려라고한다.
페이지에 들어가서 설정을 늘릴려고 하는데 한참 걸린다. 이게 다른 지역에서 빼와서 채워줘야하는 거여서 오래걸린다고 한다.
결국 실패했다. 좀 더 알아보려 했지만 node 풀을 1개로 줄이는 것으로 타협했다.
일단 나는 뭔가 잘못했다가 과금되기도 무섭고 내 목표는 aks의 아키텍처를 이해하는 것이니까.
node풀을 줄여서 그런가 간소화 보기에서 방금 생성한 클러스터를 확인할 수 있었다.
이제는 노드에 pod를 배포한다고 강사님이 말하는데
음..클러스터에 이미지를 배포하는 거 아닌가?
내가 방금 만든거는 클러스터고 acr(대략 이미지 저장소)를 만들었으니
클러스터와 직접 상호작용하기 위해 연결하도록 한다.
로컬에서 az명령어를 쓰기 위해서는 아래 링크로 들어가 Azure CLI를 설치하도록 한다.
https://learn.microsoft.com/ko-kr/cli/azure/install-azure-cli
Azure CLI를 설치하는 방법
Azure CLI는 Windows, macOS 및 Linux 환경에 설치할 수 있습니다. Docker 컨테이너와 Azure Cloud Shell에서도 실행할 수 있습니다.
learn.microsoft.com
az에 로그인한다.
az login
클러스터 연결을 위해 자격증명을 다운하고 kubectl을 구성한다.
클러스터에 대한 연결을 확인한다. 클러스터 노드 목록을 확인할 수 있다.
github에서 클론받은 폴더 안에 azure-vote-all-in-one-redis.yaml이라는 파일이 있다.
이것을 사용해 애플리케이션을 실행하는데 필요한 모든 개체를 만들고 배포를 한다.
수정해주어야할 부분은 아래의 image의 저장소를 내가 만들어준 acr로 변경해야 한다.
image주소가 없으면 docker hub에서 directly하게 가지고 오는데 우리가 선언한 ACR에서 가지고 와야하므로 ACR에 대한 정보를 이곳에 넣어준다.
portal에 ACR에 들어가서 'azure-vote-front'를 클릭한다.
'lastest'를 클릭한다.
아래의 Docker 풀 명령의 값을 yaml파일에 넣어준다.
백엔드(redis)도 똑같이 해주면 된다.
이제 yaml파일은 만들어졌다.
kubectl apply 명령어를 사용하여 애플리케이션을 배포한다.
아래와 같이 파드와 서비스가 돌아가면 성공한 것이다.
서비스 타입은 ClusterIP, LoadBalancer타입이 있다.
ClusterIP는 각각의 서비스끼리 내부연결을 해서 사용할 때 사용한다.
LoadBalancer타입은 외부 expose로써 바로 사용할 수 있다 외부 public ip가 만들어진다.
위의 EXTERNAL-IP로 들어가면 배포한 화면을 확인할 수 있다.
'Microsoft' 카테고리의 다른 글
AKS(Azure Kubernetes Service) 이론 (0) | 2023.02.05 |
---|---|
Teams Desktop Application에서 로그인 팝업창 띄우기 (0) | 2022.06.14 |
Teams Desktop Application에서 개발자 도구 사용하기 (0) | 2022.06.14 |