본문 바로가기
ISTIO

ISTIO 설치

by aws-evan 2024. 12. 20.
반응형

 

 

 

ISTIO

  • 분산 애플리케이션에 투명하게 레이어링되는 오픈 소스 서비스 메시
  • 서비스를 보안, 연결 및 모니터링하는 균일하고 효율적인 방법을 제공
  • 서비스 코드를 거의 변경하지 않고도 부하 분산, 서비스 간 인증 및 모니터링

ISTIO 효과

  • 상호 TLS 암호화, 강력한 ID 기반 인증 및 권한 부여를 통해 클러스터에서 안전한 서비스 간 통신을 제공
  • HTTP, gRPC, WebSocket 및 TCP 트래픽에 대한 자동 로드 밸런싱
  • 클러스터 유입 및 유출을 포함하여 클러스터 내의 모든 트래픽에 대한 자동 메트릭, 로그 및 추적

 

 

 

  • 현재 단일 서비스로 동작하고 있지만, 추후에 서비스 확장하고 MSA 환경으로 운영하고 쉽게 운영하기 위해서 미리 ISTIO를 통하여 다수의 서비스 운영경험 가져보자

 

  • istioctl 설치
    • 다운로드 후 폴더명(버전마다 다를 수 있음) : istio-1.24.2
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.24.2
export PATH=$PWD/bin:$PATH

 

  • demo게이트웨이 없이 프로필을 사용하여 Istio 설치
 istioctl install -f samples/bookinfo/demo-profile-no-gateways.yaml -y

 

 

  • 애플리케이션 배포할때 Istio가 Envoy 사이드카 프록시를 자동 주입하기 위해 네임스페이스 라벨 추가
 kubectl label namespace default istio-injection=enabled

 

 

 

Kubernetes Gateway API CRD 설치

 

  • 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.2.0" | kubectl apply -f -; }

 

 

 

  • 샘플 애플리케이션 배포
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml

 

 

  • 서비스 확인
kubectl get svc
kubectl get 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>"
curl 10.43.174.184:9080/productpage
curl "productpage Service IP":9080/productpage

 

 

외부 트래픽에 대한 열기

  • Bookinfo 애플리케이션에 대한 Kubernetes Gateway 생성
kubectl apply -f samples/bookinfo/gateway-api/bookinfo-gateway.yaml

 

  • ClusterIP 게이트웨어에 주석 달아 서비스 유형 변경
kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=ClusterIP --namespace=default

 

  • 게이트웨이 확인하기
kubectl get gateway

 

  • 외부에서 애플리케이션 접속
    • port-forward를 사용핳면 localhost만 접근이 가능
kubectl port-forward svc/bookinfo-gateway-istio 8080:80

 

대시보드 생성

 

 

 

  • Grafana , jaeger, kiali 에드온 설치
kubectl apply -f samples/addons

 

  • kiali 대시보드 오픈
istioctl dashboard kiali

 

 

 

 

 

제거

  •  RBAC 권한과 istio-system네임스페이스 아래의 모든 리소스를 계층적으로 삭제
kubectl delete -f samples/addons
istioctl uninstall -y --purge

 

  • istio-system 네임 스페이스 삭제
kubectl delete namespace istio-system

 

 

  • Envovy 사이드카 프록시 자동 주입 레이블 제거
kubectl label namespace default istio-injection-
반응형

댓글