관리형 컨트롤 플레인에서 선택적 기능 사용 설정

이 페이지에서는 관리형 Cloud Service Mesh에서 선택적 기능을 사용 설정하는 방법을 설명합니다. 클러스터 내 컨트롤 플레인은 클러스터 내 컨트롤 플레인에서 선택적 기능 사용 설정을 참조하세요.

관리형 Cloud Service Mesh를 프로비저닝할 때 지원되는 기능은 컨트롤 플레인 구현에 따라 다르며 특정 기능은 허용 목록을 통해서만 사용할 수 있습니다. 자세한 내용은 지원되는 기능을 참고하세요. 현재 IstioOperator 기반 구성을 사용하는 경우 IstioOperator에서 마이그레이션 도구를 사용하면 관리형 제어 영역에서 지원되는 구성으로 변환할 수 있습니다.

Distroless 프록시 이미지

  • 관리형 TRAFFIC_DIRECTOR컨트롤 플레인 구현으로 Cloud Service Mesh에 직접 온보딩한 경우 distroless 이미지 유형만 지원됩니다. 변경은 불가능합니다.

  • Fleet에서 원래 ISTIOD 컨트롤 플레인 구현을 사용했고 TRAFFIC_DIRECTOR 구현으로 마이그레이션된 경우 이미지 유형은 마이그레이션 중에 변경되지 않으며 이미지 유형을 직접 distroless로 변경할 수 있습니다.

컨테이너 런타임의 콘텐츠를 필요한 패키지로만 제한하는 것이 좋습니다. 이 접근 방법은 CVE(Common Vulnerabilities and Exposure) 스캐너의 보안과 신호 대 잡음비를 향상시킵니다. Istio는 distroless 기본 이미지를 기반으로 프록시 이미지를 제공합니다.

distroless 프록시 이미지에는 프록시 이외의 바이너리가 포함되지 않습니다. 따라서 셸을 exec하거나 컨테이너 내에서 curl, ping 또는 기타 디버그 유틸리티를 사용할 수 없습니다. 하지만 임시 컨테이너를 사용하여 실행 중인 워크로드 포드에 연결하여 검사하고 커스텀 명령어를 실행할 수 있습니다. 예를 들어 Cloud Service Mesh 로그 수집을 참고하세요.

다음 구성은 전체 Cloud Service Mesh에 대해 distroless 이미지를 사용 설정합니다. 이미지 유형 변경이 적용되려면 각 포드가 다시 시작되고 다시 삽입되어야 합니다.

     apiVersion: v1
     kind: ConfigMap
     metadata:
       name: istio-release-channel
       namespace: istio-system
     data:
       mesh: |-
         defaultConfig:
           image:
             imageType: distroless

다음 포드 주석을 사용하여 imageType을 재정의할 수 있습니다.

sidecar.istio.io/proxyImageType: debug

주석을 사용해 배포 이미지 유형을 변경한 후에는 배포를 다시 시작해야 합니다.

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

디버그 기본 이미지가 필요하지 않으므로 대부분의 프록시 디버깅 유형은 gcloud beta container fleet mesh debug proxy-status / proxy-config(세부정보)를 사용해야 합니다.

아웃바운드 트래픽 정책

기본적으로 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
    ...
    

최종 사용자 인증

배포된 워크로드에 대한 브라우저 기반 최종 사용자 인증 및 액세스 제어를 위해 관리형 Cloud Service Mesh 사용자 인증을 구성할 수 있습니다. 자세한 내용은 Cloud Service Mesh 사용자 인증 구성을 참조하세요.

워크로드의 최소 TLS 버전 구성

관리형 TRAFFIC_DIRECTOR 컨트롤 플레인 구현을 사용하여 Cloud Service Mesh에 직접 온보딩한 경우에는 이 설정을 변경할 수 없습니다.

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