메시에 워크로드 추가하기

메시에 워크로드 추가하기 (Add workloads to the mesh)

대부분의 경우 클러스터 관리자가 Istio 메시 인프라를 배포해요. 앰비언트 데이터 플레인 모드를 지원하는 Istio가 성공적으로 배포되면, 그것을 사용하도록 구성된 네임스페이스에 모든 사용자가 배포한 애플리케이션에게 투명하게 제공돼요.

출처: Istio 문서

본문

메시 안 애플리케이션에 앰비언트 모드 활성화하기 (Enabling ambient mode for applications in the mesh)

앰비언트 모드에서 애플리케이션이나 네임스페이스를 메시에 추가하려면, 해당 리소스에 istio.io/dataplane-mode=ambient 레이블을 추가하세요. 이 레이블을 네임스페이스나 개별 파드에 적용할 수 있어요.

앰비언트 모드는 애플리케이션 파드의 관점에서 완전히 투명하게 매끄럽게 활성화(또는 비활성화)될 수 있어요. 사이드카 데이터 플레인 모드와 달리, 애플리케이션을 메시에 추가하기 위해 재시작할 필요가 없고, 파드에 추가 컨테이너가 배포된 것으로 표시되지도 않아요.

Layer 4 및 Layer 7 기능 (Layer 4 and Layer 7 functionality)

보안 L4 오버레이는 인증과 인가 정책을 지원해요. 앰비언트 모드의 L4 정책 지원에 대해 알아보세요. 트래픽 라우팅 같은 Istio의 L7 기능을 사용하려면 웨이포인트 프록시를 배포하고 워크로드를 그것을 사용하도록 등록해야 해요.

앰비언트와 쿠버네티스 NetworkPolicy (Ambient and Kubernetes NetworkPolicy)

앰비언트와 쿠버네티스 NetworkPolicy를 참조하세요.

서로 다른 데이터 플레인 모드의 파드 간 통신 (Communicating between pods in different data plane modes)

앰비언트 데이터 플레인 모드를 사용하는 애플리케이션 파드와 비앰비언트 엔드포인트(쿠버네티스 애플리케이션 파드, Istio 게이트웨이, 쿠버네티스 Gateway API 인스턴스 포함) 사이의 상호운용에는 여러 옵션이 있어요. 이 상호운용은 같은 Istio 메시 안에서 앰비언트와 비앰비언트 워크로드를 매끄럽게 통합하는 여러 옵션을 제공하며, 메시 배포와 운영 요구에 가장 잘 맞도록 앰비언트 기능을 단계적으로 도입할 수 있게 해줘요.

메시 밖의 파드 (Pods outside the mesh)

사이드카 모드든 앰비언트 모드든 메시의 일부가 전혀 아닌 네임스페이스가 있을 수 있어요. 이 경우 비메시 파드는 소스 노드의 ztunnel을 거치지 않고 목적지 파드로 트래픽을 직접 시작하지만, 목적지 파드의 ztunnel은 트래픽을 허용할지 거부할지를 제어하는 L4 정책을 적용해요.

예를 들어, 앰비언트 모드가 활성화된 네임스페이스에서 mTLS 모드가 STRICT로 설정된 PeerAuthentication 정책을 설정하면, 메시 밖에서 오는 트래픽이 거부돼요.

사이드카 모드를 사용하는 메시 안의 파드 (Pods inside the mesh using sidecar mode)

Istio는 같은 메시 안에서 사이드카가 있는 파드와 앰비언트 모드를 사용하는 파드 사이의 East-West 상호운용을 지원해요. 사이드카 프록시는 목적지가 HBONE 목적지로 발견되었기 때문에 HBONE 프로토콜을 사용해야 한다는 것을 알아요.

mTLS 모드가 STRICT인 PeerAuthentication 정책은 Istio 사이드카 프록시가 있는 파드에서 오는 트래픽을 허용해요.

인그레스·이그레스 게이트웨이와 앰비언트 모드 파드 (Ingress and egress gateways and ambient mode pods)

인그레스 게이트웨이는 비앰비언트 네임스페이스에서 실행되면서, 앰비언트 모드, 사이드카 모드, 비메시 파드가 제공하는 서비스를 노출할 수 있어요. 앰비언트 모드 파드와 Istio 이그레스 게이트웨이 사이에도 상호운용이 지원돼요. 이그레스 게이트웨이를 참조해 앰비언트 모드에서 웨이포인트를 전용 이그레스 게이트웨이로 사용하는 방법을 알아보세요. 앰비언트 모드에서 인그레스 트래픽을 목적지 웨이포인트를 통해 보내려면 인그레스 게이트웨이와 웨이포인트에 설명된 대로 istio.io/ingress-use-waypoint 레이블을 사용하세요.

