이번에는 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
그러면 대시보드 화면이 아래와 같이 나오게 됩니다.

이상 입니다.
'쿠버네티스' 카테고리의 다른 글
MetalLB 설치 오류 해결 (kyverno 정책) (0) | 2024.10.15 |
---|---|
NFS를 사용하여 k8s에서 PV 동적 할당 해보기 (4) | 2024.10.11 |
쿠버네티스 대시보드 생성 및 접속 (0) | 2024.08.06 |
쿠버네티스 클러스터 내 DNS 주소 변경 (0) | 2024.07.26 |
쿠버네티스 네임스페이스 변경 (0) | 2024.06.27 |