Online Boutique 샘플 애플리케이션 배포

이 가이드에서는 Anthos Boutique 샘플 애플리케이션을 설치하여 Anthos Service Mesh를 보여주는 방법을 설명합니다. Anthos Service Mesh를 설치하지 않은 경우 설치 가이드 섹션을 참조하여 적합한 가이드를 선택하세요.

사이드카 자동 삽입 사용 설정

샘플 애플리케이션에 대해 사이드카 자동 삽입(자동 삽입)을 사용 설정하려면 버전 라벨을 샘플 네임스페이스에 추가해야 합니다. 추가하는 라벨은 관리형 Anthos Service Mesh를 배포했거나 클러스터 내 제어 영역을 설치했는지에 따라 달라집니다. 버전 라벨은 사이드카 인젝터 웹훅에서 삽입된 사이드카를 특정 제어 영역 버전과 연결하는 데 사용됩니다.

클러스터 내

  1. 애플리케이션의 네임스페이스를 만듭니다.

    kubectl create namespace demo
    
  2. 다음 명령어를 사용하여 istiod에서 라벨을 찾습니다.

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    출력은 다음과 유사합니다.

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-1106-2-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1106-2-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586
    

    출력의 LABELS 열 아래에서 istio.io/rev= 프리픽스 다음에 있는 istiod 버전 라벨의 값을 확인합니다. 이 예시에서 값은 asm-1106-2입니다.

  3. demo 네임스페이스에 버전 라벨을 적용합니다. 다음 명령어에서 REVISION은 이전 단계에서 확인한 istiod 버전 라벨의 값입니다.

    kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
    

    출력에서 "istio-injection not found" 메시지는 무시해도 됩니다. 즉, 네임스페이스에 이전에 istio-injection 라벨이 사용되지 않았으며, Anthos Service Mesh를 새로 설치하거나 새로 배포해야 합니다. 네임스페이스에 istio-injection 및 버전 라벨이 모두 포함된 경우 자동 삽입이 실패하기 때문에 Anthos Service Mesh 문서에서 모든 kubectl label 명령어에는 istio-injection 라벨 삭제가 포함됩니다.

관리형 서비스 메시

  1. 애플리케이션의 네임스페이스를 만듭니다.

    kubectl create namespace demo
    
  2. demo 네임스페이스에 asm-managed-rapid 버전 라벨을 적용합니다.

    kubectl label namespace demo istio-injection- istio.io/rev=asm-managed-rapid --overwrite
    

    이 라벨은 Anthos Service Mesh 버전에 대한 현재 관리형 Anthos Service Mesh 출시 채널에 해당합니다.

    출력에서 "istio-injection not found" 메시지는 무시해도 됩니다. 즉, 네임스페이스에 이전에 istio-injection 라벨이 사용되지 않았으며, Anthos Service Mesh를 새로 설치하거나 새로 배포해야 합니다. 네임스페이스에 istio-injection 및 버전 라벨이 모두 포함된 경우 자동 삽입이 실패하기 때문에 Anthos Service Mesh 문서에서 모든 kubectl label 명령어에는 istio-injection 라벨 삭제가 포함됩니다.

  3. 선택사항인 Google 관리 데이터 영역도 배포한 경우 다음과 같이 demo 네임스페이스에 주석을 추가합니다.

    kubectl annotate --overwrite namespace YOUR_NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

샘플 다운로드 및 배포

이제 자동 삽입이 demo 네임스페이스에 사용 설정되었으므로, BookInfo 애플리케이션의 서비스를 배포하면 사이드카 프록시가 각 서비스와 함께 삽입됩니다.

  1. 아직 설치하지 않았다면 kpt를 설치합니다.

    gcloud components install kpt
    
  2. kpt를 사용하여 샘플을 다운로드합니다.

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  3. 클러스터에 샘플을 배포합니다.

    kubectl apply -n demo -f online-boutique
    
  4. frontend-external 서비스의 외부 IP 주소를 찾습니다.

    kubectl get service frontend-external -n demo
    
  5. 브라우저에서 애플리케이션을 방문하여 설치를 확인합니다.

    http://EXTERNAL_IP/
    

GKE의 경우 Google Cloud 콘솔에서 Anthos Service Mesh 관측 가능성 기능을 탐색할 수 있습니다. 토폴로지 그래프가 메시에 서비스를 표시하는 데 최대 10분이 걸릴 수 있습니다.

탐색이 완료되면 Online Boutique 샘플을 삭제합니다.

kubectl delete namespaces demo