앰비언트 및 사이드카 모드의 파드 선택 로직 (Pod selection logic for ambient and sidecar modes)

Istio의 두 데이터 플레인 모드(사이드카, 앰비언트)는 같은 클러스터에서 공존할 수 있어요. 같은 파드나 네임스페이스가 두 모드를 동시에 사용하도록 구성되지 않도록 하는 것이 중요해요. 다만 그런 일이 발생하면, 그러한 파드나 네임스페이스에 대해서는 현재 사이드카 모드가 우선해요.

같은 네임스페이스 안의 두 파드가, 개별 파드를 네임스페이스 레이블과 별도로 레이블링해 서로 다른 모드를 사용하도록 설정될 수 있다는 점을 이론적으로는 가능하지만, 권장되지는 않아요. 대부분의 일반적인 사용 사례에서는 단일 네임스페이스 안의 모든 파드에 단일 모드를 사용해야 해요.

파드가 앰비언트 모드를 사용하도록 설정되었는지 여부를 결정하는 정확한 로직은 다음과 같아요:

  1. cni.values.excludeNamespaces에 구성된 istio-cni 플러그인 구성 제외 목록을 사용해 제외 목록의 네임스페이스를 건너뜁니다.
  2. 다음 조건에서 파드에 ambient 모드가 사용돼요:

네임스페이스나 파드가 istio.io/dataplane-mode=ambient 레이블을 가짐파드에 옵트아웃 레이블 istio.io/dataplane-mode=none이 없음파드에 sidecar.istio.io/status 어노테이션이 없음

구성 충돌을 피하는 가장 간단한 방법은, 각 네임스페이스가 사이드카 주입 레이블(istio-injection=enabled) 또는 앰비언트 모드 레이블(istio.io/dataplane-mode=ambient) 중 하나는 가지지만, 둘 다는 가지지 않도록 하는 거예요.

레이블 참조 (Label reference)

다음 레이블은 리소스가 앰비언트 모드에서 메시에 포함되는지, 웨이포인트 프록시가 리소스에 대한 L7 정책을 적용하는 데 사용되는지, 트래픽이 웨이포인트로 보내지는 방식을 제어해요.

이름 기능 상태 리소스 설명
istio.io/dataplane-mode Beta Namespace 또는 Pod (후자가 우선) 리소스를 앰비언트 메시에 추가해요.

유효한 값: ambient 또는 none. | | istio.io/use-waypoint | Beta | Namespace, Service 또는 Pod | L7 정책 적용을 위해 label이 붙은 리소스로 가는 트래픽에 웨이포인트를 사용해요.

유효한 값: {waypoint-name} 또는 none. | | istio.io/ingress-use-waypoint | Beta | Namespace, Service 또는 ServiceEntry | true이면, istio.io/use-waypoint가 지배하는 이스트-웨스트 트래픽에 더해 label이 붙은 리소스로의 인그레스 트래픽을 목적지 웨이포인트 경로로 옵트인해요. 컨트롤 플레인에 ENABLE_INGRESS_WAYPOINT_ROUTING이 필요해요.

유효한 값: true 또는 false. 인그레스 게이트웨이와 웨이포인트 참조. | | istio.io/waypoint-for | Alpha | Gateway | 웨이포인트가 어떤 유형의 엔드포인트에 대한 트래픽을 처리할지 지정해요.

유효한 값: service, workload, none 또는 all. 이 레이블은 선택사항이며 기본값은 service예요. |

istio.io/use-waypoint 레이블 값이 유효하려면, 웨이포인트가 그것이 처리할 트래픽에 대해 해당 리소스 유형에 맞게 구성되어 있는지 확인해야 해요. 기본적으로 웨이포인트는 서비스에 대한 트래픽을 수락해요. 예를 들어 istio.io/use-waypoint 레이블을 통해 파드가 특정 웨이포인트를 사용하도록 레이블링할 때, 그 웨이포인트는 값이 workload 또는 all인 istio.io/waypoint-for로 레이블되어야 해요.

더 알아보기 (Learn more)