이 페이지에서는 관리형 Anthos Service Mesh 제어 영역에서 선택적 기능을 사용 설정하는 방법을 설명합니다. 클러스터 내 제어 영역은 클러스터 내 제어 영역에서 선택적 기능 사용 설정을 참조하세요.
관리형 Anthos Service Mesh를 프로비저닝할 때 기본적으로 사용 설정되는 기능은 플랫폼에 따라 다릅니다. 현재 IstioOperator
기반 구성을 사용하는 경우 IstioOperator에서 마이그레이션 도구를 사용하면 관리형 제어 영역에서 지원되는 구성으로 변환할 수 있습니다.
Envoy 액세스 로그
다음 명령어를 실행하여 Envoy 액세스 로깅을 사용 설정합니다.
다음 명령어를 실행하여
accessLogFile: /dev/stdout
을 추가합니다.cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- accessLogFile: /dev/stdout kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
여기서 release-channel은 출시 채널입니다(
asm-managed
,asm-managed-stable
,asm-managed-rapid
).다음 명령어를 실행하여 구성 맵을 확인합니다.
kubectl get configmap istio-release-channel -n istio-system -o yaml
액세스 로깅이 사용 설정되었는지 확인하려면
accessLogFile: /dev/stdout
줄이mesh:
섹션에 표시되는지 확인합니다.... apiVersion: v1 data: mesh: | .... accessLogFile: /dev/stdout ...
Cloud Tracing 사용 설정
다음 명령어를 실행하여 Cloud Trace를 사용하도록 설정합니다.
다음 명령어를 실행합니다.
cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- defaultConfig: tracing: stackdriver: {} kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
여기서 release-channel은 출시 채널입니다(
asm-managed
,asm-managed-stable
,asm-managed-rapid
).다음 명령어를 실행하여 구성 맵을 확인합니다.
kubectl get configmap istio-release-channel -n istio-system -o yaml
Cloud Trace가 사용 설정되어 있는지 확인하려면 다음 줄이
mesh:
섹션에 표시되는지 확인합니다.... apiVersion: v1 data: mesh: | .... defaultConfig: tracing: stackdriver:{} ...
프록시를 다시 시작합니다.
참고로, 현재 추적기 구성은 프록시 부트스트랩 구성의 일부이므로 추적기 업데이트를 선택하려면 각 포드를 다시 시작하고 다시 주입해야 합니다. 예를 들어 다음 명령어를 사용하여 배포에 속한 포드를 다시 시작할 수 있습니다.
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
지원되는 trace 헤더에 대한 자세한 내용은 trace 액세스를 참조하세요.
Distroless 프록시 이미지
컨테이너 런타임의 콘텐츠를 필요한 패키지로만 제한하는 것이 좋습니다. 이 접근 방법은 CVE(Common Vulnerabilities and Exposure) 스캐너의 보안과 신호 대 잡음비를 향상시킵니다. Istio는 distroless 기본 이미지를 기반으로 프록시 이미지를 제공합니다.
다음 구성은 전체 Anthos Service Mesh에 대해 distroless 이미지를 사용 설정합니다. 이미지 유형 변경이 적용되려면 각 포드가 다시 시작되고 다시 삽입되어야 합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
defaultConfig:
image:
imageType: distroless
distroless 프록시 이미지에는 프록시 이외의 바이너리가 포함되지 않습니다. 따라서 셸을 exec
하거나 컨테이너 내에서 curl
, ping
또는 기타 디버그 유틸리티를 사용할 수 없습니다. 특정 배포의 이러한 도구에 액세스해야 하는 경우 다음 포드 주석을 사용하여 imageType
을 재정의할 수 있습니다.
sidecar.istio.io/proxyImageType: debug
주석을 통해 배포 이미지 유형을 변경한 후에는 배포를 다시 시작해야 합니다.
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
대부분의 프록시 디버깅 유형에서는 디버그 기본 이미지가 필요 없는 istioctl proxy-cmd
를 사용해야 합니다.
아웃바운드 트래픽 정책
기본적으로 outboundTrafficPolicy
는 ALLOW_ANY
로 설정됩니다. 이 모드에서는 모든 외부 서비스에 대한 모든 트래픽이 허용됩니다.
서비스 항목이 정의된 외부 서비스로만 트래픽을 제어하고 제한하려면 ALLOW_ANY
의 기본 동작을 REGISTRY_ONLY
로 변경할 수 있습니다.
다음 구성은
outboundTrafficPolicy
를REGISTRY_ONLY
로 구성합니다.apiVersion: v1 kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system data: mesh: |- outboundTrafficPolicy: mode: REGISTRY_ONLY
여기서 release-channel은 출시 채널입니다(
asm-managed
,asm-managed-stable
,asm-managed-rapid
).아래 명령어를 사용하여 configmap에서 필요한 위의 구성 변경사항을 적용할 수 있습니다.
kubectl edit configmap istio-release-channel -n istio-system -o yaml
다음 명령어를 실행하여 구성 맵을 확인합니다.
kubectl get configmap istio-release-channel -n istio-system -o yaml
REGISTRY_ONLY
이outboundTrafficPolicy
로 사용 설정되었는지 확인하려면mesh:
섹션에 다음 줄이 표시되는지 확인합니다.... apiVersion: v1 data: mesh: | outboundTrafficPolicy: mode: REGISTRY_ONLY ...
최종 사용자 인증
배포된 워크로드에 대한 브라우저 기반 최종 사용자 인증 및 액세스 제어를 위해 관리형 Anthos Service Mesh 사용자 인증을 구성할 수 있습니다. 자세한 내용은 Anthos Service Mesh 사용자 인증 구성을 참조하세요.
워크로드의 최소 TLS 버전 구성
minProtocolVersion
필드를 사용하여 워크로드 간의 TLS 연결에 대한 최소 TLS 버전을 지정할 수 있습니다. 최소 TLS 버전 설정 및 워크로드의 TLS 구성 확인에 대한 자세한 내용은 Istio 워크로드 최소 TLS 버전 구성을 참조하세요.
다음 예시에서는 워크로드의 최소 TLS 버전을 1.3으로 설정하는 ConfigMap
을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
meshMTLS:
minProtocolVersion: TLSV1_3