1.9. 서비스 메시에 서비스 추가


Operator 및 ServiceMeshControlPlane 리소스를 설치한 후 ServiceMeshMemberRoll 리소스를 생성하고 콘텐츠가 있는 네임스페이스를 지정하여 애플리케이션, 워크로드 또는 서비스를 메시에 추가합니다.

ServiceMeshMemberRoll 리소스에 나열된 항목은 ServiceMeshControlPlane 리소스에서 관리하는 애플리케이션 및 워크플로입니다. 컨트롤 플레인(Service mesh Operator, Istiod, ServiceMeshControlPlane 포함) 및 데이터 플레인(애플리케이션 및 Envoy 프록시 포함)은 별도의 네임스페이스에 있어야 합니다.

참고

ServiceMeshMemberRoll에 네임스페이스를 추가한 후, 해당 네임스페이스의 서비스 또는 pod에 액세스하면 서비스 메시 외부의 호출기에서는 액세스할 수 없습니다.

1.9.1. Red Hat OpenShift Service Mesh 멤버 롤 생성

ServiceMeshMemberRoll에 나열된 프로젝트만 컨트롤 플레인의 영향을 받습니다. 특정 컨트롤 플레인 배포의 멤버 롤에 추가할 때까지 프로젝트는 서비스 메시에 속하지 않습니다.

ServiceMeshControlPlane과 동일한 프로젝트에서 default 라는 ServiceMeshMemberRoll 리소스를 생성해야 합니다. (예: istio-system)

1.9.1.1. 웹 콘솔에서 멤버 롤 생성

웹 콘솔에서 서비스 메시 멤버 롤에 하나 이상의 프로젝트를 추가할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift Service Mesh Operator 설치 및 검증.
  • 서비스 메시에 추가할 기존 프로젝트 목록.

절차

  1. 메시에 대한 서비스가 아직 없거나 처음부터 시작하려는 경우 애플리케이션에 대한 프로젝트를 생성합니다.

    1. 프로젝트로 이동합니다.
    2. 이름 필드에 이름을 입력합니다.
    3. 생성을 클릭합니다.
  2. Operators 설치된 Operator로 이동합니다.
  3. 프로젝트 메뉴를 클릭하고 목록에서 ServiceMeshControlPlane 리소스가 배포되는 프로젝트를 선택합니다(예: istio-system).
  4. Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  5. Istio Service Mesh 멤버 목록 탭을 클릭합니다.
  6. ServiceMeshMemberRoll 만들기를 클릭합니다.
  7. Members를 클릭한 다음 Value 필드에 프로젝트 이름을 입력합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나ServiceMeshMemberRoll 리소스에만 속할 수 있습니다.
  8. 생성을 클릭합니다.

1.9.1.2. CLI에서 멤버 롤 생성

명령줄의 ServiceMeshMemberRoll에 프로젝트를 추가할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift Service Mesh Operator 설치 및 검증.
  • 서비스 메시에 추가할 프로젝트 목록.
  • OpenShift CLI(oc)에 액세스합니다.

절차

  1. $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. 메시에 대한 서비스가 아직 없거나 처음부터 시작하려는 경우 애플리케이션에 대한 프로젝트를 생성합니다.

    $ oc new-project <your-project>
  3. 프로젝트를 멤버로 추가하려면 다음 예제 YAML을 수정합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나ServiceMeshMemberRoll 리소스에만 속할 수 있습니다.

    servicemeshmemberroll-default.yaml 예

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name

  4. 다음 명령을 실행하여 istio-system 네임스페이스에 ServiceMeshMemberRoll 리소스를 업로드하고 만듭니다.

    $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
  5. 다음 명령을 실행하여 ServiceMeshMemberRoll이 성공적으로 생성되었는지 확인합니다.

    $ oc get smmr -n istio-system default

    STATUS 열이 Configured인 경우 설치가 성공적으로 완료된 것입니다.

1.9.2. 서비스 메시에서 프로젝트 추가 또는 제거

웹 콘솔을 사용하여 기존 Service Mesh ServiceMeshMemberRoll 리소스에서 프로젝트를 추가하거나 제거할 수 있습니다.

  • 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나ServiceMeshMemberRoll 리소스에만 속할 수 있습니다.
  • 해당 ServiceMeshControlPlane 리소스가 삭제되면 ServiceMeshMemberRoll 리소스가 삭제됩니다.

1.9.2.1. 웹 콘솔을 사용하여 멤버 롤에서 프로젝트 추가 또는 제거

사전 요구 사항

  • Red Hat OpenShift Service Mesh Operator 설치 및 검증.
  • 기존 ServiceMeshMemberRoll 리소스.
  • ServiceMeshMemberRoll 리소스를 사용한 프로젝트의 이름.
  • 메시에서 추가하거나 삭제하려는 프로젝트의 이름.

