2022년 7월 25일 월요일

kubernetes-Istio구성정보

 

Istio Concept & Data Flow

  1. Istio의 전체 Concept & Data Flow 
    https://miro.medium.com/max/1600/0*mb8zxtJqtP7MKedD
  2. Concept
    1. ServiceMesh를 이용해 다양한 트래픽을 제어하는 역활
    2. http / websocket / http 등 트래픽 제어/관리에 대한 부하분산 수행
  3. Component별 역활
    1. Data Plane
      • Service A / B에 구성된 Pod에는  Proxy용 Envoy Sidecar container가 배포
    2. Control Plane
      • Mixer - 정책 설정 / ACL / 인증 역활
      • Pilot : ingress routing, traffic mirroring, traffic shifting, canary deployments, circuit breaking, fault injection 역활 수행
      • Galley  : yaml을 istio용으로 변환 후 pilot으로 전송하고.
      • Citadel : 데이터 전송시 암호화 전송(TLS) 역활, 현재 내부 통신에는 암호화과정이 없어서 사용하지 않음
  4. 구성시 유의사항
    • istio기반의 traffic shaping을 적용하려면, k8s에서 사용하는 ingres(or service nodeport)를 사용하면 적용이 안되고
      service는 clusterip로 적용하고, istio ingressgateway에서 port를 정의해주어야 함.

Servicemesh : MSA기반의 아키텍텨는 각각 개별기능을 수행하는데, 분산 서비스 배포의 크기와 복잡성이 증가하면서 시스템을 이해하고 관리하기 더 어려워지짐. 클러스터 내부와 외부의 통신 라우팅도 복잡해지기 때문에 이러한 복잡성을 줄기기 위해 프록시를 사용하여 모든 트래픽을 확인 후 사용자가 설정한 구성에 따라 어플리케이션 트래픽을 관리하는 역활.


Istio 설치 절차

  1. 설치


    # Istio기반의 proxy를 설치하기 위해서 namespace에 istio용 envoy 설치
    $ kubectl label namespace default istio-injection=enabled
    namespace/default labeled
  2. istio profile별 제공 기능

    image-1657902098160.png


  3. istio 서비스 상태 확인
  4. Addon 설치
    1. Kiali : Istio 모니터링을 위한 대쉬보드
    2. Jager / zipkin : 분산 시스템 모니터링
      1. zipkin :  Twitter에서 개발한 오픈소스
      2. jaeger: Uber에서 개발하고 CNCF 프로젝트로 진행중인 오픈소스. (k8s환경에서는 jaeger가 효율적이라는...)
  5. addon 설치
  6. 대쉬보드 외부 접속하기
    1. kiali :  http://{{서버IP}}:30007
    2. jaeger:  http://{{서버IP}}:30008
      1.삭제
  7. 시스템 설정을 위한 설정값 안내

    Component list

    항목용도기타
    gatewayhttp / tcp를 연결하기 위해 구성하는 로드밸런서
    virtualserviceservice게이트웨이에 바인딩 후 트래픽을 구성된 여러 엔드포인트로 전달 (트래픽 비율설정)
    virtualserviceversion(a.k.a subset)특정 서비스에 대해 어플리케이션 바이너리의 버전 변경을 실행하는 집합
    virtualservicesource서비스를 호출하는 다운스트림용 클라이언트
    virtualservicehost클라이언트가 서비스 연결할때 사용하는 주소
    destinationRule라우팅 규칙을 처리한 후 연결할 네트워크 서비스를 설정
    tcproutetcp트래픽에 대해 라우팅 규칙을 위한 조건 설정
    tcproutematch활성화할 규칙조건
    tcprouteroute연결할 대상
  8. Example yml
    1. gateway 설정 (tcp/30011에 대해 gateway 설정)
  9. VirtualService 설정 (tcp/30011이 들어오면 service111-1, service111-2의 tcp/8080으로 연결하되  50%씩 트래픽 분할 처리)
  10. destinationrule 설정 (service111에 대해 v1, v2 설정)

reference
https://istio.io/latest/docs/setup/getting-started/

http://igoni.kr/books/linux/page/kubernetes-istio


댓글 없음:

댓글 쓰기

adfit

AI들끼리 대화하기

ChatGPT, perplexity, Gemini... 많은 AI 서비스가 있고 서비스별로 다양한 엔진이 있죠. 문득 AI끼리 대화를 시켜보면 어떤 대화의 흐름을 이어갈까 궁금해졌습니다. 그래서 해보았습니다. 규 칙 나(사람)은 양쪽 AI에서...