배포
Azure에 배포하기
Microsoft Azure에 CaseBender 배포하기
개요
이 가이드는 사전 구축된 Docker 이미지를 사용하여 Azure Container Apps 및 관리형 서비스로 Azure에 CaseBender를 배포하는 과정을 안내합니다.
사전 요구 사항
1단계: 초기 설정
Azure CLI 설치 및 구성
Copy
# Homebrew 사용
brew install azure-cli
# Azure 로그인
az login
# ACR용 Docker 구성
az acr login --name casebenderacr
프로젝트 초기화
Copy
# 변수 설정
RESOURCE_GROUP="casebender-rg"
LOCATION="eastus"
# 리소스 그룹 생성
az group create --name $RESOURCE_GROUP --location $LOCATION
# 필요한 서비스 활성화
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.Storage
2단계: Azure 인프라 설정
스토리지 계정 생성
Copy
# 스토리지 계정 생성
az storage account create \
--name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--sku Standard_LRS \
--encryption-services blob
# Blob 컨테이너 생성
az storage container create \
--name casebender \
--account-name casebenderstorage \
--auth-mode key \
--public-access off
# 스토리지 계정 키 가져오기
STORAGE_KEY=$(az storage account keys list \
--account-name casebenderstorage \
--resource-group $RESOURCE_GROUP \
--query '[0].value' -o tsv)
# 스토리지 접근용 관리형 ID 생성
az identity create \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP
# 관리형 ID 가져오기
IDENTITY_ID=$(az identity show \
--name casebender-storage-identity \
--resource-group $RESOURCE_GROUP \
--query id -o tsv)
# Storage Blob Data Contributor 역할 할당
az role assignment create \
--assignee-object-id $(az identity show --name casebender-storage-identity --resource-group $RESOURCE_GROUP --query principalId -o tsv) \
--role "Storage Blob Data Contributor" \
--scope $(az storage account show --name casebenderstorage --resource-group $RESOURCE_GROUP --query id -o tsv)
Azure Database for PostgreSQL 설정
Copy
# PostgreSQL 서버 생성
az postgres flexible-server create \
--resource-group $RESOURCE_GROUP \
--name casebender-db \
--admin-user superadmin \
--admin-password <your-secure-password> \
--sku-name Standard_B2s \
--storage-size 32 \
--version 14
# 데이터베이스 생성
az postgres flexible-server db create \
--resource-group $RESOURCE_GROUP \
--server-name casebender-db \
--database-name casebender
Azure Cache for Redis 설정
Copy
# Redis 캐시 생성
az redis create \
--resource-group $RESOURCE_GROUP \
--name casebender-redis \
--sku Basic \
--vm-size c0 \
--location $LOCATION
3단계: 컨테이너 레지스트리 생성 및 구성
Copy
# Azure Container Registry 생성
az acr create \
--resource-group $RESOURCE_GROUP \
--name casebenderacr \
--sku Standard \
--admin-enabled true
# 레지스트리 자격 증명 가져오기
ACR_USERNAME=$(az acr credential show --name casebenderacr --query username -o tsv)
ACR_PASSWORD=$(az acr credential show --name casebenderacr --query "passwords[0].value" -o tsv)
# CaseBender 이미지 가져오기
docker pull casebender/casebender:latest
docker pull casebender/workflow-processor:latest
docker pull casebender/misp-processor:latest
# ACR용 이미지 태그 지정
docker tag casebender/casebender:latest casebenderacr.azurecr.io/casebender/app:latest
docker tag casebender/workflow-processor:latest casebenderacr.azurecr.io/casebender/workflow-processor:latest
docker tag casebender/misp-processor:latest casebenderacr.azurecr.io/casebender/misp-processor:latest
# ACR에 이미지 푸시
docker push casebenderacr.azurecr.io/casebender/app:latest
docker push casebenderacr.azurecr.io/casebender/workflow-processor:latest
docker push casebenderacr.azurecr.io/casebender/misp-processor:latest
4단계: 서비스 배포
Container Apps 환경 생성
Copy
# Container Apps 환경 생성
az containerapp env create \
--name casebender-env \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
# 메인 애플리케이션 생성
az containerapp create \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/app:latest \
--target-port 3000 \
--ingress external \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--user-assigned-identity $IDENTITY_ID \
--env-vars \
AUTH_SECRET=<your-auth-secret> \
AUTH_SALT=<your-auth-salt> \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>" \
AZURE_STORAGE_ACCOUNT="casebenderstorage" \
AZURE_STORAGE_CONTAINER="casebender" \
AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=casebenderstorage;AccountKey=${STORAGE_KEY};EndpointSuffix=core.windows.net"
# 워크플로우 프로세서 생성
az containerapp create \
--name workflow-processor \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/workflow-processor:latest \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--min-replicas 1 \
--max-replicas 1 \
--env-vars \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>"
# MISP 프로세서 생성
az containerapp create \
--name misp-processor \
--resource-group $RESOURCE_GROUP \
--environment casebender-env \
--image casebenderacr.azurecr.io/casebender/misp-processor:latest \
--registry-server casebenderacr.azurecr.io \
--registry-username $ACR_USERNAME \
--registry-password $ACR_PASSWORD \
--min-replicas 1 \
--max-replicas 1 \
--env-vars \
POSTGRES_PRISMA_URL="postgresql://superadmin:<password>@casebender-db.postgres.database.azure.com:5432/casebender" \
REDIS_URL="redis://casebender-redis.redis.cache.windows.net:6380?ssl=true&password=<redis-key>"
5단계: Azure Front Door 설정
Copy
# Front Door 프로필 생성
az afd profile create \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--sku Standard_AzureFrontDoor
# 엔드포인트 생성
az afd endpoint create \
--endpoint-name casebender \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
# 오리진 그룹 생성
az afd origin-group create \
--origin-group-name casebender-origin-group \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--probe-path "/" \
--probe-protocol Http \
--probe-request-type GET
# 오리진 추가
az afd origin create \
--origin-group-name casebender-origin-group \
--origin-name casebender-origin \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--host-name <your-container-app-url> \
--origin-host-header <your-container-app-url> \
--priority 1 \
--weight 1000 \
--enabled-state Enabled
6단계: 사용자 정의 도메인 구성 (선택 사항)
Copy
# Front Door에 사용자 정의 도메인 추가
az afd custom-domain create \
--custom-domain-name casebender-domain \
--host-name your-domain.com \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP \
--minimum-tls-version TLS12
# HTTPS 활성화
az afd custom-domain enable-https \
--custom-domain-name casebender-domain \
--profile-name casebender-afd \
--resource-group $RESOURCE_GROUP
모니터링 및 유지 관리
Application Insights 설정
Copy
# Application Insights 생성
az monitor app-insights component create \
--app casebender-insights \
--location $LOCATION \
--resource-group $RESOURCE_GROUP \
--application-type web
# 계측 키 가져오기
az monitor app-insights component show \
--app casebender-insights \
--resource-group $RESOURCE_GROUP \
--query instrumentationKey \
--output tsv
경고 구성
Copy
# 작업 그룹 생성
az monitor action-group create \
--name casebender-alerts \
--resource-group $RESOURCE_GROUP \
--action email admin email@yourdomain.com
# 경고 규칙 생성
az monitor metrics alert create \
--name "high-cpu-usage" \
--resource-group $RESOURCE_GROUP \
--scopes <container-app-resource-id> \
--condition "avg CPU > 80" \
--window-size 5m \
--evaluation-frequency 1m \
--action <action-group-id>
로그 보기
Copy
# 컨테이너 앱 로그 보기
az containerapp logs show \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--follow
확장 구성
Copy
# 확장 규칙 구성
az containerapp update \
--name casebender-app \
--resource-group $RESOURCE_GROUP \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 50
백업 및 재해 복구
데이터베이스 백업 구성
Copy
# 자동 백업 활성화
az postgres flexible-server update \
--resource-group $RESOURCE_GROUP \
--name casebender-db \
--backup-retention 7
지리적 복제 구성
Copy
# 보조 지역 리소스 생성
az postgres flexible-server replica create \
--name casebender-db-secondary \
--source-server casebender-db \
--resource-group $RESOURCE_GROUP \
--location westus
보안 모범 사례
- 모든 서비스에 Azure Defender 활성화
- Azure Private Link 구현
- 관리형 ID 사용
- 정기적인 보안 평가
- 진단 로깅 활성화
비용 최적화
- Container Apps에 소비 계획 사용
- 자동 확장 규칙 구현
- 적절한 서비스 계층 선택
- 사용 패턴 모니터링
- Azure Reserved Instances 사용
다음 단계
- Azure DevOps로 CI/CD 설정
- 종합적인 모니터링 구현
- 재해 복구 구성
- 보안 규정 준수 검토
이 페이지에서
- 개요
- 사전 요구 사항
- 1단계: 초기 설정
- Azure CLI 설치 및 구성
- 프로젝트 초기화
- 2단계: Azure 인프라 설정
- 스토리지 계정 생성
- Azure Database for PostgreSQL 설정
- Azure Cache for Redis 설정
- 3단계: 컨테이너 레지스트리 생성 및 구성
- 4단계: 서비스 배포
- Container Apps 환경 생성
- 5단계: Azure Front Door 설정
- 6단계: 사용자 정의 도메인 구성 (선택 사항)
- 모니터링 및 유지 관리
- Application Insights 설정
- 경고 구성
- 로그 보기
- 확장 구성
- 백업 및 재해 복구
- 데이터베이스 백업 구성
- 지리적 복제 구성
- 보안 모범 사례
- 비용 최적화
- 다음 단계
어시스턴트
Responses are generated using AI and may contain mistakes.