2.3. 사이드카 삽입 활성화
사이드카 삽입 구성에 대한 다양한 접근 방식을 설명하기 위해 다음 절차에서는 Bookinfo 애플리케이션을 사용합니다.
사전 요구 사항
-
Red Hat OpenShift Service Mesh Operator를 설치하고
Istio
리소스를 생성했으며 Operator에서 Istio를 배포했습니다. -
IstioCNI
리소스를 생성했으며 Operator에서 필요한IstioCNI
Pod를 배포했습니다. - 메시의 일부가 될 네임스페이스를 생성했으며 Istio 컨트롤 플레인에서 검색할 수 있습니다.
-
선택 사항: 메시에 포함할 워크로드를 배포했습니다. 다음 예제에서 Bookinfo는
info
네임스페이스에 배포되었지만 사이드카 삽입(단계 5)은 구성되지 않았습니다.
2.3.1. 네임스페이스 라벨을 사용하여 사이드카 삽입 활성화
이 예에서 네임스페이스 내의 모든 워크로드는 사이드카 프록시 삽입을 수신하므로 네임스페이스의 대부분의 워크로드를 메시에 포함해야 하는 경우 최상의 접근 방식입니다.
프로세스
다음 명령을 사용하여 Istio 컨트롤 플레인의 버전 이름을 확인합니다.
$ oc get istiorevisions
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME TYPE READY STATUS IN USE VERSION AGE default Local True Healthy False v1.23.0 4m57s
버전 이름은 기본값이므로 정확한 버전 이름을 참조하지 않고 기본 삽입 레이블을 사용할 수 있습니다.
다음 명령을 사용하여 원하는 네임스페이스에서 이미 실행 중인 워크로드가
1/1
컨테이너를READY
로 표시하는지 확인합니다. 이렇게 하면 Pod가 사이드카 없이 실행되고 있는지 확인합니다.$ oc get pods -n info
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME READY STATUS RESTARTS AGE details-v1-65cfcf56f9-gm6v7 1/1 Running 0 4m55s productpage-v1-d5789fdfb-8x6bk 1/1 Running 0 4m53s ratings-v1-7c9bd4b87f-6v7hg 1/1 Running 0 4m55s reviews-v1-6584ddcf65-6wqtw 1/1 Running 0 4m54s reviews-v2-6f85cb9b7c-w9l8s 1/1 Running 0 4m54s reviews-v3-6f5b775685-mg5n6 1/1 Running 0 4m54s
info
네임스페이스에 injection 레이블을 적용하려면 CLI에서 다음 명령을 실행합니다.$ oc label namespace info istio-injection=enabled namespace/info labeled
사이드카 삽입이 적용되도록 하려면
info
네임스페이스에 기존 워크로드를 재배포합니다. 다음 명령을 사용하여 모든 워크로드의 롤링 업데이트를 수행합니다.$ oc -n info rollout restart deployments
검증
새 Pod에
2/2
컨테이너가READY
로 표시되어 다음 명령을 실행하여 사이드카 삽입이 성공했는지 확인하여 롤아웃을 확인합니다.$ oc get pods -n info
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME READY STATUS RESTARTS AGE details-v1-7745f84ff-bpf8f 2/2 Running 0 55s productpage-v1-54f48db985-gd5q9 2/2 Running 0 55s ratings-v1-5d645c985f-xsw7p 2/2 Running 0 55s reviews-v1-bd5f54b8c-zns4v 2/2 Running 0 55s reviews-v2-5d7b9dbf97-wbpjr 2/2 Running 0 55s reviews-v3-5fccc48c8c-bjktn 2/2 Running 0 55sz
2.3.2. 메시에서 워크로드 제외
모든 워크로드에 대해 삽입이 활성화된 네임스페이스 내에서 사이드카 삽입에서 특정 워크로드를 제외할 수 있습니다.
이 예제는 설명용으로만 사용됩니다. 정보 애플리케이션을 사용하려면 모든 워크로드가 적절한 기능을 위해 메시의 일부가 되어야 합니다.
프로세스
-
편집기에서 애플리케이션의
Deployment
리소스를 엽니다. 이 경우ratings-v1
서비스를 제외합니다. 사이드카 삽입을 비활성화하려면
배포
리소스의spec.template.metadata.labels
섹션을 수정하여sidecar.istio.io/inject: false
레이블을 포함합니다.kind: Deployment apiVersion: apps/v1 metadata: name: ratings-v1 namespace: info labels: app: ratings version: v1 spec: template: metadata: labels: sidecar.istio.io/inject: 'false'
참고배포
의 최상위 레이블 섹션에레이블을
추가해도 사이드카 삽입에는 영향을 미치지 않습니다.배포 업데이트로 롤아웃을 트리거하여 업데이트된 Pod를 사용하여 새 ReplicaSet을 생성합니다.
검증
업데이트된 Pod에 사이드카 컨테이너가 포함되어 있지 않은지 확인하고 다음 명령을 실행하여
1/1
컨테이너를Running
으로 표시합니다.$ oc get pods -n info
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME READY STATUS RESTARTS AGE details-v1-6bc7b69776-7f6wz 2/2 Running 0 29m productpage-v1-54f48db985-gd5q9 2/2 Running 0 29m ratings-v1-5d645c985f-xsw7p 1/1 Running 0 7s reviews-v1-bd5f54b8c-zns4v 2/2 Running 0 29m reviews-v2-5d7b9dbf97-wbpjr 2/2 Running 0 29m reviews-v3-5fccc48c8c-bjktn 2/2 Running 0 29m
2.3.3. Pod 라벨을 사용하여 사이드카 삽입 활성화
이 방법을 사용하면 네임스페이스 내의 모든 워크로드에 적용하는 대신 사이드카 삽입을 위한 개별 워크로드를 포함할 수 있으므로, 일부 워크로드만 서비스 메시의 일부여야 하는 시나리오에 적합합니다. 이 예제에서는 my-mesh
라는 이름으로 Istio
리소스가 생성되는 사이드카 삽입의 버전 레이블을 사용하는 방법도 보여줍니다. 동일한 클러스터에 여러 Istio
컨트롤 플레인이 있거나 버전 기반 컨트롤 플레인 업그레이드 중에 고유한 Istio 리소스 이름이 필요합니다.
프로세스
다음 명령을 실행하여 Istio 컨트롤 플레인의 버전 이름을 확인합니다.
$ oc get istiorevisions
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME TYPE READY STATUS IN USE VERSION AGE my-mesh Local True Healthy False v1.23.0 47s
버전 이름은
my-mesh
이므로 버전 레이블istio.io/rev=my-mesh
를 사용하여 사이드카 삽입을 활성화합니다.다음 명령을 실행하여 이미 실행 중인 워크로드에
1/1
컨테이너가READY
로 표시되어 사이드카 없이 Pod가 실행되고 있음을 나타내는지 확인합니다.$ oc get pods -n info
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME READY STATUS RESTARTS AGE details-v1-65cfcf56f9-gm6v7 1/1 Running 0 4m55s productpage-v1-d5789fdfb-8x6bk 1/1 Running 0 4m53s ratings-v1-7c9bd4b87f-6v7hg 1/1 Running 0 4m55s reviews-v1-6584ddcf65-6wqtw 1/1 Running 0 4m54s reviews-v2-6f85cb9b7c-w9l8s 1/1 Running 0 4m54s reviews-v3-6f5b775685-mg5n6 1/1 Running 0 4m54s
-
편집기에서 애플리케이션의
Deployment
리소스를 엽니다. 이 경우ratings-v1
서비스를 업데이트합니다. 적절한 Pod 삽입 또는 버전 레이블을 포함하도록
배포
의spec.template.metadata.labels
섹션을 업데이트합니다. 이 경우istio.io/rev: my-mesh
:kind: Deployment apiVersion: apps/v1 metadata: name: ratings-v1 namespace: info labels: app: ratings version: v1 spec: template: metadata: labels: istio.io/rev: my-mesh
참고배포의 최상위 '레이블s 섹션에 레이블을
추가하면 사이드카 삽입에 영향을 미치지 않습니다.배포 업데이트로 롤아웃이 트리거되어 업데이트된 Pod를 사용하여 새 ReplicaSet을 생성합니다.
검증
다음 명령을 실행하여 사이드카가 성공적으로 삽입되었음을 나타내는 ratings-v1 Pod만 이제
2/2
컨테이너READY
로 표시되는지 확인합니다.$ oc get pods -n info
다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME READY STATUS RESTARTS AGE details-v1-559cd49f6c-b89hw 1/1 Running 0 42m productpage-v1-5f48cdcb85-8ppz5 1/1 Running 0 42m ratings-v1-848bf79888-krdch 2/2 Running 0 9s reviews-v1-6b7444ffbd-7m5wp 1/1 Running 0 42m reviews-v2-67876d7b7-9nmw5 1/1 Running 0 42m reviews-v3-84b55b667c-x5t8s 1/1 Running 0 42m
- 메시에 포함할 다른 워크로드에 대해 반복합니다.