쿠버네티스

Istio 설치

황동리 2024. 9. 27. 11:15
반응형

이번에는 Istio 설치를 해보겠습니다.

Istio란?

Istio는 서비스 메쉬(Service Mesh)로, 클라우드 네이티브 애플리케이션에서 마이크로서비스 간의 통신을 쉽게 관리할 수 있도록 돕는 오픈 소스 입니다.

 

Istio는 주로 Kubernetes 환경에서 사용되며, 다음과 같은 기능을 제공합니다.

 

트래픽 관리: 마이크로서비스 간의 네트워크 트래픽을 제어하고 라우팅하는 기능을 제공합니다. 이를 통해 A/B 테스트, 카나리 배포, 서비스 간 로드 밸런싱 등을 쉽게 할 수 있습니다.

 

보안: 서비스 간 통신을 자동으로 암호화(TLS)하고, 인증 및 권한 부여를 관리합니다. 또한 서비스 간의 보안 정책을 중앙에서 관리할 수 있게 해줍니다.

 

관찰 가능성(Observability): 마이크로서비스 간의 트래픽에 대한 모니터링, 로깅, 트레이싱 등의 기능을 통해 시스템 상태를 쉽게 파악할 수 있도록 도와줍니다. 예를 들어, Prometheus와 같은 모니터링 시스템과 통합할 수 있습니다.

 

서비스 복원력: 서비스 간의 통신 중단에 대한 자동 복구 기능, 서비스 간의 재시도, 타임아웃 설정 등을 통해 애플리케이션의 가용성을 높일 수 있습니다.

 

Istio는 사이드카 패턴을 사용하여, 각 서비스마다 별도의 프록시(보통 Envoy)를 배포하여 트래픽을 관리합니다. 이를 통해 서비스 코드를 변경하지 않고도 트래픽 관리 및 보안 기능을 적용할 수 있는 것이 큰 장점입니다.

설치 과정

설치과정은 공식문서를 보고 하였습니다.
https://istio.io/latest/docs/setup/getting-started/

 

설치를 진행하기 이전에 쿠버네티스 클러스터 환경이 구성이 되어있어야 합니다.


Istio 구성 파일 다운로드

설치에 필요한 파일들을 다운받아 줍니다.

# curl -L https://istio.io/downloadIstio | sh -

 

다운을 받아주면 istio-1.23.2 디렉터리로 이동 해줍니다.

# cd istio-1.23.2

 

그리고 디렉터리를 확인해주면 bin 디렉터리가 있는 데 istioctl 바이너리 파일이 있습니다.

 

istioctl을 /usr/local/bin 디렉터리에 넣어줍니다.

# cd bin
# cp istioctl /usr/local/bin/

 

Istio 설치

이제 Istio 설치를 진행해보도록 하겠습니다.

# cd istio-1.23.2
# istioctl install -f samples/bookinfo/demo-profile-no-gateways.yaml -y

 

그리고 나중에 애플리케이션을 배포할 때, Envoy 사이드를 자동으로 생성 하도록 하기 위해서

 

네임스페이스에 레이블을 추가해줍니다.


(저는 default 네임스페이스에 레이블을 추가하였습니다.)

# kubectl label namespace default istio-injection=enabled

 

 

Kubernetes Gateway API CRD 설치

기본적으로 Kubernetes 클러스터에 Gateway API가 설치 되어 있지 않아서 설치를 해줍니다.

# kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.1.0" | kubectl apply -f -; }

 

 

대시보드 설치

Istio 대시보드에서는 서비스 메시의 토폴로지를 표시하고 메시의 상태를 분석 하는데 도움이 됩니다.

# cd istio-1.23.2
# kubectl apply -f samples/addons
# kubectl rollout status deployment/kiali -n istio-system
Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
deployment "kiali" successfully rolled out

 

그리고 대시보드에 접속 해봅니다.

# istioctl dashboard kiali

 

그러면 대시보드 화면이 아래와 같이 나오게 됩니다.

 

이상 입니다.

반응형