.NET 자습서 - Azure에 마이크로 서비스 배포
시작
목적
.NET 및 Docker로 빌드된 마이크로 서비스를 Microsoft Azure에 배포하는 방법을 알아보세요.
필수 구성 요소
Required: 이 자습서에서는 First Microservice 자습서에서 만든 앱을 사용합니다.
필수: Docker Hub 계정.
완료 시간
15-20분
시나리오
DockerHub 및 AKS(Azure Kubernetes Service)를 사용하여 이전에 만든 마이크로 서비스를 Azure에 배포합니다.
Docker Hub 푸시
Docker Hub는 Docker 이미지를 업로드하는 중앙 위치입니다. Microsoft Azure를 비롯한 많은 제품은 Docker Hub에서 이미지를 기반으로 컨테이너를 만들 수 있습니다.
Docker Hub에 로그인
명령 프롬프트에서 다음 명령을 실행합니다.
터미널에서 다음 명령을 실행합니다.
docker login
이전 자습서에서 Docker를 다운로드할 때 생성한 사용자 이름과 암호를 사용합니다. 필요한 경우 Docker Hub 웹사이트를 방문하여 암호를 다시 설정할 수 있습니다.
Docker Hub에 이미지 업로드
사용자 이름 아래에 Docker 이미지의 태그를 다시 지정(이름 바꾸기)하고 다음 명령을 사용하여 Docker Hub로 푸시합니다.
docker tag mymicroservice [YOUR DOCKER USERNAME]/mymicroservice
docker push [YOUR DOCKER USERNAME]/mymicroservice
push 명령은 이미지를 Docker Hub에 업로드하는데 다소 시간이 걸릴 수 있습니다.
Azure 도구 설정
Azure 계정 만들기
Azure를 처음 사용하는 경우 무료 계정을 만들 수 있습니다. 기존 계정이 있는 경우 이 단계를 건너뛸 수 있습니다.
무료 Azure 계정 만들기Azure CLI 설치
Azure CLI는 Azure 계정을 관리하기 위한 도구를 제공합니다.
Azure에 로그인
설치한 후 새 명령 프롬프트를 열고 다음 명령을 실행하여 Azure 계정에 로그인합니다.
설치한 후에는 새 터미널을 열고 다음 명령을 실행하여 Azure 계정에 로그인합니다.
az login
AKS CLI 설치
Kubernetes는 컨테이너 오케스트레이션 플랫폼입니다. 오케스트레이터는 컨테이너 컬렉션으로 구성된 앱을 실행, 배포, 크기 조정 및 복구하는 역할을 담당합니다. AKS(Azure Kubernetes Service)는 Kubernetes를 관리형 서비스로 제공합니다.
다음 명령을 실행하여 AKS용 명령줄 도구를 설치합니다.
az aks install-cli
시스템 PATH 변수를 설정하라는 경고가 표시될 수 있습니다. 이 자습서에서는 필요하지 않습니다.
Azure 리소스 만들기
리소스 그룹 만들기
리소스 그룹은 단일 앱과 관련된 리소스 집합을 구성하는 데 사용됩니다.
다음 명령을 실행하여 미국 서부 지역에 리소스 그룹을 만듭니다.
az group create --name MyMicroserviceResources --location westus
이전 명령에서 다른 위치를 사용하려는 경우 다음 명령을 실행하여 계정에서 사용할 수 있는 지역을 확인하고 더 가까운 지역을 선택할 수 있습니다.
az account list-locations -o table
세션에 다른 구독을 사용하려면 다음 명령을 실행하여 모든 구독 목록을 가져올 수 있습니다.
az account list --all
그런 다음, 다음 명령을 실행하여 세션에 대한 특정 구독을 설정할 수 있습니다.
az account set -s NAME_OR_ID
AKS 클러스터 만들기
리소스 그룹에서 AKS 클러스터를 만들려면 다음 명령을 실행합니다.
이 명령을 완료하는 데 몇 분이 걸리는 것은 정상입니다.
az aks create --resource-group MyMicroserviceResources --name MyMicroserviceCluster --node-count 1 --enable-addons http_application_routing --generate-ssh-keys
다음 명령을 실행하여 AKS 클러스터에 배포할 자격 증명을 다운로드합니다.
az aks get-credentials --resource-group MyMicroserviceResources --name MyMicroserviceCluster
Azure에 배포
앱 디렉터리로 돌아가기
이전 단계에서 새 명령 프롬프트를 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
이전 단계에서 새 터미널을 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
cd MyMicroservice
배포 파일 만들기
AKS 도구는 .yaml
파일을 사용하여 컨테이너 배포 방법을 정의합니다.
다음 명령을 사용하여 deploy.yaml
라는 파일을 만듭니다.
touch deploy.yaml
fsutil file createnew deploy.yaml 0
그런 다음 좋아하는 텍스트 편집기에서 열 수 있습니다.
그런 다음, 즐겨 찾는 텍스트 편집기에서 수동으로 열거나 다음 명령을 사용하여 열 수 있습니다.
open deploy.yaml
start deploy.yaml
텍스트 편집기에서 deploy.yaml
콘텐츠를 다음과 같이 바꾸고 [YOUR DOCKER ID]를 실제 Docker ID로 바꿉니다.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mymicroservice
spec:
replicas: 1
template:
metadata:
labels:
app: mymicroservice
spec:
containers:
- name: mymicroservice
image: [YOUR DOCKER ID]/mymicroservice:latest
ports:
- containerPort: 80
env:
- name: ASPNETCORE_URLS
value: http://*:80
selector:
matchLabels:
app: mymicroservice
---
apiVersion: v1
kind: Service
metadata:
name: mymicroservice
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: mymicroservice
배포 실행
다음 명령을 실행하여 deploy.yaml
설정에 따라 마이크로 서비스를 배포합니다.
kubectl apply -f deploy.yaml
배포된 서비스 테스트
다음 명령을 실행하여 배포된 서비스의 세부 정보를 확인합니다.
kubectl get service mymicroservice --watch
무엇보다도 이전 명령은 서비스를 사용할 수 있는 외부 IP 주소(EXTERNAL-IP)를 표시합니다.
외부 IP 주소를 사용하여 새 브라우저 창을 열고 http://[YOUR EXTERNAL IP ADDRESS]/weatherforecast로 이동합니다.
EXTERNAL-IP가 <pending>
으로 표시된 경우 외부 IP가 할당되면 새 줄이 자동으로 나타납니다.
명령 프롬프트에서 CTRL+C를 눌러 kubectl get service
명령을 종료합니다.
터미널에서 CTRL+C를 눌러 kubectl get service
명령을 종료합니다.
축하합니다! Azure에 마이크로 서비스를 배포했습니다.
서비스 크기 조정
Kubernetes 사용의 이점은 배포를 여러 인스턴스로 쉽게 확장하여 추가 로드를 처리할 수 있다는 것입니다. 현재는 단일 인스턴스만 있으므로 두 개의 인스턴스로 확장해 보겠습니다.
다음 명령을 실행하여 서비스를 최대 두 개의 인스턴스로 확장합니다.
kubectl scale --replicas=2 deployment/mymicroservice
리소스 정리
마이크로 서비스 테스트가 완료되면 다음 명령을 사용하여 만든 모든 리소스를 삭제할 수 있습니다.
az group delete -n MyMicroserviceResources
다음 단계
다음 리소스는 .NET으로 마이크로 서비스를 계속 탐색하는 데 도움이 됩니다.
초보자용 마이크로서비스
Nish가 마이크로서비스 개념을 안내하고 .NET에서 첫 번째 마이크로서비스 엔드포인트를 빌드하는 방법을 설명합니다.
귀하는 다음 항목에도 또한 관심이 있을 수 있습니다...