1.5. Bookinfo 애플리케이션 정보


info 예제 애플리케이션 설치는 애플리케이션을 배포하고 클러스터 외부에서 애플리케이션에 액세스할 수 있도록 게이트웨이 생성의 두 가지 주요 작업으로 구성됩니다.

info 애플리케이션을 사용하여 서비스 메시 기능을 탐색할 수 있습니다. bookinfo 애플리케이션을 사용하면 웹 브라우저의 요청이 메시를 통과하고 애플리케이션에 도달하는지 쉽게 확인할 수 있습니다.

info 애플리케이션은 온라인 서점의 단일 카탈로그 항목과 유사하게 도서에 대한 정보를 표시합니다. 애플리케이션에는 도서를 설명하는 페이지, 도서 세부 정보(ISBN, 페이지 수 및 기타 정보) 및 도서 리뷰가 표시됩니다.

정보 애플리케이션은 메시를 통해 노출되며 메시 구성은 애플리케이션을 구성하는 마이크로 서비스를 사용하여 요청을 처리하는 방법을 결정합니다. 검토 정보는 세 가지 서비스 중 하나에서 제공됩니다: reviews-v1,reviews-v2 또는 reviews-v3. reviews 가상 서비스를 정의하지 않고 bookinfo 애플리케이션을 배포하는 경우 메시는 라운드 로빈 규칙을 사용하여 요청을 서비스로 라우팅합니다.

reviews 가상 서비스를 배포하면 다른 동작을 지정할 수 있습니다. 예를 들어 사용자가 info 애플리케이션에 로그인하면 메시가 reviews-v2 서비스에 요청을 라우팅하고 애플리케이션에 검정색 별이 표시되도록 지정할 수 있습니다. 사용자가 bookinfo 애플리케이션에 로그인하지 않으면 메시는 reviews-v3 서비스에 요청을 라우팅하고 애플리케이션에 빨간색 별이 표시됩니다.

자세한 내용은 업스트림 Istio 문서의 Bookinfo 애플리케이션을 참조하십시오.

1.5.1. Bookinfo 애플리케이션 배포

사전 요구 사항

  • OpenShift Container Platform 4.15 이상에 클러스터를 배포했습니다.
  • cluster-admin 역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다.
  • OpenShift CLI(oc)에 액세스할 수 있습니다.
  • Red Hat OpenShift Service Mesh Operator를 설치하고 Istio 리소스를 생성했으며 Operator에서 Istio를 배포했습니다.
  • IstioCNI 리소스를 생성했으며 Operator에서 필요한 IstioCNI Pod를 배포했습니다.

    1. OpenShift Container Platform 웹 콘솔에서 프로젝트 페이지로 이동합니다.
    2. 프로젝트 만들기를 클릭합니다.
    3. 프로젝트 이름 필드에 정보를 입력합니다.

      Display nameDescription 필드는 보조 정보를 제공하며 필수는 아닙니다.

    4. 생성을 클릭합니다.
    5. CLI에서 다음 명령을 입력하여 info 네임스페이스에 Istio 검색 선택기 및 삽입 레이블을 적용합니다.

      $ oc label namespace info istio-discovery=enabled istio-injection=enabled
      참고

      이 예에서 Istio 리소스의 이름은 기본값 입니다. Istio 리소스 이름이 다른 경우 istio-injection=enabled 레이블을 추가하는 대신 istio.io/rev 레이블을 Istio 리소스의 이름으로 설정해야 합니다.

    6. CLI에서 다음 명령을 입력하여 bookinfo 애플리케이션을 배포하도록 info YAML 파일을 적용합니다.

      oc apply -f https://raw.githubusercontent.com/istio/istio/release-1.23/samples/info/platform/kube/bookinfo.yaml -n bookinfo

