관리형 Anthos Service Mesh에서 선택 기능 사용 설정

이 페이지에서는 관리형 Anthos Service Mesh 제어 영역에서 선택적 기능을 사용 설정하는 방법을 설명합니다. 클러스터 내 제어 영역은 클러스터 내 제어 영역에서 선택적 기능 사용 설정을 참조하세요.

관리형 Anthos Service Mesh를 프로비저닝할 때 기본적으로 사용 설정되는 기능은 플랫폼에 따라 다릅니다. 현재 IstioOperator 기반 구성을 사용하는 경우 IstioOperator에서 마이그레이션 도구를 사용하면 관리형 제어 영역에서 지원되는 구성으로 변환할 수 있습니다.

Envoy 액세스 로그

다음 명령어를 실행하여 Envoy 액세스 로깅을 사용 설정합니다.

  1. 다음 명령어를 실행하여 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).

  2. 다음 명령어를 실행하여 구성 맵을 확인합니다.

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  3. 액세스 로깅이 사용 설정되었는지 확인하려면 accessLogFile: /dev/stdout 줄이 mesh: 섹션에 표시되는지 확인합니다.

    ...
    apiVersion: v1
    data:
      mesh: |
        ....
        accessLogFile: /dev/stdout
    ...
    

Cloud Tracing 사용 설정

다음 명령어를 실행하여 Cloud Trace를 사용하도록 설정합니다.

  1. 다음 명령어를 실행합니다.

    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).

  2. 다음 명령어를 실행하여 구성 맵을 확인합니다.

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  3. Cloud Trace가 사용 설정되어 있는지 확인하려면 다음 줄이 mesh: 섹션에 표시되는지 확인합니다.

    ...
    apiVersion: v1
    data:
      mesh: |
        ....
        defaultConfig:
          tracing:
            stackdriver:{}
    ...
    
  4. 프록시를 다시 시작합니다.

    참고로, 현재 추적기 구성은 프록시 부트스트랩 구성의 일부이므로 추적기 업데이트를 선택하려면 각 포드를 다시 시작하고 다시 주입해야 합니다. 예를 들어 다음 명령어를 사용하여 배포에 속한 포드를 다시 시작할 수 있습니다.

    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를 사용해야 합니다.

아웃바운드 트래픽 정책

기본적으로 outboundTrafficPolicyALLOW_ANY로 설정됩니다. 이 모드에서는 모든 외부 서비스에 대한 모든 트래픽이 허용됩니다. 서비스 항목이 정의된 외부 서비스로만 트래픽을 제어하고 제한하려면 ALLOW_ANY의 기본 동작을 REGISTRY_ONLY로 변경할 수 있습니다.

  1. 다음 구성은 outboundTrafficPolicyREGISTRY_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).

  2. 아래 명령어를 사용하여 configmap에서 필요한 위의 구성 변경사항을 적용할 수 있습니다.

    kubectl edit configmap istio-release-channel -n istio-system -o yaml
    
  3. 다음 명령어를 실행하여 구성 맵을 확인합니다.

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  4. REGISTRY_ONLYoutboundTrafficPolicy로 사용 설정되었는지 확인하려면 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