표준 서비스 정의
참고: 표준 서비스는 Cloud Service Mesh 버전 1.6.8 이상에서 자동으로 지원됩니다.
표준 서비스는 동일한 서비스 및 API를 구현하는 워크로드 그룹입니다. 지원되는 워크로드 유형의 경우 Cloud Service Mesh는 Kubernetes API 서버의 기존 정보를 기반으로 자동으로 표준 서비스 리소스를 만듭니다. 이 페이지에서는 자동으로 표준 서비스를 정의하는 라벨과 서비스 경계를 직접 조정하는 방법을 설명합니다. 현재 지원되는 워크로드 인스턴스 유형은 다음과 같습니다.
- Kubernetes 포드(Kubernetes 배포, Kube Run 서비스 등을 통한 정보 포함)
- 가상 머신 인스턴스
- 메시 외부 서비스(특히
MESH_EXTERNAL
위치의 ServiceEntry 리소스)
무엇이 표준 서비스를 정의하는가?
Cloud Service Mesh는 각 워크로드 인스턴스와 연결된 Kubernetes 구성 리소스에서 service.istio.io/canonical-name
라벨을 읽고 표준 서비스 멤버십을 결정합니다.
- 포드의 경우 라벨은 Kubernetes 포드 리소스에 있음
- VM의 경우 라벨은 Istio WorkloadEntry 리소스에 있음
- 외부 서비스의 경우 라벨은 Istio ServiceEntry 리소스에 있습니다.
표준 서비스는 연결된 워크로드 인스턴스와 동일한 Kubernetes 네임스페이스를 가지며 네임스페이스를 포괄할 수 없습니다.
자동 라벨 지정 규칙
Cloud Service Mesh는 개발자 측에서 아무런 조치를 취하지 않아도 포드 및 VM 기반 워크로드를 표준 서비스로 자동 그룹화합니다. 사용자는 다음과 같은 작업만 수행하면 됩니다.
- 사용자/리더를 선명도를 위한 라벨 조정
- 기본 동작을 재정의
Kubernetes 포드에서 자동 라벨 지정
정규 서비스는 Kubernetes app.kubernetes.io/name
및 app
라벨 주변에 중점을 둡니다. 이때 이전 라벨이 우선 적용됩니다.
워크로드에서 이 두 라벨 중 하나를 사용하면 추가 작업이 필요하지 않습니다.
가상 머신에서 자동 라벨 지정
VM에 표준 서비스를 빌드하려면 Kubernetes API 서버에서 WorkloadEntry 리소스를 구성하여 VM을 서비스 메시에 추가해야 합니다.
수동 라벨 지정
표준 서비스 라벨을 수동으로 적용하거나 재정의하려면 지원되는 워크로드 리소스 구성에 service.istio.io/canonical-name
라벨을 적용합니다.
외부 서비스를 표준 서비스로 인식하려면 해당 ServiceEntry에 수동으로 라벨을 지정해야 합니다.
Kubernetes pod에서 수동 라벨 지정
배포를 사용하여 여러 포드를 한 번에 배포하려면 PodTemplateSpec에서 service.istio.io/canonical-name
라벨을 설정하세요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
replicas: 3
template:
metadata:
labels:
service.istio.io/canonical-name: my-service
spec:
containers:
...
단일 pod의 표준 서비스에 라벨을 지정하려면 pod 구성의 labels
섹션에 service.istio.io/canonical-name
라벨을 추가합니다.
apiVersion: v1
kind: Pod
metadata:
name: my-test-pod
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
가상 머신 수동 라벨 지정
단일 VM/워크로드 워크로드의 일반 서비스에 라벨을 지정하려면 WorkloadEntry 구성의 '라벨' 섹션에 service.istio.io/canonical-name
라벨을 추가합니다.
apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
name: my-vm-123
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
외부 서비스 수동 라벨 지정
단일 외부 서비스/ServiceEntry의 표준 서비스에 라벨을 지정하려면 ServiceEntry 구성의 'labels' 섹션에 service.istio.io/canonical-name
라벨을 추가합니다.
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: example-com
namespace: my-namespace
labels:
service.istio.io/canonical-name: an-external-service
spec:
location: MESH_EXTERNAL
...