검증

  1. CLI에서 다음 명령을 실행하여 info 서비스를 사용할 수 있는지 확인합니다.

    $ oc get services -n info

    출력 예

    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    details       ClusterIP   172.30.137.21   <none>        9080/TCP   44s
    productpage   ClusterIP   172.30.2.246    <none>        9080/TCP   43s
    ratings       ClusterIP   172.30.33.85    <none>        9080/TCP   44s
    reviews       ClusterIP   172.30.175.88   <none>        9080/TCP   44s

  2. CLI에서 다음 명령을 실행하여 정보 Pod를 사용할 수 있는지 확인합니다.

    $ oc get pods -n info

    출력 예

    NAME                             READY   STATUS    RESTARTS   AGE
    details-v1-698d88b-km2jg         2/2     Running   0          66s
    productpage-v1-675fc69cf-cvxv9   2/2     Running   0          65s
    ratings-v1-6484c4d9bb-tpx7d      2/2     Running   0          65s
    reviews-v1-5b5d6494f4-wsrwp      2/2     Running   0          65s
    reviews-v2-5b667bcbf8-4lsfd      2/2     Running   0          65s
    reviews-v3-5b9bd44f4-44hr6       2/2     Running   0          65s

    Ready 열에 2/2 가 표시되면 프록시 사이드카가 성공적으로 삽입되었습니다. Running 이 각 포드의 Status (상태) 열에 표시되는지 확인합니다.

  3. bookinfo 페이지에 요청을 전송하여 실행 중인 정보 애플리케이션이 있는지 확인합니다. CLI에서 다음 명령을 실행합니다.

    $ oc exec "$(oc get pod -l app=ratings -n info -o jsonpath='{.items[0].metadata.name}')" -c ratings -n bookinfo -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

1.5.2. 게이트웨이를 사용하여 Bookinfo 애플리케이션에 액세스하는 정보

Red Hat OpenShift Service Mesh Operator는 게이트웨이를 배포하지 않습니다. 게이트웨이는 컨트롤 플레인의 일부가 아닙니다. 보안 모범 사례로 Ingress 및 Egress 게이트웨이는 컨트롤 플레인이 포함된 네임스페이스와 다른 네임스페이스에 배포해야 합니다.

게이트웨이 API 또는 게이트웨이 삽입 방법을 사용하여 게이트웨이를 배포할 수 있습니다.

1.5.3. Istio 게이트웨이 삽입을 사용하여 Bookinfo 애플리케이션에 액세스

게이트웨이 삽입은 Istio 사이드카 삽입과 동일한 메커니즘을 사용하여 Service 리소스와 페어링된 Deployment 리소스에서 게이트웨이를 생성합니다. Service 리소스는 OpenShift Container Platform 클러스터 외부에서 액세스할 수 있습니다.

전제 조건

  • cluster-admin으로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다.
  • Red Hat OpenShift Service Mesh Operator가 설치되어 있어야 합니다.
  • Istio 리소스를 배포해야 합니다.

