Istio on GKE

Istio on GKE는 GKE용 부가기능입니다. 이를 사용하면 Istio 서비스 메시를 만들고 실행하는 데 필요한 모든 구성요소가 포함된 클러스터를 단일 단계로 신속하게 만들 수 있습니다. Istio 제어 영역 구성요소는 설치된 후 자동으로 최신 상태로 유지되므로, 새 버전 업그레이드를 염려할 필요가 없습니다. 또한 부가기능을 사용하여 기존 클러스터에 Istio를 설치할 수도 있습니다.

Istio란 무엇인가요?

Istio는 동일한 방법으로 마이크로서비스의 연결, 관리, 보호를 지원하는 개방형 서비스 메시입니다. Istio에서는 마이크로서비스 코드를 변경할 필요 없이 서비스 간 트래픽 흐름 관리, 액세스 정책 적용, 원격 분석 데이터 집계가 가능합니다.

Istio의 이점은 다음과 같습니다.

  • HTTP, gRPC, WebSocket, MongoDB, TCP 트래픽에 대한 자동 부하 분산이 지원됩니다.
  • 다양한 라우팅 규칙, 재시도, 장애 조치, 결함 주입으로 트래픽 동작을 세밀하게 제어할 수 있습니다.
  • 구성 가능한 정책 레이어와 API 지원 액세스 제어, 비율 제한, 할당량이 지원됩니다.
  • 클러스터 인그레스와 이그레스를 포함해 클러스터 내부의 모든 트래픽에 대한 자동 측정항목, 로그, trace가 지원됩니다.
  • 강력한 ID 기반 인증 및 승인으로 클러스터에서 서비스 간 통신을 보호합니다.

kubectl 또는 Istio 명령줄 도구 istioctl(추가 검증 기능 제공)를 통해 커스텀 Kubernetes API를 사용하여 Istio 액세스 제어, 라우팅 규칙 등을 구성합니다.

개요에서 Istio에 대해 자세히 알아보고 istio.io에서 전체 오픈소스 문서 집합을 읽어볼 수 있습니다.

Istio on GKE란 무엇인가요?

Istio on GKE는 GKE 클러스터에서 Istio 자동 설치 및 업그레이드 기능을 제공하는 도구입니다. GKE를 업그레이드할 때 이 부가기능은 GKE에서 지원되는 최신 Istio 버전으로 자동으로 업그레이드됩니다. 따라서 GKE 클러스터 수명 주기에 따라 Istio 설치 및 업그레이드를 쉽게 관리할 수 있습니다.

Istio on GKE를 사용할 때 Istio는 클러스터 내부에서 실행된다는 것에 주의해야 합니다. 클러스터에서 실행되는 Istio 구성요소에 대해서는 서비스수준계약(SLA)이 적용되지 않습니다.

Istio on GKE를 사용해야 하나요?

Istio on GKE는 설치 및 업그레이드를 관리하면서, 제어 영역에 대해 대부분의 요구에 적합한 기본 설치 옵션을 사용합니다. 하지만 다음과 같은 제한사항에 주의해야 합니다.

  • 설치된 Istio 버전은 GKE 버전에 연결되며, 이를 개별적으로 업데이트할 수 없습니다.

  • 제어 영역 구성에는 강력한 제한사항이 있습니다. 프로덕션에서 Istio on GKE 부가기능을 사용하기 전 이러한 제한상을 검토해야 합니다.

보다 최신 상태의 오픈소스 Istio 버전을 사용해야 할 경우, 또는 Istio 제어 영역 구성을 보다 세밀하게 제어하고 싶은 경우(일부 프로덕션 사용 사례에 해당할 수 있음), Istio on GKE 부가기능 대신 오픈소스 Istio 버전을 사용하는 것이 좋습니다.

어떤 이유로든 자동 설치 기능을 사용할 필요가 없으면, 부가기능을 제거할 수 있습니다. 이를 수행하는 방법은 Istio on GKE 제거를 참조하세요.

무엇이 설치되나요?

