1.4. 검색 선택기를 사용하여 서비스 메시의 범위 지정
서비스 메시에는 다음 기준을 충족하는 워크로드가 포함됩니다.
- 컨트롤 플레인에서 워크로드를 검색했습니다.
- 워크로드에 Envoy 프록시 사이드카가 삽입되어 있습니다.
기본적으로 컨트롤 플레인은 다음과 같은 결과를 통해 클러스터의 모든 네임스페이스에서 워크로드를 검색합니다.
- 각 프록시 인스턴스는 메시에 등록되지 않은 워크로드를 포함하여 모든 네임스페이스에 대한 구성을 받습니다.
- 적절한 Pod 또는 네임스페이스 삽입 레이블이 있는 모든 워크로드는 프록시 사이드카를 수신합니다.
공유 클러스터에서는 서비스 메시의 범위를 특정 네임스페이스로만 제한할 수 있습니다. 이 접근 방식은 여러 서비스 메시가 동일한 클러스터에서 실행되는 경우 특히 유용합니다.
1.4.1. 검색 선택기 정보
검색 선택기를 사용하면 메시 관리자는 컨트롤 플레인에서 액세스할 수 있는 네임스페이스를 제어할 수 있습니다. 관리자는 Kubernetes 라벨 선택기를 사용하여 지정된 기준과 일치하지 않는 네임스페이스를 제외하고 컨트롤 플레인에 표시되는 네임스페이스에 대한 기준을 설정합니다.
Istiod는 모든 네임스페이스에 대해 항상 OpenShift에 대한 감시를 엽니다. 그러나 검색 선택기는 처리 초기에 선택되지 않은 오브젝트를 무시하여 비용을 최소화합니다.
discoverySelectors
필드는 네임스페이스의 라벨에 적용되는 Kubernetes 선택기 배열을 허용합니다. 다양한 사용 사례에 대해 각 선택기를 구성할 수 있습니다.
-
사용자 정의 레이블 이름 및 값. 예를 들어
istio-discovery=enabled
레이블이 있는 모든 네임스페이스를 구성합니다. -
OR 논리와 함께 세트 기반 선택기를 사용하여 네임스페이스 레이블 목록입니다. 예를 들어
istio-discovery=enabled
ORregion=us-east1
을 사용하여 네임스페이스를 구성합니다. -
네임스페이스 포함 및 제외. 예를 들어
istio-discovery=enabled
및app=helloworld
레이블을 사용하여 네임스페이스를 구성합니다.
검색 선택기는 보안 경계가 아닙니다. Istiod는 discoverySelector
필드를 구성한 경우에도 모든 네임스페이스에 계속 액세스할 수 있습니다.
추가 리소스
1.4.2. 검색 선택기를 사용하여 서비스 메시의 범위 지정
Service Mesh에 포함할 네임스페이스를 알고 있는 경우 Istio
리소스의 meshConfig.
섹션에 필요한 선택기를 추가하여 설치 중 또는 설치 후 discoverySelectors를 구성합니다. 예를 들어 discoverySelectors
istio-discovery=enabled
라는 레이블이 지정된 네임스페이스만 검색하도록 Istio를 구성합니다.
사전 요구 사항
- OpenShift Service Mesh Operator가 설치되어 있습니다.
- Istio CNI 리소스가 생성됩니다.
프로세스
Istio 컨트롤 플레인이 포함된 네임스페이스에 레이블을 추가합니다(예:
istio-system
시스템 네임스페이스).$ oc label namespace istio-system istio-discovery=enabled
동일한 레이블이 있는
discoverySelectors
섹션을 포함하도록Istio
컨트롤 플레인 리소스를 수정합니다.kind: Istio apiVersion: sailoperator.io/v1alpha1 metadata: name: default spec: namespace: istio-system values: meshConfig: discoverySelectors: - matchLabels: istio-discovery: enabled
Istio CR을 적용합니다.
$ oc apply -f istio.yaml
-
서비스 메시의 일부가 될 워크로드가 포함된 모든 네임스페이스에
discoverySelector
레이블과 필요한 경우 적절한 Istio injection 라벨이 있어야 합니다.
검색 선택기는 단일 서비스 메시의 범위를 제한할 수 있으며 단일 클러스터에 여러 Istio 컨트롤 플레인을 배포할 때 컨트롤 플레인 범위를 제한하는 데 필수적입니다.