프로세스

  1. CLI에서 다음 명령을 실행하여 istio-ingressgateway 배포 및 서비스를 생성합니다.

    $ oc apply -n info -f ingress-gateway.yaml
    참고

    이 예에서는 Istio 커뮤니티 리포지토리에서 사용할 수 있는 샘플 ingress-gateway.yaml 파일을 사용합니다.

  2. 게이트웨이 구성을 적용하여 새 게이트웨이를 사용하도록 info 애플리케이션을 구성합니다.

    $ oc apply -f https://raw.githubusercontent.com/istio/istio/release-1.23/samples/info/networking/bookinfo-gateway.yaml -n bookinfo
    참고

    info 애플리케이션을 사용하여 게이트웨이 삽입을 구성하기 위해 이 예제에서는 애플리케이션이 설치된 네임스페이스에 적용해야 하는 샘플 게이트웨이 구성 파일을 사용합니다.

  3. 경로를 사용하여 클러스터 외부에 게이트웨이를 노출합니다.

    $ oc expose service istio-ingressgateway -n info
  4. Ingress 트래픽이 증가하면 Pod를 자동으로 스케일링합니다. 이 예에서는 최소 복제본을 2 로 설정하고 최대 복제본을 5 로 설정합니다. 또한 사용률이 80%에 도달하면 다른 복제본도 생성합니다.

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      labels:
        istio: ingressgateway
        release: istio
      name: ingressgatewayhpa
      namespace: istio-ingress
    spec:
      maxReplicas: 5
      metrics:
      - resource:
          name: cpu
          target:
            averageUtilization: 80
            type: Utilization
        type: Resource
      minReplicas: 2
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: istio-ingressgateway
  5. 노드에서 실행해야 하는 최소 Pod 수를 지정합니다. 이 예에서는 새 노드에서 Pod가 다시 시작되면 하나의 복제본이 실행 중인지 확인합니다.

    apiVersion: policy/v1
    kind: PodDisruptionBudget
    metadata:
      labels:
        istio: ingressgateway
        release: istio
      name: ingressgatewaypdb
      namespace: istio-ingress
    spec:
      minAvailable: 1
      selector:
        matchLabels:
          istio: ingressgateway
  6. 게이트웨이 호스트 이름과 제품 페이지의 URL을 가져옵니다.

    $ HOST=$(oc get route istio-ingressgateway -n info -o jsonpath='{.spec.host}')
    $ echo productpage URL: http://$HOST/productpage
  7. 웹 브라우저에서 productpage 에 액세스할 수 있는지 확인합니다.

1.5.4. 게이트웨이 API를 사용하여 Bookinfo 애플리케이션에 액세스

Kubernetes 게이트웨이 API는 게이트웨이 리소스를 생성하여 게이트웨이 를 배포합니다. OpenShift Container Platform 4.15 이상 버전에서 클러스터에서 Gateway API CRD를 사용하려면 기본적으로 비활성화되어 있으므로 CRD를 활성화해야 합니다.

참고

Red Hat은 Red Hat OpenShift Service Mesh에서 Kubernetes Gateway API 사용을 지원합니다. Red Hat은 Kubernetes Gateway API CRD(사용자 정의 리소스 정의)를 지원하지 않습니다. 이 절차에서는 데모 목적으로만 커뮤니티 게이트웨이 API CRD를 사용하는 것으로 표시됩니다.

  1. 사전 요구 사항

    • cluster-admin으로 OpenShift Container Platform 웹 콘솔에 로그인되어 있습니다.
    • Red Hat OpenShift Service Mesh Operator가 설치되어 있어야 합니다.
    • Istio 리소스를 배포해야 합니다.

프로세스

  1. 게이트웨이 API CRD를 활성화합니다.

    $ oc get crd gateways.gateway.networking.k8s.io &> /dev/null ||  { oc kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.0.0" | oc apply -f -; }
  2. Gateway 리소스 및 HTTPRoute 리소스를 사용하여 게이트웨이를 생성하고 구성합니다.

    $ oc apply -f https://raw.githubusercontent.com/istio/istio/release-1.23/samples/info/gateway-api/bookinfo-gateway.yaml -n bookinfo
    참고

    Gateway API를 사용하여 info 애플리케이션으로 게이트웨이를 구성하려면 이 예제에서는 애플리케이션이 설치된 네임스페이스에 적용해야 하는 샘플 게이트웨이 구성 파일을 사용합니다.

  3. Gateway API 서비스가 준비되었으며 주소가 할당되어 있는지 확인합니다.

    $ oc wait --for=condition=programmed gtw info-gateway -n bookinfo
  4. 호스트, 포트 및 게이트웨이 URL을 검색합니다.

    $ export INGRESS_HOST=$(oc get gtw info-gateway -n bookinfo -o jsonpath='{.status.addresses[0].value}')
    $ export INGRESS_PORT=$(oc get gtw info-gateway -n bookinfo -o jsonpath='{.spec.listeners[?(@.name=="http")].port}')
    $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
  5. 게이트웨이 호스트 이름과 제품 페이지의 URL을 가져옵니다.

    $ echo "http://${GATEWAY_URL}/productpage"
  6. 웹 브라우저에서 productpage 에 액세스할 수 있는지 확인합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.