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 설치 및 검증.
- 서비스 메시에 추가할 기존 프로젝트 목록.
절차
메시에 대한 서비스가 아직 없거나 처음부터 시작하려는 경우 애플리케이션에 대한 프로젝트를 생성합니다.
-
홈
프로젝트로 이동합니다. - 이름 필드에 이름을 입력합니다.
- 생성을 클릭합니다.
-
홈
-
Operators
설치된 Operator로 이동합니다. -
프로젝트 메뉴를 클릭하고 목록에서
ServiceMeshControlPlane
리소스가 배포되는 프로젝트를 선택합니다(예:istio-system
). - Red Hat OpenShift Service Mesh Operator를 클릭합니다.
- Istio Service Mesh 멤버 목록 탭을 클릭합니다.
- ServiceMeshMemberRoll 만들기를 클릭합니다.
-
Members를 클릭한 다음 Value 필드에 프로젝트 이름을 입력합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나의
ServiceMeshMemberRoll
리소스에만 속할 수 있습니다. - 생성을 클릭합니다.
1.9.1.2. CLI에서 멤버 롤 생성
명령줄의 ServiceMeshMemberRoll
에 프로젝트를 추가할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift Service Mesh Operator 설치 및 검증.
- 서비스 메시에 추가할 프로젝트 목록.
-
OpenShift CLI(
oc
)에 액세스합니다.
절차
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
메시에 대한 서비스가 아직 없거나 처음부터 시작하려는 경우 애플리케이션에 대한 프로젝트를 생성합니다.
$ oc new-project <your-project>
프로젝트를 멤버로 추가하려면 다음 예제 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
다음 명령을 실행하여
istio-system
네임스페이스에ServiceMeshMemberRoll
리소스를 업로드하고 만듭니다.$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
다음 명령을 실행하여
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
리소스를 사용한 프로젝트의 이름. - 메시에서 추가하거나 삭제하려는 프로젝트의 이름.
절차
-
Operators
설치된 Operator로 이동합니다. -
프로젝트 메뉴를 클릭하고 목록에서
ServiceMeshControlPlane
리소스가 배포되는 프로젝트를 선택합니다(예:istio-system
). - Red Hat OpenShift Service Mesh Operator를 클릭합니다.
- Istio Service Mesh 멤버 목록 탭을 클릭합니다.
-
default
링크를 클릭합니다. - YAML 탭을 클릭합니다.
-
YAML을 수정하여 프로젝트를 멤버로 추가하거나 제거합니다. 여러 프로젝트를 추가할 수 있지만 프로젝트는 하나의
ServiceMeshMemberRoll
리소스에만 속할 수 있습니다. - 저장을 클릭합니다.
- 새로 고침을 클릭합니다.
1.9.2.2. CLI를 사용하여 멤버 롤에서 프로젝트 추가 또는 제거
명령줄을 사용하여 기존 서비스 메시 멤버 목록을 수정할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift Service Mesh Operator 설치 및 검증.
-
기존
ServiceMeshMemberRoll
리소스. -
ServiceMeshMemberRoll
리소스를 사용한 프로젝트의 이름. - 메시에서 추가하거나 삭제하려는 프로젝트의 이름.
-
OpenShift CLI(
oc
)에 액세스합니다.
절차
ServiceMeshMemberRoll
리소스를 편집합니다.$ oc edit smmr -n <controlplane-namespace>
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
마이크로 서비스는details
및reviews
마이크로 서비스를 호출하여 페이지를 채웁니다. -
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
역할이 있는 계정.
절차
-
Red Hat OpenShift Dedicated를 사용하는 경우
dedicated-admin
역할의 계정이 있어야 합니다. -
홈
프로젝트를 클릭합니다. - 프로젝트 만들기를 클릭합니다.
프로젝트 이름으로
bookinfo
를 입력하고, 디스플레이 이름, 설명을 입력한 다음 생성을 클릭합니다.대신 CLI에서 이 명령을 실행하여
bookinfo
프로젝트를 생성할 수 있습니다.$ oc new-project bookinfo
-
Operators
설치된 Operators를 클릭합니다. -
이 예제에서는
istio-system
을 사용합니다. - Red Hat OpenShift Service Mesh Operator를 클릭합니다.
Istio Service Mesh 멤버 목록 탭을 클릭합니다.
- 이미 Istio Service Mesh 멤버 롤을 생성한 경우, 이름을 클릭한 다음 YAML 탭을 클릭하여 YAML 편집기를 엽니다.
-
ServiceMeshMemberRoll
을 생성하지 않은 경우 ServiceMeshMemberRoll 생성을 클릭합니다.
- Members를 클릭한 다음 Value 필드에 프로젝트 이름을 입력합니다.
생성을 클릭하여 업데이트된 서비스 메시 멤버 롤을 저장합니다.
또는 다음 예제를 YAML 파일에 저장합니다.
Bookinfo ServiceMeshMemberRoll example servicemeshmemberroll-default.yaml
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default spec: members: - bookinfo
다음 명령을 실행하여 해당 파일을 업로드하고
istio-system
네임스페이스에ServiceMeshMemberRoll
리소스를 만듭니다.$ oc create -n istio-system -f servicemeshmemberroll-default.yaml
다음 명령을 실행하여
ServiceMeshMemberRoll
이 성공적으로 생성되었는지 확인합니다.$ oc get smmr -n istio-system -o wide
STATUS
열이Configured
인 경우 설치가 성공적으로 완료된 것입니다.NAME READY STATUS AGE MEMBERS default 1/1 Configured 70s ["bookinfo"]
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
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
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 파일이 두 개 있습니다.
프로세스
대상 규칙을 추가하려면 다음 명령 중 하나를 실행합니다.
상호 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 샘플 애플리케이션을 설치하는 단계를 완료합니다.
다음 명령으로 모든 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
다음 명령을 실행하여 제품 페이지의 URL을 검색합니다.
echo "http://$GATEWAY_URL/productpage"
- 웹 브라우저에 출력을 복사하여 붙여넣어 Bookinfo 제품 페이지가 배포되었는지 확인합니다.
-
Red Hat OpenShift Dedicated를 사용하는 경우
dedicated-admin
역할의 계정이 있어야 합니다.
-
Red Hat OpenShift Dedicated를 사용하는 경우
[D]
1.9.3.4. Bookinfo 애플리케이션 제거
다음 단계에 따라 Bookinfo 애플리케이션을 제거하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)에 액세스합니다.
1.9.3.4.1. Bookinfo 프로젝트 삭제
절차
-
홈
프로젝트를 클릭합니다. -
bookinfo
메뉴 를 클릭한 다음 프로젝트 삭제를 클릭합니다. 확인 대화 상자에
bookinfo
를 입력한 다음 삭제 를 클릭합니다.$ oc delete project bookinfo
1.9.3.4.2. 서비스 메시 멤버 롤에서 Bookinfo 프로젝트를 제거
절차
-
Operators
설치된 Operators를 클릭합니다. - Red Hat OpenShift Service Mesh Operator에 대해 제공된 APIS에서 Istio Service Mesh 멤버 롤 링크를 클릭합니다.
-
ServiceMeshMemberRoll
메뉴 를 클릭하고 서비스 메시 멤버 롤 편집을 선택합니다. 기본 Service Mesh 멤버 롤 YAML을 편집하고 멤버 목록에서
bookinfo
를 삭제합니다.$ oc -n istio-system patch --type='json' smmr default -p '[{"op": "remove", "path": "/spec/members", "value":["'"bookinfo"'"]}]'
- 저장을 클릭하여 서비스 메시 멤버 롤을 업데이트합니다.