트래픽 관리 istio는 Kubernetes

1. 응용 프로그램 배포 Bookinfo

Istio에서이 응용 프로그램을 실행하려면 응용 프로그램 자체를 변경할 필요가 없습니다. 우리는 단순히 Istio 환경, 각 서비스에 주입 특사 사이드카에있는 특정 지점에서 서비스하고 실행을 구성합니다. 아래 도시하는 바와 같이,이 처리에 필요한 특정 명령 및 구성은보다 일관된 결과를 배포 런타임 환경에 의해 결정된다 :

모든 마이크로 특사 사이드카 및 서비스는, 당신은 제어 플레인 Istio 서비스 라우팅 응용 프로그램을 사용할 수 있습니다, 원하는 외부 제어 후크를 준비 할 수 있도록 모든 트래픽, 사이드카를 납치하는 통합 서비스 액세스를 통합 원격 측정 데이터 수집 및 정책 집행 기능을합니다.

다음으로, 이하의 설명에서 전개 애플리케이션에 따른 동작 환경 Istio, 방법.

  1. 설치 디렉토리에 Istio.
  2. 응용 프로그램 컨테이너를 시작합니다 :

     -f 적용 kubectl $ <(istioctl -f를 샘플 / bookinfo / 플랫폼 / KUBE / bookinfo.yaml을 KUBE은 주입 -)
     

    istioctl KUBE-주입  명령을 배포하기 전에 응용 프로그램을 수정하는 데 사용됩니다 bookinfo.yaml

     $의 kubectl 적용 -f 샘플 / bookinfo / 플랫폼 / KUBE / bookinfo.yaml
     

    위의 명령도 포함 네 가지 서비스가 시작됩니다  reviews 서비스의 세 가지 버전을 ( v1, v2 과  v3)

  3. 침투 게이트웨이의 정의를 적용하려면 :

    $는 -f 샘플을 적용 kubectl / bookinfo / 네트워킹 / bookinfo-gateway.yaml
     
  4. 모든 서비스와 포드 정의하고 시작하는 권리가 있음을 확인합니다 :

    $ 얻을 서비스 kubectl 
    이름 유형 CLUSTER - IP 및 외부에 IP PORT (S) AGE의 
    세부 사항은 ClusterIP    10.254를 . 86.98      <없음>         9080 / TCP의 3H는 
    ClusterIP는 Kubernetes    10.254 . 0.1        <없음>         443 / TCP를 149d는 
    ClusterIP productpage    10.254를 . 199.214    <없음>         9080 / TCP의 3H의 
    등급은 ClusterIP    10.254를 . 102.147   <없음>         9080 / TCP의 3H의 
    리뷰 ClusterIP    10.254를 . 249.86     <없음>         9080 / TCP의 3H
     
    $ 포드 얻을 kubectl 
    READY 상태가 AGE 다시 시작 NAME 
    세부 사항을 -v1-6456dbdb9-crqnw         2 / 2        실행    0           3H 
    productpage 52qhn -v1-6f6887645c-    2 / 2        실행    0           3H 
    평가 -v1-648cf76d8f-g65s5        2 / 2        실행    0           3H 
    리뷰 - v1-7dcbc85bb5-j748n        2 / 2        실행    0           3H 
    리뷰-v2-65fd78f5df-r8n6r        2 / 2        실행    0           3H 
    리뷰를 -v3-95c85969c-zmpfx을         2 / 2        실행    0           3H를
     
  5. 침투는 IP와 포트를 결정

    확인하려면 다음 명령을 실행  ingressgateway NodePort 모드가 활성화되어 있는지 여부를 확인합니다.

    $ kubectl -n istio 시스템 SVC istio- 얻을 ingressgateway의 
    이름 유형 CLUSTER - IP 및 외부에 IP PORT (S) AGE 
    istio -ingressgateway NodePort    10.254 . 160.93    <없음>         80 : 31,380 / TCP, 443 : 31,390 / TCP, 31400 : 31400 / TCP, 15,011 : 25,059 / TCP, 8060 : 36,612 / TCP, 15,030 : 25,049 / TCP, 15,031: 36810 / TCP의 3H

    진입 IP를 확인합니다 :

    $ 수출 INGRESS_HOST = $ (kubectl -n istio 시스템이 얻을 포 -l istio = ingressgateway -o 이동 템플릿 = ' {{범위 .items}} {{. status.hostIP}} {{말}} ' )
     

    포트를 결정합니다 :

    $ 수출 INGRESS_PORT = $ (kubectl -n istio 시스템은 SVC istio-ingressgateway 갈 템플릿을 -o 얻을 = ' {{범위 .spec.ports}} {{경우 EQ .name을 "HTTP"}} {{. nodePort}} {{말}} {{말}} ' )
     
  6. 설정  GATEWAY_URL:

     $ 수출 GATEWAY_URL = $ INGRESS_HOST : $ INGRESS_PORT
     

다음 사용할 수있는  curl 동작 Bookinfo 응용 프로그램을 확인하는 명령을 :

$ -o는 / dev / 컬  -s를 -  " % {HTTP_CODE} \ n " HTTP : // $ {GATEWAY_URL} / productpage 
(200)
 

또한 브라우저에서 URL을 열 수있는  http://$GATEWAY_URL/productpage응용 프로그램에서 웹 페이지를 탐색 할 수 있습니다. 당신이 페이지를 일부 응용 프로그램을 새로 고칠 경우 페이지가 무작위로 표시됩니다 볼  reviews 효과 (표시 레드, 블랙 스타 또는하지 않음) 서비스의 다른 버전. reviews 우리는 경로의 버전을 제어 할 수 Istio을 사용하지 않았기 때문에 서비스 발생합니다.

3. 카나리아 배포


Bookinfo 예부터 마이크로 서비스 리뷰의 세 가지 버전의 배포, 그래서 우리는 기본 경로를 설정해야합니다. 응용 프로그램을 여러 번 액세스하는 경우 그렇지 않으면, 당신은 출력이 성급 호텔로 구성되어, 때로는하지 때로는 것을 알 수 있습니다. 명시 적으로 기본 경로를 지정하지 않는 응용 프로그램, Istio는 요청이 무작위로 서비스의 사용 가능한 모든 버전에 연결됩니다 때문입니다.

이 작업은 당신이 어떤 경로를 설정하지 않은 것으로 가정합니다. 샘플 응용 프로그램에 대한 라우팅 규칙의 충돌을 만든 경우 다음 명령을 사용할 필요가  replace 장소에  create. 참고 :이 문서는 당신이 어떤 라우팅 규칙을 설정하지 않은 것으로 가정합니다.

모든 마이크로 기본 라우팅 서비스의 첫 번째는 v1로 설정됩니다.

$ istioctl -f 샘플 / bookinfo / 네트워킹 / 가상 서비스 모든 v1.yaml를 만들
$ istioctl -f 샘플 / bookinfo / 네트워킹 / 대상 - 규칙 all.yaml을 만들

당신은 라우팅 규칙이 다음 명령에 의해 생성 된 표시 할 수 있습니다 :

추천

출처www.cnblogs.com/linyouyi/p/11152718.html