애플리케이션 배포
이 문서에서는 Kubernetes 클러스터에 컨테이너화된 애플리케이션을 배포하는 방법을 설명합니다.
사전 요구 사항
시작하려면 단일 머신 Kubernetes 또는 전체 Kubernetes 클러스터를 설정합니다.
샘플 Linux 애플리케이션 배포
1단계: 매니페스트 파일 업데이트
이 문서에서는 Microsoft의 azure-vote-front 이미지를 기반으로 하는 프런트 엔드와 백 엔드로 구성된 간단한 투표 앱인 샘플 애플리케이션을 사용합니다. 이 애플리케이션의 컨테이너 이미지는 ACR(Azure Container Registry)에서 호스트됩니다. 배포 매니페스트에 대한 GitHub 리포지토리 패키지의 linux-sample.yaml 을 참조하세요. YAML에서 태그를 nodeSelector
Linux로 지정했습니다.
2단계: 애플리케이션 배포
애플리케이션을 배포하려면 kubectl apply 명령을 사용합니다. 이 명령은 매니페스트 파일을 구문 분석하고 정의된 Kubernetes 개체를 만듭니다. 다음 예제와 같이 YAML 매니페스트 파일을 지정합니다.
kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml
3단계: Pod 확인
Pod가 실행 중 상태가 될 때까지 몇 분 정도 기다립니다.
kubectl get pods -o wide
4단계: 서비스 확인
진행률을 모니터링하려면 매개 변수와 함께 --watch
kubectl get services 명령을 사용합니다.
kubectl get services
처음에는 서비스의 가 EXTERNAL-IP
azure-vote-front
로 pending
표시됩니다. 주소가 EXTERNAL-IP
에서 pending
실제 공용 IP 주소로 변경되면 서비스에 할당된 IP 주소를 사용할 수 있습니다.
중요
단일 머신 클러스터에서 를 지정하지 않고 Kubernetes 클러스터를 -ServiceIPRangeSize
배포한 경우 워크로드 서비스에 대한 IP가 할당되지 않으며 외부 IP 주소가 없습니다. 이 경우 Linux VM()의 IP 주소를 찾습니다.Get-AksEdgeNodeAddr
Get-AksEdgeNodeAddr -NodeType Linux
이제 외부 포트를 VM의 IP 주소(예: 192.168.1.12:30432)에 추가할 수 있습니다.
5단계: 애플리케이션 테스트
애플리케이션이 실제로 작동하는 모습을 보려면 웹 브라우저를 서비스의 외부 IP 주소로 엽니다.
애플리케이션이 로드되지 않으면 이미지 레지스트리의 권한 부여 문제 때문일 수 있습니다. 컨테이너 상태를 보려면 kubectl get pods
명령을 사용합니다. 컨테이너 이미지를 검색할 수 없는 경우 Azure Kubernetes Service Azure Container Registry 인증을 참조하세요.
6단계: 애플리케이션 제거
클린 다음 명령을 사용하여 모든 리소스를 삭제합니다.
kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml
클러스터에 샘플 Windows 애플리케이션 배포
이 예제에서는 Microsoft의 샘플 이미지를 기반으로 샘플 ASP.NET 애플리케이션을 실행합니다.
win-sample.yaml을 참조하세요. YAML은 태그를 nodeSelector
Windows로 지정합니다.
1단계: YAML 매니페스트의 이름을 지정하여 애플리케이션 배포
PowerShell 창에서 YAML의 디렉터리에 있는지 확인한 다음, 다음 명령을 실행합니다.
kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml
2단계: 샘플 Pod가 실행 중인지 확인
인터넷 연결에 따라 Pod가 실행 중인 상태 도달하는 데 시간이 걸릴 수 있습니다. ASP.NET 이미지는 큽다.
kubectl get pods -o wide
3단계: 샘플 서비스가 실행 중인지 확인
kubectl get services
이 샘플은 NodePort 형식의 서비스로 배포되므로 애플리케이션이 실행 중인 Kubernetes 노드의 IP 주소를 검색한 다음 NodePort의 포트를 추가할 수 있습니다. 다음 Get-AksEdgeNodeAddr
명령을 사용하여 Kubernetes 노드의 IP를 가져옵니다.
Get-AksEdgeNodeAddr -NodeType Windows
4단계: 실행 중인 Windows 샘플 확인
웹 브라우저를 열고 NodePort 를 찾아 서비스에 액세스합니다.
5단계: 클린
클린 다음 명령을 사용하여 모든 리소스를 삭제합니다.
kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml
사용자 고유의 애플리케이션 배포
이전 단계에서는 샘플 애플리케이션을 배포하는 방법을 보여 줍니다. 고유한 애플리케이션을 배포하려면 다음을 수행합니다.
애플리케이션을 컨테이너 이미지에 패키지한 다음 선택한 Azure Container Registry 또는 컨테이너 레지스트리에 이미지를 업로드합니다. 애플리케이션의 컨테이너 이미지를 만들려면 다음 단계를 검토합니다.
AKS Edge Essentials 혼합 OS 클러스터를 사용하도록 설정합니다. 해당 OS가 있는 노드에서 Pod가 예약되었는지 확인합니다. 배포 파일에 를 추가
nodeSelector
합니다. 이 옵션은 Kubernetes에 특정 OS(운영 체제)의 노드에서 Pod를 실행하도록 지시합니다. 클러스터가 단일 OS인 경우 이 단계를 건너뛸 수 있습니다. 하지만 모범 사례를 위해 노드 선택기를 사용하여 각 배포 파일에 레이블을 지정합니다.nodeSelector: "kubernetes.io/os": linux
nodeSelector: "kubernetes.io/os": windows