Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices - Service Mesh with Istio

64 views

Published on

Prezentacja do webinaru Filipa Koczorowskiego, Technical Architecta z GFT Poland.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Microservices - Service Mesh with Istio

  1. 1. © 2019 | GFT Technologies SE and its affiliates. All rights reserved. Filip Koczorowski, 16.04.2020 Microservices: Service Mesh with Istio
  2. 2. 2 Shaping the future of digital business gft.com Istio 16/04/2020  „Open source service mesh platform that provides a way to control how microservices share data with each other”  Najbardziej rozbudowana implementacja service mesh obecnie (2019/2020)  Wspiera podejście cloud-native  Cloud-native: małe, działające niezależnie i dedykowane jednej funkcji serwisy  Takie samo działanie na chmurach publicznych, prywatnych i hybrydowych  Uniezależnienie od jednej infrastruktury i jednego dostawcy  Rozwijana m.in. przez Google i RedHat Microservices: Service Mesh with Istio
  3. 3. 3 Shaping the future of digital business gft.com Kontenery (Docker) 16/04/2020  Izolacja procesów  Elastyczność  Lepsza wersja VM  De facto standard dla mikroserwisów Microservices: Service Mesh with Istio
  4. 4. 4 Shaping the future of digital business gft.com Instrumentacja (Kubernetes) 16/04/2020  Abstrakcja nazwy usługi od konkretnego jej wdrożenia  Autoskalowanie  Kontrolowane wdrażanie i wycofywanie zmian  Proste rozkładanie ruchu (load balancing) Microservices: Service Mesh with Istio
  5. 5. 5 Shaping the future of digital business gft.com Service Mesh (Istio) 16/04/2020  Zarządzanie komunikacją pomiędzy serwisami  Bezpieczeństwo  Monitorowanie Microservices: Service Mesh with Istio
  6. 6. 6 Shaping the future of digital business gft.com Wywołanie usługi wewnątrz procesu 16/04/2020 Microservices: Service Mesh with Istio new_review = { … } reviews.add(new_review) Wewnątrz procesu (usługi)
  7. 7. 7 Shaping the future of digital business gft.com Wywołanie usługi pomiędzy mikroserwisami 16/04/2020 Microservices: Service Mesh with Istio import requests # specific IP likely stored in configuration reviews_url = 'http://10.0.0.1/review/new' result = requests.post(reviews_url, payload=new_review) Zdalne (naiwne)
  8. 8. 8 Shaping the future of digital business gft.com Wywołanie usługi pomiędzy mikroserwisami 16/04/2020 Microservices: Service Mesh with Istio import requests reviews_instances = ['10.0.0.1', '10.0.0.2'] # loop over known instances reviews_url = 'http://' + instance_ip + '/review/new' result = requests.post(reviews_url, payload=new_review) Zdalne z wieloma instancjami serwisu (naiwne)
  9. 9. 9 Shaping the future of digital business gft.com Wywołanie usługi pomiędzy mikroserwisami 16/04/2020 Microservices: Service Mesh with Istio import consul # reviews resolved by service discovery, here - Consul svc_discovery = consul.Consul() reviews = svc_discovery.info(name='reviews') result = requests.post(reviews["Address"], payload=new_review) Zdalne bazujące na wykrywaniu usług (service discovery)
  10. 10. 10 Shaping the future of digital business gft.com Wywołanie usługi pomiędzy mikroserwisami 16/04/2020 Microservices: Service Mesh with Istio import requests api_gateway = 'http://my-api-gw.example.com' reviews_url = api_gateway + '/review/new' result = requests.post(reviews_url, payload=new_review) Zdalne bazujące na wzorcu API gateway
  11. 11. 11 Shaping the future of digital business gft.com Wywołanie usługi pomiędzy mikroserwisami 16/04/2020 Microservices: Service Mesh with Istio import requests reviews_url = 'http://reviews.example.com/review/new' result = requests.post(reviews_url, payload=new_review) Zdalne bazujące na abstrakcyjnej nazwie serwisu
  12. 12. 12 Shaping the future of digital business gft.com Istio – jak to działa? 16/04/2020  Sidecar proxy w Kubernetes  Dodatkowy kontener w Pod z mikroserwisem  Instalowany automatycznie lub na żądanie  Zmienia reguły ruchu TCP za pomocą iptables Microservices: Service Mesh with Istio
  13. 13. 13 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo spec: hosts: - bookinfo.com http: - match: - uri: prefix: /reviews route: - destination: host: reviews - match: - uri: prefix: /ratings route: - destination: host: ratings
  14. 14. 14 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: end-user: exact: jason route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v3
  15. 15. 15 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: reviews-destination-rule spec: host: reviews.prod.svc.cluster.local trafficPolicy: loadBalancer: simple: LEAST_CONN subsets: - name: v1 labels: version: v1 - name: v2 labels: version: v2 trafficPolicy: loadBalancer: simple: ROUND_ROBIN
  16. 16. 16 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: config.istio.io/v1alpha2 kind: handler metadata: name: quotahandler namespace: istio-system spec: compiledAdapter: memquota params: quotas: - name: requestcountquota.instance.istio-system maxAmount: 500 validDuration: 1s overrides: - dimensions: destination: reviews maxAmount: 1 validDuration: 5s
  17. 17. 17 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - route: - destination: host: ratings subset: v1 weight: 90 - destination: host: ratings subset: v2 weight: 10
  18. 18. 18 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: config.istio.io/v1alpha2 kind: RouteRule metadata: name: reviews-test-v2 spec: destination: name: reviews precedence: 2 match: request: headers: cookie: regex: "^(.*?;)?(group=pilot)(;.*)?$" route: - labels: version: v2
  19. 19. 19 Shaping the future of digital business gft.com Istio – zarządzanie ruchem (traffic management) 16/04/2020  Kierowanie ruchu do konkretnych serwisów (routing)  Przekierowywanie ruchu (traffic shifting)  Złożone rozkładanie ruchu (load balancing)  Ograniczanie ilości żądań (rate limiting)  Testy A / B  Próbne wdrożenia (canary release)  Wzbudzanie awarii (fault injection) Microservices: Service Mesh with Istio apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - fault: delay: fixedDelay: 7s percentage: value: 100 match: - headers: end-user: exact: perftester route: - destination: host: ratings - route: - destination: host: ratings
  20. 20. 20 Shaping the future of digital business gft.com Istio – bezpieczeństwo (security) 16/04/2020  Obustronne uwierzytelnianie certyfikatem (mutual TLS)  Polityki dostępu w stylu list dostępu (Access Control Lists) na poziomie serwisów  Kontrola ruchu wychodzącego (egress)  Niezawodność żądań  Automatyczne powtarzanie z zakończeniem po zadanym czasie (retry with timeout)  Przerywanie żądań do niedostępnej usługi (circuit breaker pattern) Microservices: Service Mesh with Istio
  21. 21. 21 Shaping the future of digital business gft.com Istio – monitorowanie (observability) 16/04/2020  Śledzenie żądania (tracing)  Dostępne jako plugin Microservices: Service Mesh with Istio
  22. 22. 22 Shaping the future of digital business gft.com Istio – monitorowanie (observability) 16/04/2020  Ekran poglądowy (dashboard)  Dostępny jako plugin Microservices: Service Mesh with Istio
  23. 23. 23 Shaping the future of digital business gft.com Istio – monitorowanie (observability) 16/04/2020  Metryki HTTP i GRPC  Ilość żądań  Czas obsługi żądań  Wielkość żądań i odpowiedzi  Metryki TCP  Suma wysłanego ruchu w bajtach  Suma odebranego ruchu w bajtach  Ilość nawiązanych połączeń TCP  Ilość zamkniętych połączeń TCP Microservices: Service Mesh with Istio
  24. 24. 24 Shaping the future of digital business gft.com Istio – kiedy warto 16/04/2020 Microservices: Service Mesh with Istio  Niewielka lub średnia złożoność architektury  Brak bezpośrednich wskazań  Bardzo rozbudowana architektura mikroserwisów  Wymagania odnośnie bezpieczeństwa
  25. 25. 25 Shaping the future of digital business gft.com Jeśli nie Istio to co? 16/04/2020  Inny Service Mesh  Linkerd  Consul Connect  AWS App Mesh  Bez Service Mesh  API Gateway  Kubernetes  DNS + Load Balancer (np. AWS Route53 + AWS ELB Application Load Balancer) Microservices: Service Mesh with Istio
  26. 26. Shaping the future of digital business © 2019 | GFT Technologies SE and its affiliates. All rights reserved. Microservices: Service Mesh with Istio GFT Poland Sp. z o.o. Filip Koczorowski Technical Architect Mielżyńskiego 14 61-725 Poznań filip.koczorowski@gft.com

×