Kubernetes

[Istio] Helm을 이용한 설치

비번변경 2024. 4. 2. 22:34

개요

2024.03.06 - [Istio] 다운로드 및 설치에서 istioctl을 이용해 istio를 설치해 보았다. 다만 보통 쿠버네티스 환경에서 애플리케이션을 설치할 때 Helm을 많이 이용하므로, 이번 글에서는 Helm을 이용해 Istio를 설치해보려고 한다.

 

 

레포지터리 추가

istio 관련 차트가 저장된 레포지터리를 추가한다.

helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update

 

 

Chart 설치

1. 네임스페이스 생성

kubectl create namespace istio-system

 

2. Istio-base 차트 배포

Istio 동작에 필요한 CRD 생성을 위해 배포한다.

helm install istio-base istio/base -n istio-system --set defaultRevision=default

 

3. istiod 차트 배포

istiod 서비스를 설치하기 위해 배포한다.

helm install istiod istio/istiod -n istio-system --set profile=demo --wait

이 때 profile을 지정하여 배포할 수 있다. 이 글에서는 demo profile을 사용하여 배포했다. 배포가 완료되었으면 istiod 포드가 정상적으로 동작하는지 확인한다.

구성에 따라 cni, ingress-gateway 등을 설치해야 하는 것 같은데 일단 기본적인 설치 방법은 완료된 것 같다.

참고로 공식 문서에 의하면 Istio CNI 차트를 사용하고 싶다면 istio-base를 배포하고, istiod를 배포하기 전에 배포해야 한다고 한다.

 

 

테스트

2024.03.06 - [Istio] 다운로드 및 설치 글을 작성했을 때와 동일하게 샘플 애플리케이션을 배포하여 istio가 정상적으로 동작하는지 확인해 본다.

 

1. Enovy Proxy 자동 추가 설정

kubectl label namespace default istio-injection=enabled

 

2. 샘플 애플리케이션 배포

curl -L https://istio.io/downloadIstio | sh -
kubectl apply -f /<PATH/ISTIO>/samples/bookinfo/platform/kube/bookinfo.yaml

배포된 pod를 보면 istioctl로 설치했을 때와 동일하게 두 개의 컨테이너가 생성된 것을 확인할 수 있다.

모든 Pod가 전부 동작 상태가 되면 아래의 명령을 실행하여 응답이 돌아오는지 확인한다.

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

 

 

참고 문서

https://istio.io/latest/docs/setup/install/helm/

https://www.anyflow.net/sw-engineer/install-istio-in-production

https://github.com/istio/istio/tree/master/manifests/charts/istio-control/istio-discovery

728x90