표준 서비스 정의
참고: 표준 서비스는 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 포드 리소스에 있음
- 외부 서비스의 경우 라벨은 Istio ServiceEntry 리소스에 있습니다.
표준 서비스는 연결된 워크로드 인스턴스와 동일한 Kubernetes 네임스페이스를 가지며 네임스페이스를 포괄할 수 없습니다.
자동 라벨 지정 규칙
Cloud Service Mesh는 개발자 측에서 아무런 조치를 취하지 않아도 워크로드를 표준 서비스로 자동 그룹화합니다. 사용자는 다음과 같은 작업만 수행하면 됩니다.
- 사용자 또는 독자의 이해를 돕기 위해 라벨 조정
- 기본 동작을 재정의
Kubernetes 포드에서 자동 라벨 지정
정규 서비스는 Kubernetes app.kubernetes.io/name 및 app 라벨 주변에 중점을 둡니다. 이때 이전 라벨이 우선 적용됩니다.
워크로드에서 이 두 라벨 중 하나를 사용하면 추가 작업이 필요하지 않습니다.
수동 라벨 지정
표준 서비스 라벨을 수동으로 적용하거나 재정의하려면 지원되는 워크로드 리소스 구성에 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:
...
외부 서비스 수동 라벨 지정
단일 외부 서비스/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
...