빠른 시작: AKS(Azure Kubernetes Service) 또는 Arc 지원 Kubernetes용 Dapr 클러스터 확장을 사용하여 애플리케이션 배포
이 빠른 시작에서는 AKS 또는 Arc 지원 Kubernetes 클러스터에서 Dapr 클러스터 확장을 사용합니다. 메시지를 생성하는 Python 애플리케이션과 메시지를 사용하고 유지하는 Node.js 애플리케이션으로 구성된 예제를 배포 hello world
합니다.
필수 구성 요소
- Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- Azure CLI 또는 Azure PowerShell 설치.
- 다음을 사용하는 AKS 클러스터:
- kubectl 이 로컬로 설치되었습니다.
리포지토리 복제
git clone
명령을 사용하여 Dapr 빠른 시작 리포지토리를 복제합니다.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
dapr-aks-extension-quickstart
디렉터리로 변경합니다.
Redis 저장소 만들기 및 구성
Azure Portal을 열어 Azure Cache for Redis 만들기 흐름을 시작합니다.
- "오픈 소스 Redis 캐시 만들기" 빠른 시작 지침에 따라 권장 정보를 입력합니다.
- 만들기를 선택하여 Redis 인스턴스 배포를 시작합니다.
리소스 정보 확인
- Redis 리소스가 배포되면 해당 개요 페이지로 이동합니다.
- 다음을 기록해 둡니다.
- 캐시 개요 페이지의 Essentials 섹션에 있는 호스트 이름입니다. 호스트 이름 형식은 다음과
xxxxxx.redis.cache.windows.net
유사합니다. - 캐시의 고급 설정 블레이드에 있는 SSL 포트입니다. 기본값은
6380
입니다.
- 캐시 개요 페이지의 Essentials 섹션에 있는 호스트 이름입니다. 호스트 이름 형식은 다음과
- 인증 블레이드로 이동하여 리소스에서 Microsoft Entra Authentication이 사용하도록 설정되어 있는지 확인합니다.
관리 ID 추가
인증 블레이드의 Microsoft Entra Authentication 사용 확인란 아래에 있는 필드에 만든 관리 ID의 이름을 필수 구성 요소로 입력합니다.
관리 ID가 Redis 사용자 할당 데이터 소유자 액세스 정책 권한으로 추가되었는지 확인합니다.
공용 네트워크 액세스 사용
이 시나리오의 경우 Redis 캐시는 공용 네트워크 액세스를 사용합니다. 이 빠른 시작을 마치면 리소스를 정리해야 합니다.
- 프라이빗 엔드포인트 블레이드로 이동합니다.
- 상단 메뉴에서 공용 네트워크 액세스 사용을 클릭합니다.
Dapr 구성 요소 구성
에서 redis.yaml
구성 요소는 AKS 클러스터에 대해 사용하도록 설정된 워크로드 ID를 사용하여 Entra ID 인증을 사용하도록 구성됩니다. 액세스 키가 필요하지 않습니다.
- name: useEntraID
value: "true"
- name: enableTLS
value: true
기본 코드 편집기에서 샘플의
deploy
디렉터리로 이동하여 엽니다redis.yaml
.자리
redisHost
표시자<REDIS_HOST>:<REDIS_PORT>
값을 Azure Portal에서 이전에 저장한 Redis 캐시 호스트 이름 및 SSL 포트로 바꿉니다.- name: redisHost value: <your-cache-name>.redis.cache.windows.net:6380
구성 적용
kubectl apply
명령을 사용하여redis.yaml
파일을 적용합니다.kubectl apply -f ./deploy/redis.yaml
kubectl get components.redis
명령을 사용하여 상태 저장소가 성공적으로 구성되었는지 확인합니다.kubectl get components.redis -o yaml
예상 출력
component.dapr.io/statestore created
Dapr 사이드카를 사용하여 Node.js 앱 배포
Node.js 앱 구성
Pod 사양에는 node.yaml
워크로드 ID를 사용하기 위해 추가된 레이블이 있습니다.
labels:
app: node
azure.workload.identity/use: "true"
디렉터리로 이동하여
deploy
엽니다node.yaml
.자리 표시자
<SERVICE_ACCOUNT_NAME>
값을serviceAccountName
만든 서비스 계정 이름으로 바꿉 있습니다.- 이 값은 페더레이션 ID 자격 증명을 만드는 데 사용한 것과 동일한 서비스 계정이어야 합니다.
구성 적용
kubectl apply
명령을 사용하여 클러스터에 Node.js 앱 배포를 적용합니다.kubectl apply -f ./deploy/node.yaml
Kubernetes 배포는 비동기이므로 다음 단계로 이동하기 전에 다음 명령을 사용하여 배포가 완료되었는지 확인합니다.
kubectl rollout status deploy/nodeapp
kubectl get svc
명령을 사용하여 서비스에 액세스합니다.kubectl get svc nodeapp
출력의
EXTERNAL-IP
를 기록해 둡니다.
Node.js 서비스 확인
를 사용하여
curl
서비스를 호출합니다EXTERNAL-IP
.curl $EXTERNAL_IP/ports
예제 출력
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
애플리케이션에 주문을 제출합니다.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
주문을 확인합니다.
curl $EXTERNAL_IP/order
예상 출력
{ "orderId": "42" }
Dapr 사이드카를 사용하여 Python 앱 배포
Python 앱 구성
Pod 사양에는 python.yaml
워크로드 ID를 사용하기 위해 추가된 레이블이 있습니다.
labels:
app: node
azure.workload.identity/use: "true"
디렉터리로 이동하여
deploy
엽니다python.yaml
.자리 표시자
<SERVICE_ACCOUNT_NAME>
값을serviceAccountName
만든 서비스 계정 이름으로 바꿉 있습니다.- 이 값은 페더레이션 ID 자격 증명을 만드는 데 사용한 것과 동일한 서비스 계정이어야 합니다.
구성 적용
kubectl apply
명령을 사용하여 Kubernetes 클러스터에 Python 앱을 배포합니다.kubectl apply -f ./deploy/python.yaml
Kubernetes 배포는 비동기이므로 다음 단계로 이동하기 전에 다음 명령을 사용하여 배포가 완료되었는지 확인합니다.
kubectl rollout status deploy/pythonapp
메시지 관찰 및 지속성 확인
이제 Node.js 및 Python 애플리케이션이 모두 배포되었으므로 메시지가 전달되는 것을 볼 수 있습니다.
kubectl logs
명령을 사용하여 Node.js 앱의 로그를 가져옵니다.kubectl logs --selector=app=node -c node --tail=-1
예상 출력
Got a new order! Order ID: 1 Successfully persisted state Got a new order! Order ID: 2 Successfully persisted state Got a new order! Order ID: 3 Successfully persisted state
를 사용하여
curl
Node.js 앱의 주문 엔드포인트를 호출하여 최신 주문을 가져옵니다.curl $EXTERNAL_IP/order
응답에 최신 JSON 출력이 표시됩니다.
리소스 정리
이 빠른 시작에서 리소스를 더 이상 사용하지 않을 경우 리소스 그룹을 제거하여 연결된 모든 리소스를 삭제할 수 있습니다.
az group delete 명령을 사용하여 리소스 그룹, 클러스터, 네임스페이스 및 모든 관련 리소스를 제거합니다.
az group delete --name MyResourceGroup
다음 단계
Azure Kubernetes Service