Imscaradh Chanáracha i Kubernetes #3: Istio

Ag baint úsáide as Istio+Kiali chun imscaradh Chanáracha a sheoladh agus a shamhlú

Imscaradh Chanáracha i Kubernetes #3: Istio

Ailt sa tsraith seo

  1. Imscaradh Chanáracha in Kubernetes #1: Gitlab CI
  2. Imscaradh Chanáracha i Kubernetes #2: Rolladh Amach Argo
  3. (An t-alt seo)
  4. Imscaradh Chanáracha ag baint úsáide as Jenkins-X Istio Flagger

Imscaradh Chanáracha

Tá súil againn go léann tú an chéad chuid, áit ar mhínigh muid go hachomair cad is imscaradh Chanáracha ann agus léirigh muid conas iad a chur i bhfeidhm ag baint úsáide as acmhainní caighdeánacha Kubernetes.

Istio

Agus glacaimid leis, tríd an alt seo a léamh go bhfuil a fhios agat cheana féin cad is Istio ann. Mura bhfuil, is féidir leat léamh faoi anseo.

Iarratas le haghaidh tástálacha

Imscaradh Chanáracha i Kubernetes #3: Istio

Tá dhá choimeádán i ngach pod: ár bhfeidhmchlár agus istio-seachfhreastalaí.

Úsáidfimid feidhmchlár tástála simplí le pods python frontend-nginx agus backend. Ní dhéanfaidh an pod nginx ach gach iarratas a atreorú chuig an pod inneall agus oibreoidh sé mar sheachvótálaí. Is féidir sonraí a fháil sna yamls seo a leanas:

An t-iarratas tástála a rith tú féin

Más mian leat mo shampla a leanúint agus an feidhmchlár tástála seo a úsáid tú féin, féach readme tionscadail.

Imlonnú Tosaigh

Nuair a sheolaimid an chéad Imscaradh, feicimid nach bhfuil ach 2 choimeádán sna pods dár bhfeidhmchlár, is é sin, tá taobhcharr Istio díreach á chur i bhfeidhm:

Imscaradh Chanáracha i Kubernetes #3: Istio

Agus feicimid freisin Istio Gateway Loadbalancer san ainmspás istio-system:

Imscaradh Chanáracha i Kubernetes #3: Istio

Giniúint tráchta

Bainfimid úsáid as an IP seo a leanas chun trácht a gheobhaidh na pods tosaigh agus a chuirfear ar aghaidh chuig na pods backend a ghiniúint:

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

Cuirfimid freisin frontend.istio-test chuig ár gcomhad ina hóstach.

Féach ar Mogall trí Kiali

Shuiteálamar an feidhmchlár tástála agus Istio mar aon le Tracing, Grafana, Prometheus agus Kiali (féach thíos le haghaidh sonraí). readme tionscadail). Mar sin is féidir linn Kiali a úsáid trí:

istioctl dashboard kiali # admin:admin

Imscaradh Chanáracha i Kubernetes #3: Istio

Amharcann Kiali an trácht reatha trí mhogalra

Mar a fheicimid, téann 100% den trácht chuig an tseirbhís aghaidh, ansin chuig na pods tosaigh le lipéad v1, ós rud é go bhfuil muid ag baint úsáide as seachfhreastalaí nginx simplí a atreoraíonn iarratais chuig an tseirbhís inneall, rud a atreoraíonn iad chuig na pods inneall. le lipéad v1.

Oibríonn Kiali go han-mhaith le Istio agus soláthraíonn sé réiteach rindreála mogalra i mboscaí. Díreach go hiontach.

Imscaradh Chanáracha

Tá dhá imscaradh k8s ag ár n-inneal cheana féin, ceann do v1 agus ceann do v2. Anois níl le déanamh againn ach a rá le Istio céatadán áirithe iarratas a chur ar aghaidh chuig v2.

Céim 1: 10%

Agus níl le déanamh againn ach meáchan na Seirbhíse Fíorúla a choigeartú i aiste.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

Imscaradh Chanáracha i Kubernetes #3: Istio

Feicimid go ndéantar 10% d’iarratais a atreorú chuig v2.

Céim 2: 50%

Agus anois is leor é a mhéadú go 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

Imscaradh Chanáracha i Kubernetes #3: Istio

Céim 3: 100%

Anois is féidir an t-imscaradh Canárach a bheith críochnaithe agus atreoraítear an trácht go léir chuig v2:

Imscaradh Chanáracha i Kubernetes #3: Istio

Canáraí a thástáil de láimh

Ligean le rá go gcuirimid 2% de na hiarratais go léir chuig inneall v10 anois. Cad a tharlóidh má theastaíonn uainn v2 a thástáil de láimh chun a chinntiú go n-oibríonn gach rud mar a mbeimid ag súil leis?

Is féidir linn riail meaitseála speisialta a chur leis bunaithe ar cheanntásca 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

Ag baint úsáide as curl anois is féidir linn iarratas v2 a bhrú tríd an gceanntásc a sheoladh:

Imscaradh Chanáracha i Kubernetes #3: Istio

Beidh iarratais gan ceanntásc fós á dtiomáint ag an gcóimheas 1/10:

Imscaradh Chanáracha i Kubernetes #3: Istio

Chanáracha ar feadh dhá leagan spleách

Anois déanfaimid machnamh ar an rogha ina bhfuil leagan v2 againn don aghaidh agus don inneall araon. I gcás an dá cheann, shonraigh muid gur cheart go rachadh 10% den trácht chuig v2:

Imscaradh Chanáracha i Kubernetes #3: Istio

Feicimid an t-éadanas v1 agus v2 an dá thrácht chun tosaigh ag cóimheas 1/10 le hinnill v1 agus v2.

Cad a tharlóidh dá mba ghá dúinn trácht a chur ar aghaidh ó frontend-v2 amháin go dtí backend-v2 toisc nach bhfuil sé ag luí le v1? Chun seo a dhéanamh, socróimid cóimheas 1/10 don aghaidh, a rialaíonn an méid tráchta a théann chuig an inneall-v2 trí úsáid a bhaint as idirbheartaíocht 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

Mar thoradh air sin, faigheann muid an méid a theastaíonn uainn:

Imscaradh Chanáracha i Kubernetes #3: Istio

Difríochtaí ón gcur chuige láimhe Chanáracha

В an chéad chuid Rinneamar imscaradh Chanárach de láimh, ag baint úsáide as dhá imscaradh k8s freisin. Rinneamar rialú ar chóimheas na n-iarratas trí líon na macasamhla a athrú. Oibríonn an cur chuige seo, ach tá míbhuntáistí tromchúiseacha ann.

Is féidir le Istio cóimheas na n-iarratas a chinneadh beag beann ar líon na macasamhla. Ciallaíonn sé seo, mar shampla, gur féidir linn HPAs (Uathscálú Pod Cothrománach) a úsáid agus nach gá iad a chumrú de réir staid reatha imscaradh na Canárach.

Iomlán na

Oibríonn Istio go hiontach agus má úsáidtear é in éineacht le Kiali is meascán an-chumhachtach é. Is é an chéad cheann eile ar mo liosta spéise ná Spinnaker a chomhcheangal le Istio le haghaidh uathoibrithe agus anailísíochta Chanáracha.

Foinse: will.com

Add a comment