Istioctl Check-Inject로 사이드카 인젝션 검증하기

Istioctl Check-Inject로 사이드카 인젝션 검증하기 (Verifying Istio Sidecar Injection with Istioctl Check-Inject)

istioctl experimental check-inject는 특정 웹훅이 여러분의 파드에서 Istio 사이드카 인젝션을 수행하는지 검증하는 데 도움을 주는 진단 도구예요. 이 도구를 사용해 사이드카 인젝션 구성이 라이브 클러스터에 올바르게 적용되었는지 확인할 수 있어요.

출처: Istio 문서

본문

빠른 시작 (Quick Start)

특정 파드에 Istio 사이드카 인젝션이 발생했는지/발생하지 않았는지(또는 발생할지/발생하지 않을지) 확인하려면 다음을 실행해요:

$ istioctl experimental check-inject -n <namespace> <pod-name>

배포(deployment)에 대해서는:

$ istioctl experimental check-inject -n <namespace> deploy/<deployment-name>

또는 라벨 쌍에 대해서는:

$ istioctl experimental check-inject -n <namespace> -l <label-key>=<label-value>

예를 들어 hello 네임스페이스에 httpbin이라는 배포가 있고, app=httpbin 라벨을 가진 httpbin-1234라는 파드가 있다면, 다음 명령들은 모두 동일해요:

$ istioctl experimental check-inject -n hello httpbin-1234
$ istioctl experimental check-inject -n hello deploy/httpbin
$ istioctl experimental check-inject -n hello -l app=httpbin

결과 예시:

WEBHOOK                      REVISION  INJECTED      REASON
istio-revision-tag-default   default   ✔             Namespace label istio-injection=enabled matches
istio-sidecar-injector-1-18  1-18      ✘             No matching namespace labels (istio.io/rev=1-18) or pod labels (istio.io/rev=1-18)

만약 INJECTED 필드가 ✔로 표시되면, 그 행의 웹훅이 인젝션을 수행한다는 뜻이고, 웹훅이 사이드카 인젝션을 수행하는 이유도 함께 보여줘요.

만약 INJECTED 필드가 ✘로 표시되면, 그 행의 웹훅이 인젝션을 수행하지 않는다는 뜻이고, 이유도 함께 표시돼요.

웹훅이 인젝션을 수행하지 않거나 인젝션에 오류가 발생하는 가능한 이유들:

일치하는 네임스페이스 라벨이나 파드 라벨이 없음: 네임스페이스나 파드에 올바른 라벨이 설정되어 있는지 확인해요.

특정 리비전에 대한 일치하는 네임스페이스 라벨이나 파드 라벨이 없음: 원하는 Istio 리비전과 일치하도록 올바른 라벨을 설정해요.

인젝션을 방지하는 파드 라벨: 해당 라벨을 제거하거나 적절한 값으로 설정해요.

인젝션을 방지하는 네임스페이스 라벨: 라벨을 적절한 값으로 변경해요.

사이드카를 인젝션하는 여러 웹훅: 인젝션을 위해 하나의 웹훅만 활성화되어 있는지 확인하거나, 특정 웹훅을 타깃팅하도록 네임스페이스나 파드에 적절한 라벨을 설정해요.

See also

Istioctl Analyze로 구성 진단하기 — istioctl analyze를 사용해 구성의 잠재적인 문제를 식별하는 방법.

Istioctl로 설치 — 심층 평가나 프로덕션 사용을 위해 어떤 Istio 구성 프로파일이든 설치하고 커스터마이즈하기.

Istioctl Describe로 메시 이해하기 — istioctl describe를 사용해 메시에 있는 파드의 구성을 검증하는 방법.

플랫 네트워크에서 Istio Ambient 모드로 Kubernetes 보안 강화 — 플랫 온프레미스 네트워크를 보호하기 위해 Istio Ambient 모드를 사용하는 방법.

Istio의 Kubernetes 네이티브 사이드카 — 새로운 SidecarContainers 기능을 Istio와 함께 데모하기.

원격 클러스터용 istioctl 구성 — 외부 컨트롤 플레인이 있는 메시에서 istioctl 명령을 지원하기 위해 프록시 서버 사용하기.

더 알아보기 (Learn more)