рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд▓реЙрдиреНрдЪ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддрд┐рдпреЛ+рдХрд┐рдЖрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдЗрд╕ рд╢реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЗрдЦ

  1. рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #1 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЧрд┐рдЯрд▓реИрдм рд╕реАрдЖрдИ
  2. рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #2 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕
  3. (рдпрд╣ рд▓реЗрдЦ)
  4. рдЬреЗрдирдХрд┐рдВрд╕-рдПрдХреНрд╕ рдЗрд╕реНрддрд┐рдпреЛ рдлрд╝реНрд▓реИрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рд╣рдореЗрдВ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрдврд╝реЗрдВрдЧреЗ рдкрд╣рд▓рд╛ рднрд╛рдЧ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдорд╛рдирдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

Istio

рдФрд░ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдХрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реНрддрд┐рдпреЛ рдХреНрдпрд╛ рд╣реИред рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ.

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдореЗрдВ рджреЛ рдХрдВрдЯреЗрдирд░ рд╣реЛрддреЗ рд╣реИрдВ: рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЗрд╕реНрддрд┐рдпреЛ-рдкреНрд░реЙрдХреНрд╕реАред

рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб-рдПрдирдЬреАрдПрдирдПрдХреНрд╕ рдФрд░ рдмреИрдХрдПрдВрдб рдкрд╛рдпрдерди рдкреЙрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдкреЙрдб рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдмреИрдХрдПрдВрдб рдкреЙрдб рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд┐рд╡рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд yamls рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рдЪрд▓рд╛рдПрдБ

рдпрджрд┐ рдЖрдк рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреЗрдЦреЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реАрдбрдореА.

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдирд╛рддреА

рдЬрдм рд╣рдо рдкрд╣рд▓рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреЙрдбреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ 2 рдХрдВрдЯреЗрдирд░ рд╣реИрдВ, рдпрд╛рдиреА, рдЗрд╕реНрддрд┐рдпреЛ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХреЛ рдЕрднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдФрд░ рд╣рдо рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЗрд╕реНрддрд┐рдпреЛ рдЧреЗрдЯрд╡реЗ рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ istio-system:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдпрд╛рддрд╛рдпрд╛рдд рд╕реГрдЬрди

рд╣рдо рдЯреНрд░реИрдлрд╝рд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдИрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдлреНрд░рдВрдЯрдПрдВрдб рдкреЙрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдмреИрдХрдПрдВрдб рдкреЙрдбреНрд╕ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done

рд╣рдо рднреА рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ frontend.istio-test рд╣рдорд╛рд░реА рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВред

рдХрд┐рдЖрд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд╖ рджреЗрдЦреЗрдВ

рд╣рдордиреЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ, рдЧреНрд░рд╛рдлрд╛рдирд╛, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдФрд░ рдХрд┐рдЖрд▓реА рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЗрд╕реНрддрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реАрдбрдореА). рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд┐рдЖрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

istioctl dashboard kiali # admin:admin

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдХрд┐рдЖрд▓реА рдореЗрд╖ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрддрдорд╛рди рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 100% рдЯреНрд░реИрдлрд╝рд┐рдХ рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗрд╡рд╛ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд▓реЗрдмрд▓ v1 рдХреЗ рд╕рд╛рде рдлреНрд░рдВрдЯрдПрдВрдб рдкреЙрдбреНрд╕ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг nginx рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдмреИрдХрдПрдВрдб рд╕реЗрд╡рд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмреИрдХрдПрдВрдб рдкреЙрдбреНрд╕ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдмрд▓ v1 рдХреЗ рд╕рд╛рде.

рдХрд┐рдЖрд▓реА рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмреЙрдХреНрд╕реНрдб рдореЗрд╢ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд░реНрдл рдорд╣рд╛рдиред

рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ k8s рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╣реИрдВ, рдПрдХ v1 рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ v2 рдХреЗ рд▓рд┐рдПред рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдЗрд╕реНрддрд┐рдпреЛ рдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рддрд┐рд╢рдд v2 рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ред

рдЪрд░рдг 1: 10%

рдФрд░ рд╣рдореЗрдВ рдмрд╕ рд╡рд░реНрдЪреБрдЕрд▓рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд╡рдЬрди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ istio.yaml:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend
  namespace: default
spec:
  gateways: []
  hosts:
  - "backend.default.svc.cluster.local"
  http:
  - match:
    - {}
    route:
    - destination:
        host: backend.default.svc.cluster.local
        subset: v1
        port:
          number: 80
      weight: 90
    - destination:
        host: backend.default.svc.cluster.local
        subset: v2
        port:
          number: 80
      weight: 10

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ 10% рдЕрдиреБрд░реЛрдз v2 рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдЪрд░рдг 2: 50%

