애플리케이션 배포

이 문서에서는 Kubernetes 클러스터에 컨테이너화된 애플리케이션을 배포하는 방법을 설명합니다.

사전 요구 사항

시작하려면 단일 머신 Kubernetes 또는 전체 Kubernetes 클러스터를 설정합니다.

샘플 Linux 애플리케이션 배포

1단계: 매니페스트 파일 업데이트

이 문서에서는 Microsoft의 azure-vote-front 이미지를 기반으로 하는 프런트 엔드와 백 엔드로 구성된 간단한 투표 앱인 샘플 애플리케이션을 사용합니다. 이 애플리케이션의 컨테이너 이미지는 ACR(Azure Container Registry)에서 호스트됩니다. 배포 매니페스트에 대한 GitHub 리포지토리 패키지의 linux-sample.yaml 을 참조하세요. YAML에서 태그를 nodeSelectorLinux로 지정했습니다.

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

실행 중인 Linux Pod를 보여 주는 스크린샷

4단계: 서비스 확인

진행률을 모니터링하려면 매개 변수와 함께 --watchkubectl get services 명령을 사용합니다.

kubectl get services

실행 중인 Linux 서비스를 보여 주는 스크린샷

처음에는 서비스의 가 EXTERNAL-IPazure-vote-frontpending표시됩니다. 주소가 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 주소로 엽니다.

실행 중인 Linux 앱을 보여 주는 스크린샷

애플리케이션이 로드되지 않으면 이미지 레지스트리의 권한 부여 문제 때문일 수 있습니다. 컨테이너 상태를 보려면 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은 태그를 nodeSelectorWindows로 지정합니다.

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

실행 중인 Windows Pod를 보여 주는 스크린샷

3단계: 샘플 서비스가 실행 중인지 확인

kubectl get services

실행 중인 Windows 서비스를 보여 주는 스크린샷

이 샘플은 NodePort 형식의 서비스로 배포되므로 애플리케이션이 실행 중인 Kubernetes 노드의 IP 주소를 검색한 다음 NodePort의 포트를 추가할 수 있습니다. 다음 Get-AksEdgeNodeAddr명령을 사용하여 Kubernetes 노드의 IP를 가져옵니다.

Get-AksEdgeNodeAddr -NodeType Windows

Windows 클러스터 정보를 보여 주는 Screesnhot.

4단계: 실행 중인 Windows 샘플 확인

웹 브라우저를 열고 NodePort 를 찾아 서비스에 액세스합니다.

실행 중인 Windows 앱을 보여 주는 스크린샷

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
    

다음 단계