Istio on GKE로 클러스터를 만들거나 업데이트하면 다음 핵심 Istio 구성요소가 설치됩니다.

  • Pilot은 서비스 메시의 트래픽 관리를 위한 Envoy 사이드카 구성과 서비스 검색을 수행합니다.
  • Mixer 구성요소인 Istio-Policy와 Istio-Telemetry는 사용 정책을 적용하고 서비스 메시 간에 텔레메트리 데이터를 수집합니다.
  • Istio 인그레스 게이트웨이는 클러스터 외부의 트래픽에 대해 인그레스 지점을 제공합니다.
  • (Istio 1.0 버전만) Istio 이그레스 게이트웨이는 모니터링 및 라우팅 규칙과 같은 Istio 기능을 메시에서 나가는 트래픽에 적용할 수 있습니다. Istio 이그레스 게이트웨이는 기본적으로 버전 1.1 이상에 설치되지 않습니다.
  • Citadel은 Istio를 위한 키 및 인증서 관리를 자동화합니다.
  • Galley는 Istio를 위한 구성 관리 서비스를 제공합니다.

설치를 통해 서비스 워크로드에 Istio 사이드카 프록시를 추가하여 제어 영역과 통신하고 istio 메시를 연결하도록 허용할 수 있습니다.

부가기능 설치 및 제거와 설치 옵션에 대한 자세한 내용은 Istio on GKE 설치를 참조하세요.

Cloud Monitoring 지원

Google Kubernetes Engine Monitoring이 사용 설정된 클러스터에서 Istio Stackdriver 어댑터는 위에 설명된 핵심 구성요소와 함께 설치됩니다. 이 어댑터는 메시에서 Cloud Logging, Cloud Monitoring, Cloud Trace로 측정항목, 로깅, trace 데이터를 전송할 수 있으며, Google Cloud Console에서 서비스 동작을 관측할 수 있게 해줍니다. 프로젝트 및 클러스터에 대해 특정 Cloud Logging, Cloud Monitoring, Cloud Trace 기능을 사용 설정한 후에는 해당 데이터가 기본적으로 사용자의 메시에서 전송됩니다. Istio on GKE 부가 기능은 클러스터의 노드 풀에서 Cloud Monitoring, Logging, Trace에 대해 액세스 범위를 자동으로 설정합니다.

모니터링

Cloud Monitoring API가 Google Cloud 프로젝트에 사용 설정된 경우, Istio 메시가 특정 서비스에서 수신되는 바이트 수와 같이 서비스와 관련된 측정항목을 측정항목 탐색기에 표시되는 Monitoring으로 자동으로 전송합니다. 이러한 측정항목을 사용하여 커스텀 대시보드 및 알림을 만들어서 시간 경과에 따라 서비스를 모니터링하고 서비스가 지정된 요청 수에 근접할 때와 같은 특정 경우에 알림을 받을 수 있습니다. 또한 필터 및 집계를 사용하는 이러한 측정항목을 Monitoring의 기본 제공되는 측정항목과 결합하여 서비스 동작에 대해 새로운 통계를 확인할 수 있습니다.

측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.

  1. Google Cloud Console에서 Monitoring으로 이동하거나 다음 버튼을 사용합니다.
    Monitoring으로 이동
  2. Monitoring 탐색창에서 측정항목 탐색기를 클릭합니다.
  3. 모니터링 리소스 이름을 리소스 유형 및 측정항목 찾기 텍스트 상자에 입력합니다.

Istio 측정항목의 전체 목록은 Cloud Monitoring 문서를 참조하세요.

로깅

Cloud Logging API가 Google Cloud 프로젝트에 사용 설정되었으면 Istio 메시가 로그를 Logging으로 자동으로 전송합니다. 여기에서 로그는 로그 뷰어에 표시됩니다. BigQuery에 로그 내보내기와 같이 로그 데이터로 수행할 수 있는 작업에 대한 자세한 내용은 Cloud Logging 문서를 참조하세요.

Tracing

Istio 메시가 데이터가 trace 뷰어에 표시되는 Cloud Trace로 trace 데이터를 자동으로 전송하도록 Cloud Trace를 사용 설정할 수 있습니다. 성능 병목 현상을 찾는 데 도움이 될 수 있도록 분산 tracing을 최대한 활용하기 위해서는 tracing 헤더를 계측하도록 워크로드를 변경해야 합니다. 이를 수행하는 방법은 Istio 분산 Tracing 가이드를 참조하세요.