рдФрд░ рдЕрдм рдЗрд╕реЗ 50% рддрдХ рдмрдврд╝рд╛рдирд╛ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend
  namespace: default
spec:
...
    - destination:
        host: backend.default.svc.cluster.local
        subset: v1
        port:
          number: 80
      weight: 50
    - destination:
        host: backend.default.svc.cluster.local
        subset: v2
        port:
          number: 80
      weight: 50

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдЪрд░рдг 3: 100%

рдЕрдм рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ v2 рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдХреИрдирд░реА рдХрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЕрдм рд╣рдо рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ 2% v10 рдмреИрдХрдПрдВрдб рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ v2 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рд╣рдо HTTP рд╣реЗрдбрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд┐рд▓рд╛рди рдирд┐рдпрдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend
  namespace: default
spec:
  gateways: []
  hosts:
  - "backend.default.svc.cluster.local"
  http:
  - match:
    - headers:
        canary:
          exact: "canary-tester"
    route:
    - destination:
        host: backend.default.svc.cluster.local
        subset: v2
        port:
          number: 80
      weight: 100
  - match:
    - {}
    route:
    - destination:
        host: backend.default.svc.cluster.local
        subset: v1
        port:
          number: 80
      weight: 90
    - destination:
        host: backend.default.svc.cluster.local
        subset: v2
        port:
          number: 80
      weight: 10

рдЕрдм рдХрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рд╣реЗрдбрд░ рднреЗрдЬрдХрд░ рдПрдХ v2 рдЕрдиреБрд░реЛрдз рдХреЛ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рд╣реЗрдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдз рдЕрднреА рднреА 1/10 рдЕрдиреБрдкрд╛рдд рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдВрдЧреЗ:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рджреЛ рдЖрд╢реНрд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрдирд░реА

рдЕрдм рд╣рдо рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдмреИрдХрдПрдВрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг v2 рд╣реИред рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдХрд┐ 10% рдЯреНрд░реИрдлрд╝рд┐рдХ v2 рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлреНрд░рдВрдЯрдПрдВрдб v1 рдФрд░ v2 рджреЛрдиреЛрдВ рдлреЙрд░рд╡рд░реНрдб рдЯреНрд░реИрдлрд┐рдХ 1/10 рдФрд░ рдмреИрдХрдПрдВрдб v1 рдФрд░ v2 рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╣реИрдВред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдореЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдлреНрд░рдВрдЯрдПрдВрдб-рд╡реА2 рд╕реЗ рдХреЗрд╡рд▓ рдмреИрдХрдПрдВрдб-рд╡реА2 рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реА1 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП 1/10 рдЕрдиреБрдкрд╛рдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рддрдЪреАрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрдХрдПрдВрдб-рд╡реА2 рдкрд░ рдХрд┐рддрдирд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЖрддрд╛ рд╣реИред sourceLabels :

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: backend
  namespace: default
spec:
  gateways: []
  hosts:
  - "backend.default.svc.cluster.local"
  http:
...
  - match:
    - sourceLabels:
        app: frontend
        version: v2
    route:
    - destination:
        host: backend.default.svc.cluster.local
        subset: v2
        port:
          number: 80
      weight: 100

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рд╡рд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ #3 рдореЗрдВ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди: рдЗрд╕реНрддрд┐рдпреЛ

рдореИрдиреБрдЕрд▓ рдХреИрдирд░реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдВрддрд░

╨Т рдкрд╣рд▓реЗ рднрд╛рдЧ рд╣рдордиреЗ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рджреЛ k8s рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╡рд╣рд╛рдВ рд╣рдордиреЗ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрджрд▓рдХрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред

рдЗрд╕реНрддрд┐рдпреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ рд╣рдо рдПрдЪрдкреАрдП (рдХреНрд╖реИрддрд┐рдЬ рдкреЙрдб рдСрдЯреЛрд╕реНрдХреЗрд▓рд░реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреИрдирд░реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдВрдкреВрд░реНрдг

рдЗрд╕реНрддрд┐рдпреЛ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рдЖрд▓реА рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдВрдпреЛрдЬрди рдмрдирддрд╛ рд╣реИред рдореЗрд░реА рд░реБрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓рд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдФрд░ рдХреИрдирд░реА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд┐рдирдВрдХрд░ рдХреЛ рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реИред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