instruere in Kubernetes #3: Istio

Usura Istio+ Kiali mittere et visualise Canariae instruere

instruere in Kubernetes #3: Istio

Articuli in hac serie

  1. instruere in Kubernetes #1: Gitlab CI
  2. Instruere in Kubernetes #2: Argo Rollouts
  3. (Hoc Commentarium)
  4. Canaria instruere usura Jenkins-X Istio Flagger

Canaria instruere

Speramus te legere prima pars, ubi breviter explicavimus quaenam sint instituti Canariae et demonstravimus quomodo ad eas utentes facultates vexillum Kubernetes efficiamus.

Istio

Et assumimus iam nostis quid Istio sit legendo hunc articulum. Si non, tunc legere potes hic.

Applicationem pro probat

instruere in Kubernetes #3: Istio

Quodlibet vasculum duo vasa continet: nostrum applicationis et istio-procuratorem.

Simplex probationis applicatione utemur ad frontend-nginx et siliquas pythones retrahendas. Vasculum nginx simpliciter singulas petitiones ad tergum vasculum et operandum ut procuratorem redigat. Singula reperiuntur in yamls sequentibus:

Currentem in test application te

Si vis meum exemplum sequi et utere te ipso experimento, vide project readme.

Coepi instruere

Cum primum instruere deducimus, perspicimus siliquas applicationis nostrae tantum 2 continentia habere, id est Istio sidecar modo impleri;

instruere in Kubernetes #3: Istio

Et etiam videmus Istio Portam Loadbalancer in spatio nominali istio-system:

instruere in Kubernetes #3: Istio

Negotiatio generation

Hoc IP sequenti utemur ad mercaturam generandam, quae a fronte siliquis recipietur et ad siliquas posteriores transmittuntur;

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

Addimus etiam frontend.istio-test to file virtutib.

Visum Mesh per Kiali

Experimentum applicationis instituimus et Istio una cum Tracing, Grafana, Prometheo et Kiali (vide infra ad singula). project readme). Ergo uti potest Kiali via:

istioctl dashboard kiali # admin:admin

instruere in Kubernetes #3: Istio

Kiali visualizes current negotiationis per Mesh

Ut videre possumus, 100% negotiationis ad officium anteriorem pergit, deinde ad anteriorem siliquam cum pittacio v1, quia simplici nginx procuratorio utimur qui petitiones redirectiones ad servitium backendum, quod vicissim eas ad siliquas siliquas redigit. with label v1.

Kiali magna cum Istio laborat et solutionem Mesh cohibenti praebet. Modo magnus.

Canaria instruere

Noster backend iam duos k8s instruere habet, unum pro v1 et unum pro v2. Nunc tantum opus est Istio nuntiare ut quaedam recipis petitiones ad v2.

Gradus I: X%

Et omne quod opus est facere pondus VirtualService accommodare in 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

instruere in Kubernetes #3: Istio

Videmus X% petitionum ad v10.

Gradus I: X%

Nunc satis est eam augere ad 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

instruere in Kubernetes #3: Istio

Gradus I: X%

Nunc instruere Canaria completa considerari possunt et omnia negotiatio ad v2 directa est;

instruere in Kubernetes #3: Istio

Testis Canarias manually

Nunc dicamus nos mittere 2% omnium petitionum ad v10 backend. Quid si manually velimus experiri v2, ut omnia opera confirmes sicut expectamus?

Addere possumus regulam specialem matching capitis secundum HTTP capitis:

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

Nunc utens Crispum petitionem v2 compellere possumus, mittendo caput:

instruere in Kubernetes #3: Istio

Petitiones sine titulo adhuc a ratione 1/10 agi possunt;

instruere in Kubernetes #3: Istio

Canarias duas versiones dependens

Nunc optio considerabimus ubi versionem v2 habemus ad utrumque frontem et ad tergum. Pro utroque, decernimus ut 10% negocii ad v2 eundum sit;

instruere in Kubernetes #3: Istio

Videmus anteriorem v1 et v2 utrumque deinceps commercium in ratione 1/10 ad v1 et v2.

Quid, si opus fuerit mercatura a frontend-v2, solum ad backend-v2, quia cum v1 non compatitur? Ad hoc, rationem anterioris 1/10 ponemus, quae moderatur quod negotiatio ad tractatum utens ad backend-v2 acquirit. 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

Quam ob rem id quod nobis opus est obtinemus;

instruere in Kubernetes #3: Istio

Differentiae a accessu manuali Canariae

Π’ in prima parte, Nos manually instruere Canarias praestiti, etiam duobus k8s inceptis utendo. Ibi rationem postulationum mutando numerum replicationum temperavimus. Accessus opera, sed vitia gravia habet.

Istio efficit ut ratio petitionum cuiuscumque numeri replicas diiudicare possit. Hoc significat, exempli gratia, quod uti HPAs (Horizontal Pod Autoscalers) possumus nec egere configurari secundum hodiernum statum instruere Canariae.

exitum

Istio magna operatur et utens eo cum Kiali facit compositionem valde potentem. Next on my list of interests is combining Spinnaker with Istio for automation and Canary analytics.

Source: www.habr.com