업그레이드 프로세스는 어떻게 작동하나요?

Istio 수명주기는 GKE 업그레이드 프로세스의 일부로 관리됩니다. GKE에는 두 가지 업그레이드 프로세스가 있습니다.

  • 마스터 업그레이드: 마스터 업그레이드 프로세스는 자동으로 수행되며, 부가기능은 물론 마스터 노드에서 Kubernetes 제어 영역 구성요소(API 서버, 스케줄러, 컨트롤러 관리자 등)를 업데이트합니다. Istio 제어 영역 구성요소 업그레이드는 이 프로세스 중에 관리됩니다.
  • 노드 업그레이드: 노드 업그레이드 프로세스는 자동(선택 권장)또는 수동으로 진행될 수 있으며, 마스터 노드의 동일 버전과 동기화되도록 워커 노드의 Kubernetes 구성요소를 업데이트합니다. Istio 사이드카 업그레이드는 이 프로세스 중에 관리됩니다.

Istio on GKE는 제어 영역을 최근(반드시 최신일 필요는 없음)의 안정적인 버전으로 자동으로 업그레이드합니다. 이 버전은 일정 기간 동안 오픈소스 배포에서 관측된 안정성 및 성능을 기준으로 선택됩니다. 버전 업그레이드는 istio-gke-announce 그룹에서 미리 공개됩니다. 일반적으로 버전 업그레이드는 2주 이상의 기간 동안 가장 최근 버전부터 시작하여 모든 GKE 버전으로 점진적으로 출시됩니다.

제어 영역 버전은 마지막 2개의 이전 데이터 영역(사이드카 프록시) 버전과의 하위 호환성이 검사됩니다. GKE 클러스터를 업그레이드한 후에는 Pod를 다시 시작하거나(자동 삽입 사용 설정됨) 적절한 버전을 수동으로 다시 삽입하여 가능한 한 빨리 현재 제어 영역 버전으로 사이드카를 업데이트하는 것이 좋습니다.

Istio on GKE는 사용자가 제어 영역 버전을 제어하도록 허용하지 않습니다.

제어 영역 설정 수정

Istio on GKE는 제어 영역의 설치 및 업그레이드 방법을 제어하기 때문에, 사용자가 설치에 제공된 제어 영역 구성 설정을 대부분 수정하도록 허용하지 않습니다. 라벨 지정된 Istio on GKE 버전에 대한 매니페스트(적용되는 매니페스트는 선택한 mTLS 모드 및 Cloud Logging, Cloud Monitoring, Cloud Trace 설정에 따라 다름)에서 기본 설치 옵션을 볼 수 있습니다. 예를 들어 콘솔의 storage/browser/gke-release/istio/release/1.0.3-gke.3/manifests/ 아래에서 1.0.3-gke.3 버전에 대한 설치 옵션을 찾을 수 있습니다. 아래 지정된 설정 외에 이러한 옵션을 수정하면 다시 Kubernetes 부가기능 관리자에 의해 되돌려집니다. 수정할 수 없는 옵션은 1분마다 되돌려집니다.

부가기능을 사용하면서 구성할 수 있는(그리고 프로덕션 설치의 경우 구성해야 하는) 설정은 다음과 같습니다.

  • 자동 확장 처리를 사용하거나 복제본 수를 수동으로 설정하여 제어 영역 구성요소를 수평 확장할 수 있습니다.
  • 제어 영역 컨테이너에 대해 리소스 요청을 지정할 수 있습니다.
  • 제공된 Istio 인그레스 게이트웨이와 같이 업그레이드 중 사용 가능한 상태로 유지해야 하는 배포에 대한 Pod 분산 예산을 설정할 수 있습니다.

이러한 설정을 구성하는 방법은 제어 영역 구성을 참조하세요.

각각의 경우에 사용자가 지정하는 설정은 부가기능으로 설치가 업그레이드될 때 보존됩니다.

다음 단계