절차

  1. Operators 설치된 Operator로 이동합니다.
  2. 프로젝트 메뉴를 클릭하고 목록에서 ServiceMeshControlPlane 리소스가 배포되는 프로젝트를 선택합니다(예: istio-system).
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  4. Istio Service Mesh 멤버 목록 탭을 클릭합니다.
  5. default 링크를 클릭합니다.
  6. YAML 탭을 클릭합니다.
  7. YAML을 수정하여 프로젝트를 멤버로 추가하거나 제거합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나ServiceMeshMemberRoll 리소스에만 속할 수 있습니다.
  8. 저장을 클릭합니다.
  9. 새로 고침을 클릭합니다.

1.9.2.2. CLI를 사용하여 멤버 롤에서 프로젝트 추가 또는 제거

명령줄을 사용하여 기존 서비스 메시 멤버 목록을 수정할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift Service Mesh Operator 설치 및 검증.
  • 기존 ServiceMeshMemberRoll 리소스.
  • ServiceMeshMemberRoll 리소스를 사용한 프로젝트의 이름.
  • 메시에서 추가하거나 삭제하려는 프로젝트의 이름.
  • OpenShift CLI(oc)에 액세스합니다.

절차

  1. ServiceMeshMemberRoll 리소스를 편집합니다.

    $ oc edit smmr -n <controlplane-namespace>
  2. YAML을 수정하여 프로젝트를 멤버로 추가하거나 제거합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나ServiceMeshMemberRoll 리소스에만 속할 수 있습니다.

    servicemeshmemberroll-default.yaml 예

    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system #control plane project
    spec:
      members:
        # a list of projects joined into the service mesh
        - your-project-name
        - another-project-name

1.9.3. Bookinfo 예제 애플리케이션

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

Bookinfo 애플리케이션은 이러한 마이크로 서비스로 구성됩니다.

  • productpage 마이크로 서비스는 detailsreviews 마이크로 서비스를 호출하여 페이지를 채웁니다.
  • details 마이크로 서비스에는 도서 정보가 포함되어 있습니다.
  • reviews 마이크로 서비스에는 도서 리뷰가 포함되어 있습니다. 이를 ratings 마이크로 서비스라고도 합니다.
  • ratings 마이크로 서비스에는 도서 리뷰와 함께 제공되는 도서 순위 정보가 포함되어 있습니다.

리뷰 마이크로 서비스의 세 가지 버전이 있습니다.

  • 버전 v1에서는 ratings 서비스를 호출하지 않습니다.
  • 버전 v2는 ratings 서비스를 호출하고 각 평가를 1~5개의 검정별로 표시합니다.
  • 버전 v3은 ratings 서비스를 호출하고 각 평가를 1~5개의 빨강별로 표시합니다.

1.9.3.1. Bookinfo 애플리케이션 설치

이 튜토리얼에서는 프로젝트를 생성하고, Bookinfo 애플리케이션을 해당 프로젝트에 배포하고, 서비스 메시에서 실행 중인 애플리케이션을 확인하여 샘플 애플리케이션을 생성하는 방법을 안내합니다.

사전 요구 사항

  • OpenShift CLI(oc)에 액세스합니다.
  • cluster-admin 역할이 있는 계정.
참고

참고

절차

  1. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.
  2. 프로젝트를 클릭합니다.
  3. 프로젝트 만들기를 클릭합니다.
  4. 프로젝트 이름으로 bookinfo를 입력하고, 디스플레이 이름, 설명을 입력한 다음 생성을 클릭합니다.

    • 대신 CLI에서 이 명령을 실행하여 bookinfo 프로젝트를 생성할 수 있습니다.

      $ oc new-project bookinfo
  5. Operators 설치된 Operators를 클릭합니다.
  6. 이 예제에서는 istio-system을 사용합니다.
  7. Red Hat OpenShift Service Mesh Operator를 클릭합니다.
  8. Istio Service Mesh 멤버 목록 탭을 클릭합니다.

    1. 이미 Istio Service Mesh 멤버 롤을 생성한 경우, 이름을 클릭한 다음 YAML 탭을 클릭하여 YAML 편집기를 엽니다.
    2. ServiceMeshMemberRoll을 생성하지 않은 경우 ServiceMeshMemberRoll 생성을 클릭합니다.
  9. Members를 클릭한 다음 Value 필드에 프로젝트 이름을 입력합니다.
  10. 생성을 클릭하여 업데이트된 서비스 메시 멤버 롤을 저장합니다.

    1. 또는 다음 예제를 YAML 파일에 저장합니다.

      Bookinfo ServiceMeshMemberRoll example servicemeshmemberroll-default.yaml

      apiVersion: maistra.io/v1
      kind: ServiceMeshMemberRoll
      metadata:
        name: default
      spec:
        members:
        - bookinfo

    2. 다음 명령을 실행하여 해당 파일을 업로드하고 istio-system 네임스페이스에 ServiceMeshMemberRoll 리소스를 만듭니다.

      $ oc create -n istio-system -f servicemeshmemberroll-default.yaml
  11. 다음 명령을 실행하여 ServiceMeshMemberRoll이 성공적으로 생성되었는지 확인합니다.

    $ oc get smmr -n istio-system -o wide

    STATUS 열이 Configured인 경우 설치가 성공적으로 완료된 것입니다.

    NAME      READY   STATUS       AGE   MEMBERS
    default   1/1     Configured   70s   ["bookinfo"]
  12. CLI에서 bookinfo.yaml 파일을 적용하여 'bookinfo' 프로젝트에 Bookinfo 애플리케이션을 배포합니다.

    $ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.3/samples/bookinfo/platform/kube/bookinfo.yaml

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

    service/details created
    serviceaccount/bookinfo-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/bookinfo-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/bookinfo-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/bookinfo-productpage created
    deployment.apps/productpage-v1 created
  13. bookinfo-gateway.yaml 파일을 적용하여 수신 게이트웨이를 생성합니다.

    $ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.3/samples/bookinfo/networking/bookinfo-gateway.yaml

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

    gateway.networking.istio.io/bookinfo-gateway created
    virtualservice.networking.istio.io/bookinfo created
  14. GATEWAY_URL 매개변수 값을 설정합니다.

    $ export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')

