팁 (조언)
이 콘텐츠는 eBook, Architecting Cloud Native .NET Applications for Azure에서 발췌한 것으로, .NET Docs 또는 오프라인에서 읽을 수 있는 다운로드 가능한 무료 PDF로 제공됩니다.
eShopOnContainers 애플리케이션은 다양한 Azure 플랫폼에 배포할 수 있습니다. AKS(Azure Kubernetes Services)에 애플리케이션을 배포하는 것이 좋습니다. Kubernetes 배포 도구인 Helm을 사용하여 배포 복잡성을 줄일 수 있습니다. 필요에 따라 개발자는 Kubernetes용 Azure Dev Spaces를 구현하여 개발 프로세스를 간소화할 수 있습니다.
Azure Kubernetes Service
AKS에서 eShop을 호스트하려면 첫 번째 단계는 AKS 클러스터를 만드는 것입니다. 이렇게 하려면 필요한 단계를 안내하는 Azure Portal을 사용할 수 있습니다. Azure CLI에서 클러스터를 만들어 RBAC(Role-Based Access Control) 및 애플리케이션 라우팅을 사용하도록 설정할 수도 있습니다. eShopOnContainers 설명서에는 고유한 AKS 클러스터를 만드는 단계가 자세히 설명됩니다. 만든 후에는 Kubernetes 대시보드에서 클러스터에 액세스하고 관리할 수 있습니다.
이제 Helm을 사용하여 eShop 애플리케이션을 클러스터에 배포할 수 있습니다.
Helm을 사용하여 Azure Kubernetes Service에 배포
Helm은 Kubernetes에서 직접 작동하는 애플리케이션 패키지 관리자 도구입니다. Kubernetes 애플리케이션을 정의, 설치 및 업그레이드하는 데 도움이 됩니다. 사용자 지정 CLI 스크립트 또는 간단한 배포 파일을 사용하여 간단한 앱을 AKS에 배포할 수 있지만 복잡한 앱은 많은 Kubernetes 개체를 포함하고 Helm의 이점을 누릴 수 있습니다.
Helm을 사용하는 애플리케이션에는 Helm 패키지의 애플리케이션 및 구성을 선언적으로 설명하는 Helm 차트라는 텍스트 기반 구성 파일이 포함됩니다. 차트는 표준 YAML 형식의 파일을 사용하여 관련 Kubernetes 리소스 집합을 설명합니다. 설명한 애플리케이션 코드와 함께 버전이 지정됩니다. Helm 차트는 설명하는 설치 요구 사항에 따라 단순 차트부터 복잡한 차트까지 다양합니다.
Helm은 Helm 차트를 사용하여 Tiller라는 서버 구성 요소에 명령어를 실행하는 명령줄 클라이언트 도구로 구성됩니다. Tiller는 Kubernetes API와 통신하여 컨테이너화된 워크로드를 올바르게 프로비전합니다. Helm은 클라우드 네이티브 컴퓨팅 파운데이션에서 유지 관리됩니다.
다음 yaml 파일은 Helm 템플릿을 제공합니다.
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.app.svc.marketing }}
labels:
app: {{ template "marketing-api.name" . }}
chart: {{ template "marketing-api.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ template "marketing-api.name" . }}
release: {{ .Release.Name }}
템플릿에서 동적 키/값 쌍 집합을 설명하는 방법을 확인합니다. 템플릿이 호출되면 중괄호로 묶인 값이 다른 yaml 기반 구성 파일에서 가져옵니다.
/k8s/helm 폴더에 eShopOnContainers의 '헬름 차트'가 있습니다. 그림 2-6에서는 애플리케이션의 다양한 구성 요소가 helm에서 배포를 정의하고 관리하는 데 사용하는 폴더 구조로 구성되는 방법을 보여 줍니다.
그림 2-6. eShopOnContainers의 헬름 폴더입니다.
각 개별 구성 요소는 helm install 명령을 사용하여 설치됩니다. eShop에는 "모두 배포" 스크립트가 포함되어 있으며, 이 스크립트는 각 구성 요소를 해당 helm 차트를 사용하여 반복적으로 처리하고 설치합니다. 결과는 팀의 모든 사용자가 한 줄 스크립트 명령을 사용하여 AKS 클러스터에 배포할 수 있는 소스 제어의 애플리케이션으로 버전이 지정된 반복 가능한 프로세스입니다.
비고
Helm 버전 3은 공식적으로 Tiller 서버 구성 요소의 필요성을 제거합니다. 이 개선 사항에 대한 자세한 내용은 Helm 3에서 Tiller가 누락된 이유는 무엇인가요?를 참조하세요.
Azure Functions 및 Logic Apps(서버리스)
eShopOnContainers 샘플에는 온라인 마케팅 캠페인 추적에 대한 지원이 포함되어 있습니다. Azure Function은 지정된 캠페인 ID에 대한 마케팅 캠페인 세부 정보를 추적하는 데 사용됩니다. 전체 마이크로 서비스를 만드는 대신 단일 Azure Function은 더 간단하고 충분합니다. Azure Functions에는 특히 Kubernetes에서 실행되도록 구성된 경우 간단한 빌드 및 배포 모델이 있습니다. 함수 배포는 ARM(Azure Resource Manager) 템플릿 및 Azure CLI를 사용하여 스크립팅됩니다. 이 캠페인 서비스는 고객에 대한 서비스가 아니며 단일 작업을 호출하므로 Azure Functions에 적합한 후보입니다. 이 함수에는 데이터베이스 연결 문자열 데이터 및 이미지 기본 URI 설정을 포함하여 최소한의 구성이 필요합니다. Azure Portal에서 Azure Functions를 구성합니다.
.NET