반응형
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-
반응형
댓글