1.9.3.2. 기본 대상 규칙 추가

Bookinfo 애플리케이션을 사용하기 전에 먼저 기본 대상 규칙을 추가해야 합니다. 상호 TLS(Transport layer security) 인증을 활성화했는지 여부에 따라 사전 구성된 YAML 파일이 두 개 있습니다.

프로세스

  1. 대상 규칙을 추가하려면 다음 명령 중 하나를 실행합니다.

    • 상호 TLS를 활성화하지 않은 경우:

      $ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.3/samples/bookinfo/networking/destination-rule-all.yaml
    • 상호 TLS를 활성화한 경우:

      $ oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.3/samples/bookinfo/networking/destination-rule-all-mtls.yaml

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

      destinationrule.networking.istio.io/productpage created
      destinationrule.networking.istio.io/reviews created
      destinationrule.networking.istio.io/ratings created
      destinationrule.networking.istio.io/details created

1.9.3.3. Bookinfo 설치 확인

샘플 Bookinfo 애플리케이션이 성공적으로 배포되었는지 확인하려면 다음 단계를 수행합니다.

사전 요구 사항

  • Bookinfo 샘플 애플리케이션을 설치하는 단계를 완료합니다.

  1. 다음 명령으로 모든 pod가 준비되었는지 확인합니다.

    $ oc get pods -n bookinfo

    모든 pod의 상태는 Running이어야 합니다. 출력은 다음과 유사합니다.

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-55b869668-jh7hb        2/2     Running   0          12m
    productpage-v1-6fc77ff794-nsl8r   2/2     Running   0          12m
    ratings-v1-7d7d8d8b56-55scn       2/2     Running   0          12m
    reviews-v1-868597db96-bdxgq       2/2     Running   0          12m
    reviews-v2-5b64f47978-cvssp       2/2     Running   0          12m
    reviews-v3-6dfd49b55b-vcwpf       2/2     Running   0          12m
  2. 다음 명령을 실행하여 제품 페이지의 URL을 검색합니다.

    echo "http://$GATEWAY_URL/productpage"
  3. 웹 브라우저에 출력을 복사하여 붙여넣어 Bookinfo 제품 페이지가 배포되었는지 확인합니다.

    1. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.

1.9.3.4. Bookinfo 애플리케이션 제거

다음 단계에 따라 Bookinfo 애플리케이션을 제거하십시오.

사전 요구 사항

  • OpenShift CLI(oc)에 액세스합니다.
1.9.3.4.1. Bookinfo 프로젝트 삭제

절차

  1. 프로젝트를 클릭합니다.
  2. bookinfo 메뉴 kebab 를 클릭한 다음 프로젝트 삭제를 클릭합니다.
  3. 확인 대화 상자에 bookinfo를 입력한 다음 삭제 를 클릭합니다.

    • $ oc delete project bookinfo
1.9.3.4.2. 서비스 메시 멤버 롤에서 Bookinfo 프로젝트를 제거

절차

  1. Operators 설치된 Operators를 클릭합니다.
  2. Red Hat OpenShift Service Mesh Operator에 대해 제공된 APIS에서 Istio Service Mesh 멤버 롤 링크를 클릭합니다.
  3. ServiceMeshMemberRoll 메뉴 kebab 를 클릭하고 서비스 메시 멤버 롤 편집을 선택합니다.
  4. 기본 Service Mesh 멤버 롤 YAML을 편집하고 멤버 목록에서 bookinfo를 삭제합니다.

    • $ oc -n istio-system patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
  5. 저장을 클릭하여 서비스 메시 멤버 롤을 업데이트합니다.

1.9.4. 다음 단계

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.